{"_id":"safefs","_rev":"141-7f972dd6ecacb344460cbe246fcdec69","name":"safefs","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","dist-tags":{"latest":"8.10.0","next":"8.10.0-next.1704169742.613c6d0e59a478223a12aebafd1863c414026a48"},"versions":{"2.0.0":{"name":"safefs","version":"2.0.0","description":"Say goodbye to EMFILE errors! Open only as many files as the operating system supports","homepage":"https://github.com/bevry/safefs","keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"devDependencies":{"taskgroup":"~2.0.0","coffee-script":"~1.6.2","joe":"~1.1.2","chai":"~1.5.0"},"directories":{"lib":"./out/lib"},"scripts":{"test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@2.0.0","dist":{"shasum":"dd048ba1063582fb042f90821f8f8c14a6abd5d5","tarball":"https://registry.npmjs.org/safefs/-/safefs-2.0.0.tgz","integrity":"sha512-HOKXNOxjX26a2jsmYR0MZTi568AunT40KyBDV1s8m9OzWqZqgrafxoF6LShp+2g1D5qgoxs5pdCDLlIxJwlHPQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNJJPayQ0EKH9caGqnD5weDzoeDdOROej7djXolL9pYAIhAKZY1WE4uRHRHz1GGz8V8QQkpdIt266FFnwDfpGEsj5D"}]},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"2.0.1":{"name":"safefs","version":"2.0.1","description":"Say goodbye to EMFILE errors! Open only as many files as the operating system supports","homepage":"https://github.com/bevry/safefs","keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"devDependencies":{"taskgroup":"~2.0.0","coffee-script":"~1.6.2","joe":"~1.1.2","chai":"~1.5.0"},"directories":{"lib":"./out/lib"},"scripts":{"test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@2.0.1","dist":{"shasum":"1dd2194ec0c85aa5926dea2004052c0de5bb4dca","tarball":"https://registry.npmjs.org/safefs/-/safefs-2.0.1.tgz","integrity":"sha512-t4sg2XG8jCvI0xwAYRuujMYgRRWaVQTqm4DxAw1iYGzEdrJB37Fg1WEna9p/SFtnjtLMzL8gshn9FIVq5mWKGA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID5G/8UxXxCDrAkC64lPehLvfKJZ5QQAA3iDqJBu0SYWAiBcJVwGXMV3HdNnsJfg1bV+UWItcedLBiHqdwe7HCnqWQ=="}]},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"2.0.2":{"name":"safefs","version":"2.0.2","description":"Say goodbye to EMFILE errors! Open only as many files as the operating system supports","homepage":"https://github.com/bevry/safefs","keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"devDependencies":{"taskgroup":"~2.0.0","coffee-script":"~1.6.2","joe":"~1.1.2","chai":"~1.5.0"},"directories":{"lib":"./out/lib"},"scripts":{"test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@2.0.2","dist":{"shasum":"b1ad559e3418301728397ea1c8502e7cbe3eabff","tarball":"https://registry.npmjs.org/safefs/-/safefs-2.0.2.tgz","integrity":"sha512-W2WcJTkH/WcfYBs6lTIrR/AFxs7uvl/ou6f+peZc+mEOPUNP9yXez2yXDjj78NtjvIlN36T7wTNe7YUwQukR+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBOh8HEbwLsKrxA1oc3cMDq9onZ+4XibeQ657mIL73BWAiEAkhIAmtFiQcVGwrzHZiz/OK/6EWHmUHgFhV9pCsj4IaQ="}]},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"2.0.3":{"name":"safefs","version":"2.0.3","description":"Say goodbye to EMFILE errors! Open only as many files as the operating system supports","homepage":"https://github.com/bevry/safefs","keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"devDependencies":{"taskgroup":"~2.0.0","coffee-script":"~1.6.2","joe":"~1.1.2","chai":"~1.5.0"},"directories":{"lib":"./out/lib"},"scripts":{"test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@2.0.3","dist":{"shasum":"2db2b2de4c4161d6dba6609fee05ecab062c4de5","tarball":"https://registry.npmjs.org/safefs/-/safefs-2.0.3.tgz","integrity":"sha512-8OTBjnIQYCuGE7A+MzbQjQEeVrjT8p8HAgX7vi53xX6hhCAjiz8eQKWCzFYdlRZ6FozUw143xjvTFqBE/4QptQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDV+x4pMYZn3OqCpvbLbwMlF1LIit0iIylUw+LaP8DYSQIgMdF7FYz+JNSSAVW2yTMJ9tzGlhNQsk1HtfzLRK/CHPY="}]},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"3.0.0":{"name":"safefs","version":"3.0.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"taskgroup":"~3.0.0"},"devDependencies":{"coffee-script":"~1.6.2","joe":"~1.1.2","chai":"~1.5.0"},"directories":{"lib":"./out/lib"},"scripts":{"test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@3.0.0","dist":{"shasum":"72039297b88dd18da72e90ee8b08885493293cc9","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.0.0.tgz","integrity":"sha512-97H0U7XcYjR+tuU0MPW+V6rzuINEKqyX/v7XwOofdx6hJuijUvR1MLc+nOLhQRznoQjOjYcrUYlYOosPjd10Ag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClNpE5sztxUwvQ1GxU76gAaC7qA0XOIYZNJNRYzTGrrQIhAOM/oK4b+WDM0SMrYy4BFiGTk731tHLAtGSPKxDJaEHK"}]},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"3.0.1":{"name":"safefs","version":"3.0.1","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"taskgroup":">=3 <3.2"},"devDependencies":{"coffee-script":"~1.6.2","joe":"~1.2.0","joe-reporter-console":"~1.2.1","chai":"~1.5.0"},"directories":{"lib":"./out/lib"},"scripts":{"test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@3.0.1","dist":{"shasum":"a4fd36bcd4805782f0d702e97b47323eafc94cb8","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.0.1.tgz","integrity":"sha512-kf6RYV6Hi0wehlKYQwfvcuSXrPs6H3x8nIjnefmStgZ1tTGxmTgdUI0upoM0G9+kkhpcZN/M4dGaf0VcP/2pqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDPH6rfJFUJFkxx5kqzd3lazVzb7k7H5WpCI5Kl2mfbCAiA9itCz6LBVj5QDN3pvGFzckM07w+s/9yco5qlK/L0BUw=="}]},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"3.0.2":{"name":"safefs","version":"3.0.2","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"taskgroup":"~3.2.0"},"devDependencies":{"coffee-script":"~1.6.2","joe":"~1.3.0","joe-reporter-console":"~1.2.1","chai":"~1.7.2"},"directories":{"lib":"./out/lib"},"scripts":{"test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@3.0.2","dist":{"shasum":"0d41c873d188a3a8afae6d5c2c8f75d2da061565","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.0.2.tgz","integrity":"sha512-dbYCQqMUnhxXpDi7IB4LEUbrzAIuqIGdygSvjoFcRMhksWKMVX3gbkbbuF6JD9U/yziU0IIqvVMz8lVqvOfD9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiUUyMh2hh4ZTfArWk3Ulyjld2X+ts1QKS9Mqr9ywqDQIgfXMInp8wu2FlQ2KZl3ScXztD+doBREClAoboQUvn/jQ="}]},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"3.0.3":{"name":"safefs","version":"3.0.3","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"taskgroup":"~3.2.0"},"devDependencies":{"coffee-script":"~1.6.2","joe":"~1.3.0","joe-reporter-console":"~1.2.1","chai":"~1.7.2"},"directories":{"lib":"./out/lib"},"scripts":{"test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@3.0.3","dist":{"shasum":"1d511e2945f0e7eccdd6bb12ec2e309abf13514e","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.0.3.tgz","integrity":"sha512-7TcW9a92GdRXhtJ7elLBHF5DAZxbYKPkOVmzIM43pYMg+MNFdyuQ4KxWtp3g7lSpfXVPa4uXRG3Tt8f6yGZ8Lg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBaJHJ6zQXHyC1zqJZ+k7jkyR3vzxX0wHPwiAaE3fD55AiBGP26YSpc9sQoKVsQ+6uR0oMXedoTuKoanLTBFocpAEw=="}]},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"3.0.4":{"title":"Safe FS","name":"safefs","version":"3.0.4","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":{"type":"MIT"},"badges":{"travis":true,"npm":true,"gittip":"bevry","flattr":"344188/balupton-on-Flattr","paypal":"QB8GQPZAH84N6"},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"jagill","url":"https://github.com/jagill"},{"name":"sfrdmn","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"taskgroup":"~3.3.1"},"devDependencies":{"coffee-script":"~1.6.2","joe":"~1.3.0","joe-reporter-console":"~1.2.1","chai":"~1.8.1","projectz":"~0.2.5"},"directories":{"lib":"./out/lib"},"scripts":{"preinstall":"node ./cyclic.js","test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@3.0.4","dist":{"shasum":"7420101137e620d96a84dc9c6ce92bc2658e7d71","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.0.4.tgz","integrity":"sha512-Y/TQlsj9UrgJP5qmnE4HJ9KzSAi+4oMGFm9rwm0ZW5+WJf529Qc8/wM//sDbiRILvW36xFkiXsaSMWqkEYqChw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCP+cg15KgkfjxE8RQTp3aqnHFzSDUF0sR/3cpaaAIEFwIhAPtLoFNHuWipTIg7bPkNSTFXpVPyW7Ub/XFui74RTlvA"}]},"_from":".","_npmVersion":"1.3.13","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"3.0.5":{"title":"Safe FS","name":"safefs","version":"3.0.5","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":{"type":"MIT"},"badges":{"travis":true,"npm":true,"gittip":"bevry","flattr":"344188/balupton-on-Flattr","paypal":"QB8GQPZAH84N6"},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"jagill","url":"https://github.com/jagill"},{"name":"sfrdmn","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"taskgroup":"~3.3.1","graceful-fs":"~2.0.1"},"devDependencies":{"coffee-script":"~1.6.2","joe":"~1.3.2","joe-reporter-console":"~1.2.1","chai":"~1.8.1","projectz":"~0.2.6"},"directories":{"lib":"./out/lib"},"scripts":{"preinstall":"node ./cyclic.js","test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@3.0.5","dist":{"shasum":"ab3cb33c101b3db8969235559dccf91c9dfe385d","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.0.5.tgz","integrity":"sha512-FJ8k8QgSbCiMDoqmo08ge3vQ4PXvkPen8sFx/Qu1EC8k1BzgtCgtgn0a6a0/rSOe0XaQKqfuTMHFal4gK3tuiw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+RHfoPDZSZECqUG9NnPNud2R+minMZngo3cWj82wXfAIgUZS+CzKEl7slcwoK7zxsgv+EhGr7k6zQVAbdnTCc+3A="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"3.0.6":{"title":"Safe FS","name":"safefs","version":"3.0.6","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":{"type":"MIT"},"badges":{"travis":true,"npm":true,"gittip":"bevry","flattr":"344188/balupton-on-Flattr","paypal":"QB8GQPZAH84N6"},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"jagill","url":"https://github.com/jagill"},{"name":"sfrdmn","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"taskgroup":"~3.3.1","graceful-fs":"~2.0.1"},"devDependencies":{"coffee-script":"~1.6.2","joe":"~1.3.2","joe-reporter-console":"~1.2.1","chai":"~1.8.1","projectz":"~0.2.6"},"directories":{"lib":"./out/lib"},"scripts":{"preinstall":"node ./cyclic.js","test":"node ./out/test/safefs-test.js"},"main":"./out/lib/safefs.js","_id":"safefs@3.0.6","dist":{"shasum":"781f0b1895276b636e762aa142c8046e6e034f6f","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.0.6.tgz","integrity":"sha512-FinR3AIQeHgfVQqpImKFYUhh16pVhPs1Vn1hC/xJoVc7HhQ1Q0VbzshZKcQTtwlqKZF/1Z6m587oSHowoUQzoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsTPXVV//9o7I8M8rwWf6VTfuTgitLQKgz/+3W+cz4HQIgPoIMG1YBIDBYxDKvE+fd1VnL4d3v3iC838rXGfHddzE="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"3.1.1":{"title":"Safe FS","name":"safefs","version":"3.1.1","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":{"type":"MIT"},"badges":{"travis":true,"npm":true,"david":true,"daviddev":true,"gittip":"bevry","flattr":"344188/balupton-on-Flattr","paypal":"QB8GQPZAH84N6","bitcoin":"https://coinbase.com/checkouts/9ef59f5479eec1d97d63382c9ebcb93a"},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"jagill","url":"https://github.com/jagill"},{"name":"sfrdmn","url":"https://github.com/sfrdmn"},{"name":"shama","url":"https://github.com/shama"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"graceful-fs":"~2.0.1"},"devDependencies":{"coffee-script":"~1.7.1","projectz":"~0.3.9"},"directories":{"lib":"./out/lib"},"scripts":{"preinstall":"node ./cyclic.js","test":"echo 'no tests yet'"},"main":"./out/lib/safefs.js","_id":"safefs@3.1.1","dist":{"shasum":"c700df59bf643b10fed08cc483123ff41a9b1cfa","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.1.1.tgz","integrity":"sha512-urCUIAbB0CI8VKF8jtzYouXzU5HH7WtKf8oD0IlI6+Ql/WzQ8DCoM2agIrTq5YbEzBKBI3kxGWW+qNKaST/B3A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5CaPRtxwyN+OWXLpgUYvuQ/A7m01j4UCGDyMCSaOgjAIgIlan9M7760+LN06G3YZj85F34H4KYxGRL+ZXCaq/XL0="}]},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"balupton","email":"b@lupton.cc"}},"3.1.2":{"title":"Safe FS","name":"safefs","version":"3.1.2","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":{"type":"MIT"},"badges":{"travis":true,"npm":true,"npmdownloads":true,"david":true,"daviddev":true,"gittip":"bevry","flattr":"344188/balupton-on-Flattr","paypal":"QB8GQPZAH84N6","bitcoin":"https://coinbase.com/checkouts/9ef59f5479eec1d97d63382c9ebcb93a","wishlist":"http://amzn.com/w/2F8TXKSNAFG4V"},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"jagill","url":"https://github.com/jagill"},{"name":"sfrdmn","url":"https://github.com/sfrdmn"},{"name":"shama","url":"https://github.com/shama"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"graceful-fs":"~3.0.5"},"devDependencies":{"coffee-script":"~1.8.0","projectz":"~0.3.17"},"directories":{"lib":"./out/lib"},"scripts":{"preinstall":"node ./cyclic.js","test":"echo 'no tests yet'"},"main":"./out/lib/safefs.js","cakeConfiguration":{"COFFEE_SRC_PATH":"src"},"gitHead":"4c6c946767b0192da9caa31d9bec1b33c7c0e228","_id":"safefs@3.1.2","_shasum":"b8a97eadd94786c25d93f6bd8fd89d89b77c7eac","_from":".","_npmVersion":"2.1.11","_nodeVersion":"0.10.33","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"dist":{"shasum":"b8a97eadd94786c25d93f6bd8fd89d89b77c7eac","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.1.2.tgz","integrity":"sha512-LoROOm62r2vDYL3UHGc3mjCBJH5rmhezHp0JBys9X/UY7zNbg3u4a+Bm6QnAlYBOjo7DZqEaTjPx8Nt14yKi7g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGFUo3vf773We7GrVNC0uh+Cu6Bdm9xkdUx/hv8Ff4neAiBz4ivT8PD6FjLixqk9jvx9Pzhjo6ObPL91LQaR0LRqQg=="}]}},"3.1.3":{"title":"Safe FS","name":"safefs","version":"3.1.3","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":{"type":"MIT"},"badges":{"travis":true,"npm":true,"npmdownloads":true,"david":true,"daviddev":true,"gratipay":"bevry","flattr":"344188/balupton-on-Flattr","paypal":"QB8GQPZAH84N6","bitcoin":"https://coinbase.com/checkouts/9ef59f5479eec1d97d63382c9ebcb93a","wishlist":"http://amzn.com/w/2F8TXKSNAFG4V"},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"jagill","url":"https://github.com/jagill"},{"name":"sfrdmn","url":"https://github.com/sfrdmn"},{"name":"shama","url":"https://github.com/shama"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"http://github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"graceful-fs":"^3.0.6"},"devDependencies":{"coffee-script":"^1.9.1","projectz":"^0.5.0"},"directories":{"lib":"./out/lib"},"scripts":{"preinstall":"node ./cyclic.js","test":"echo 'no tests yet'"},"main":"./out/lib/safefs.js","cakeConfiguration":{"COFFEE_SRC_PATH":"src"},"gitHead":"eccb047593ea8aa62e8933c01196d0b2321ee9a4","_id":"safefs@3.1.3","_shasum":"316940e5c83d195b4d129728eb8a39b56a58ce4b","_from":".","_npmVersion":"2.7.0","_nodeVersion":"1.5.1","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"dist":{"shasum":"316940e5c83d195b4d129728eb8a39b56a58ce4b","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.1.3.tgz","integrity":"sha512-Uxtix+lB7cclumKWR5LcZHgu7CDAcTpPfRP224XQ99riZ/Wp1+vyjk+GL0ciZtg9It2jNIrdZDCdPPP3r80NCw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEsK9pLrj++GEFnXaBUGKb0Ryfy7SiTJVU+J5IJ5LcSpAiAkx8hRFSeUgEYRreQ23GazO5LFrmOo7G6DAdCwP8Rajw=="}]}},"3.2.0":{"title":"Safe FS","name":"safefs","version":"3.2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":{"type":"MIT"},"badges":{"travis":true,"npm":true,"npmdownloads":true,"david":true,"daviddev":true,"gratipay":"bevry","flattr":"344188/balupton-on-Flattr","paypal":"QB8GQPZAH84N6","bitcoin":"https://bevry.me/bitcoin","wishlist":"https://bevry.me/wishlist"},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"jagill","url":"https://github.com/jagill"},{"name":"sfrdmn","url":"https://github.com/sfrdmn"},{"name":"shama","url":"https://github.com/shama"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+ssh://git@github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"graceful-fs":"^4.1.2"},"devDependencies":{"assert-helpers":"^1.0.2","babel":"^5.8.23","babel-eslint":"^4.1.1","eslint":"^1.3.1","joe":"^1.6.0","joe-reporter-console":"^1.2.1","projectz":"^0.5.0","rimraf":"^2.4.3"},"main":"./es6guardian.js","scripts":{"clean":"node --harmony nakefile.js clean","setup":"node --harmony nakefile.js setup","compile":"node --harmony nakefile.js compile","watch":"node --harmony nakefile.js watch","verify":"node --harmony nakefile.js verify","meta":"node --harmony nakefile.js meta","prepare":"node --harmony nakefile.js prepare","release":"node --harmony nakefile.js release","test":"node --harmony ./es5/test/safefs-test.js"},"nakeConfiguration":{"BABEL_SRC_PATH":"es6","ESLINT_SRC_PATH":"es6","YUIDOC_SRC_PATH":"es6"},"gitHead":"9bc0782ca72e2a6f4542f4b8ecf79f047970a407","_id":"safefs@3.2.0","_shasum":"72b42616c152ec1ba16e9bf8b4cef98ad948a901","_from":".","_npmVersion":"2.13.3","_nodeVersion":"3.3.0","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"dist":{"shasum":"72b42616c152ec1ba16e9bf8b4cef98ad948a901","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.2.0.tgz","integrity":"sha512-1J0V5DCJFlrKTzprxEs786Yu8fjKCQj8JapihvQnvQ0JBAx1zmd3ZeVwlrzvcKocTQmiXh26/W+Ygs11finvtw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAOmmcAouV0XoLU8CN1nd2ZiXYPUPVhCP7fatm0YvA51AiAh37vgVvLHjX1nrsp6Sp/78lmXvQvMLK88pW1KGhKL6w=="}]},"directories":{}},"3.2.1":{"title":"Safe FS","name":"safefs","version":"3.2.1","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":{"type":"MIT"},"badges":{"travis":true,"npm":true,"npmdownloads":true,"david":true,"daviddev":true,"gratipay":"bevry","flattr":"344188/balupton-on-Flattr","paypal":"QB8GQPZAH84N6","bitcoin":"https://bevry.me/bitcoin","wishlist":"https://bevry.me/wishlist"},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"jagill","url":"https://github.com/jagill"},{"name":"sfrdmn","url":"https://github.com/sfrdmn"},{"name":"shama","url":"https://github.com/shama"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+ssh://git@github.com/bevry/safefs.git"},"engines":{"node":">=0.10"},"dependencies":{"graceful-fs":"^4.1.2"},"devDependencies":{"assert-helpers":"^1.0.2","babel":"^5.8.23","babel-eslint":"^4.1.1","eslint":"^1.3.1","joe":"^1.6.0","joe-reporter-console":"^1.2.1","projectz":"^0.5.0","rimraf":"^2.4.3"},"main":"./es6guardian.js","scripts":{"clean":"node --harmony nakefile.js clean","setup":"node --harmony nakefile.js setup","compile":"node --harmony nakefile.js compile","watch":"node --harmony nakefile.js watch","verify":"node --harmony nakefile.js verify","meta":"node --harmony nakefile.js meta","prepare":"node --harmony nakefile.js prepare","release":"node --harmony nakefile.js release","test":"node --harmony ./es5/test/safefs-test.js"},"nakeConfiguration":{"BABEL_SRC_PATH":"es6","ESLINT_SRC_PATH":"es6","YUIDOC_SRC_PATH":"es6"},"gitHead":"7df9a7651a540dae5ec4ca5b1f38f7404c0c9486","_id":"safefs@3.2.1","_shasum":"ca44cc561dab95c88507701f42410b9cbb9b0c87","_from":".","_npmVersion":"2.13.3","_nodeVersion":"3.3.0","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"dist":{"shasum":"ca44cc561dab95c88507701f42410b9cbb9b0c87","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.2.1.tgz","integrity":"sha512-7UykfiKZ3OQ9m0GGjcLQx9FwKyH/pF9g4oiqWQB8V7SgaqKt7vZnZL6Oe1OOI6sb3HSFEa6rTBu6Ay20TSCzpw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF01CdOX9m6lna3UYTdxBgqICPNGMhQcu9zKt0MBkQY/AiB3WIIYzpI0XesIEJvcpzQ8oI5UgtN7EcNTLgPYOD7+Fg=="}]},"directories":{}},"3.2.2":{"title":"Safe FS","name":"safefs","version":"3.2.2","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":{"type":"MIT"},"badges":{"travis":true,"npm":true,"npmdownloads":true,"david":true,"daviddev":true,"gratipay":"bevry","flattr":"344188/balupton-on-Flattr","paypal":"QB8GQPZAH84N6","bitcoin":"https://bevry.me/bitcoin","wishlist":"https://bevry.me/wishlist"},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"jagill","url":"https://github.com/jagill"},{"name":"sfrdmn","url":"https://github.com/sfrdmn"},{"name":"shama","url":"https://github.com/shama"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+ssh://git@github.com/bevry/safefs.git"},"engines":{"node":">=0.4"},"dependencies":{"graceful-fs":"*"},"devDependencies":{"assert-helpers":"^1.0.2","babel":"^5.8.23","babel-eslint":"^4.1.1","eslint":"^1.3.1","joe":"^1.6.0","joe-reporter-console":"^1.2.1","projectz":"^0.5.0","rimraf":"^2.4.3"},"main":"./es6guardian.js","scripts":{"clean":"node --harmony nakefile.js clean","setup":"node --harmony nakefile.js setup","compile":"node --harmony nakefile.js compile","watch":"node --harmony nakefile.js watch","verify":"node --harmony nakefile.js verify","meta":"node --harmony nakefile.js meta","prepare":"node --harmony nakefile.js prepare","release":"node --harmony nakefile.js release","test":"node --harmony ./es5/test/safefs-test.js"},"nakeConfiguration":{"BABEL_SRC_PATH":"es6","ESLINT_SRC_PATH":"es6","YUIDOC_SRC_PATH":"es6"},"gitHead":"11c7818dc3b3968e080003e0e960ae13e487dd1a","_id":"safefs@3.2.2","_shasum":"8170c1444d7038e08caea05a374fae2fa349e15c","_from":".","_npmVersion":"2.13.3","_nodeVersion":"3.3.0","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"dist":{"shasum":"8170c1444d7038e08caea05a374fae2fa349e15c","tarball":"https://registry.npmjs.org/safefs/-/safefs-3.2.2.tgz","integrity":"sha512-qqvuS8qslGUSgUKQbdsYIK8Qg0EAkykxlsdfy3jpBSnhtyPsee/8y4RLc5+3CD6TgazBmtT0ekoGicUTPzICdg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH6P6Mu5tZkEdf2/9sIrKpSbKrude3Jp1bzUXluAWRypAiEAhBFx6RC8oJe4hJJj4bPDBjNlDZYHQu6mzwpgnwHpLQw="}]},"directories":{}},"4.0.0":{"title":"Safe FS","name":"safefs","version":"4.0.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":{"type":"MIT"},"badges":{"travis":true,"npm":true,"npmdownloads":true,"david":true,"daviddev":true,"gratipay":"bevry","flattr":"344188/balupton-on-Flattr","paypal":"QB8GQPZAH84N6","bitcoin":"https://bevry.me/bitcoin","wishlist":"https://bevry.me/wishlist"},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"jagill","url":"https://github.com/jagill"},{"name":"sfrdmn","url":"https://github.com/sfrdmn"},{"name":"shama","url":"https://github.com/shama"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+ssh://git@github.com/bevry/safefs.git"},"engines":{"node":">=0.12"},"dependencies":{"graceful-fs":"^4.1.2"},"devDependencies":{"assert-helpers":"^1.0.2","babel":"^5.8.23","babel-eslint":"^4.1.1","eslint":"^1.3.1","joe":"^1.6.0","joe-reporter-console":"^1.2.1","projectz":"^0.5.0","rimraf":"^2.4.3"},"main":"./es6guardian.js","scripts":{"clean":"node --harmony nakefile.js clean","setup":"node --harmony nakefile.js setup","compile":"node --harmony nakefile.js compile","watch":"node --harmony nakefile.js watch","verify":"node --harmony nakefile.js verify","meta":"node --harmony nakefile.js meta","prepare":"node --harmony nakefile.js prepare","release":"node --harmony nakefile.js release","test":"node --harmony ./es5/test/safefs-test.js"},"nakeConfiguration":{"BABEL_SRC_PATH":"es6","ESLINT_SRC_PATH":"es6","YUIDOC_SRC_PATH":"es6"},"gitHead":"bd2787279f105f2b37daaebc3efc7c66338aebc6","_id":"safefs@4.0.0","_shasum":"70cc460a89b3f39e0c453caedb410ba85079a4e9","_from":".","_npmVersion":"2.13.3","_nodeVersion":"3.3.0","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"dist":{"shasum":"70cc460a89b3f39e0c453caedb410ba85079a4e9","tarball":"https://registry.npmjs.org/safefs/-/safefs-4.0.0.tgz","integrity":"sha512-Nts2XkQcgBACWAoB+FYO0bXSTlUjg0OBqFCLiaYa4waP/xDCFLm3IbNxEApo8uXNskibxz1G9FaQPZDq/OfNAQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD33tbkZSTTxQ2qFdL4nmmcVSP2DE0zIATdsai+MYhMXAIhANAeuam0mbTobdeMpdxsS3+nkfP884NWaqukM21mh8ZP"}]},"directories":{}},"4.0.1":{"title":"Safe FS","name":"safefs","version":"4.0.1","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","slackin","patreon","gratipay","flattr","paypal","bitcoin","wishlist"],"config":{"patreonUsername":"bevry","gratipayUsername":"bevry","flattrCode":"344188/balupton-on-Flattr","paypalButtonID":"QB8GQPZAH84N6","bitcoinURL":"https://bevry.me/bitcoin","wishlistURL":"https://bevry.me/wishlist","slackinURL":"https://slack.bevry.me"}},"keywords":["fs","path","openFile","closeFile","emfile"],"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"https://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+ssh://git@github.com/bevry/safefs.git"},"engines":{"node":">=0.12"},"browsers":false,"dependencies":{"esnextguardian":"^1.2.0","graceful-fs":"^4.1.2"},"devDependencies":{"assert-helpers":"^4.1.0","babel-cli":"^6.3.15","babel-preset-es2015":"^6.3.13","eslint":"^1.3.1","joe":"^1.6.0","joe-reporter-console":"^1.2.1","projectz":"^1.0.9","rimraf":"^2.4.3"},"main":"./esnextguardian.js","scripts":{"clean":"node --harmony nakefile.js clean","setup":"node --harmony nakefile.js setup","compile":"node --harmony nakefile.js compile","watch":"node --harmony nakefile.js watch","verify":"node --harmony nakefile.js verify","meta":"node --harmony nakefile.js meta","prepare":"node --harmony nakefile.js prepare","release":"node --harmony nakefile.js release","test":"node --harmony ./es5/test/safefs-test.js"},"nakeConfiguration":{"BABEL_SRC_PATH":"esnext","ESLINT_SRC_PATH":"esnext","YUIDOC_SRC_PATH":"esnext"},"gitHead":"288a0ce1802d2e9a44cb18101868a8bb6cb2752d","_id":"safefs@4.0.1","_shasum":"9c30c86769516e4f63394f81d842f1e537a78933","_from":".","_npmVersion":"3.5.1","_nodeVersion":"5.2.0","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"dist":{"shasum":"9c30c86769516e4f63394f81d842f1e537a78933","tarball":"https://registry.npmjs.org/safefs/-/safefs-4.0.1.tgz","integrity":"sha512-k4IfNdvsYG6ud3AyHwIhPG8ZMHmM6ADNhLSfK5PaF5Tn1POyptpOJWwGRAJRmreaRnpcEX4hFOEZ60rD82nt2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFV0B8S3Q/crdUCU7nTTdwQkInxbvyInotxdLoKFnBxCAiEAry4aKbhsf3REHLJXPdqtahZnz+ci5FICwXA1tLEhd2k="}]},"directories":{}},"4.1.0":{"title":"Safe FS","name":"safefs","version":"4.1.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","slackin","patreon","gratipay","flattr","paypal","bitcoin","wishlist"],"config":{"patreonUsername":"bevry","gratipayUsername":"bevry","flattrUsername":"balupton","paypalURL":"https://bevry.me/paypal","bitcoinURL":"https://bevry.me/bitcoin","wishlistURL":"https://bevry.me/wishlist","slackinURL":"https://slack.bevry.me"}},"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"https://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"Benjamin Lupton","url":"https://balupton.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+ssh://git@github.com/bevry/safefs.git"},"engines":{"node":">=0.12"},"editions":[{"description":"Source + ESNext + Require","entry":"source/index.js","directory":"source","syntaxes":["javascript","esnext","require","let","const","destructuring","defaults","template strings"]},{"description":"Babel Compiled + ES2015 + Require","entry":"es2015/index.js","directory":"es2015","syntaxes":["javascript","es2015","require"]}],"main":"index.js","dependencies":{"editions":"^1.1.1","graceful-fs":"^4.1.4"},"devDependencies":{"assert-helpers":"^4.2.0","babel-cli":"^6.9.0","babel-preset-es2015":"^6.9.0","eslint":"^2.10.2","eslint-plugin-babel":"^3.2.0","joe":"^1.6.0","joe-reporter-console":"^1.2.1","projectz":"^1.1.5","rimraf":"^2.5.2"},"scripts":{"setup":"npm install","clean":"rm -Rf ./docs ./es2015","compile":"npm run compile:es2015","compile:es2015":"babel ./source --out-dir ./es2015 --presets es2015","meta":"npm run meta:projectz","meta:projectz":"projectz compile","prepare":"npm run compile && npm run test && npm run meta","release":"npm run prepare && npm run release:publish && npm run release:tag && npm run release:push","release:publish":"npm publish","release:tag":"git tag v$npm_package_version -a","release:push":"git push origin master && git push origin --tags","pretest":"npm run test:eslint","test:eslint":"eslint ./source","test":"node --harmony -e \"require('editions').requirePackage(process.cwd(), require, 'test.js')\""},"gitHead":"51d15eaa03e53aaedd3002dc67814355073e8a55","_id":"safefs@4.1.0","_shasum":"f82aeb4bdd7ae51f653eb20f6728b3058c8d6445","_from":".","_npmVersion":"3.8.7","_nodeVersion":"6.0.0","_npmUser":{"name":"balupton","email":"b@lupton.cc"},"dist":{"shasum":"f82aeb4bdd7ae51f653eb20f6728b3058c8d6445","tarball":"https://registry.npmjs.org/safefs/-/safefs-4.1.0.tgz","integrity":"sha512-159v94oZuKc9luo98jJZ46QvdKoybLcJLJDbKKJSGnY6iPsk6MQ0UEsQdP8FJnypZgqERQawZiyiNvwSzUn5Bg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0OadZ9DZgznEZGh9M/HuaIz1HX7vIrOxkjat193baoAiEA4vscRBBX8wl2Rmo732Tbxje87uWfu5RP2KDj/msDc9Y="}]},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/safefs-4.1.0.tgz_1464366175849_0.9525796305388212"},"directories":{}},"4.2.0-next.1573581968.f57353e1353147252e8c306eb5f06321631ea46a":{"title":"Safe FS","name":"safefs","version":"4.2.0-next.1573581968.f57353e1353147252e8c306eb5f06321631ea46a","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":{"type":"cooperative","url":"https://bevry.me/fund"},"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=0.12"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"6 || 8 || 10 || 12 || 13","browsers":false}},{"description":"esnext compiled for node.js 0.12 with require for modules","directory":"edition-node-0.12","entry":"index.js","tags":["javascript","require"],"engines":{"node":"0.12 || 4 || 6 || 8 || 10 || 12 || 13","browsers":false}}],"main":"index.js","dependencies":{"editions":"^2.2.0","graceful-fs":"^4.2.3"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/preset-env":"^7.7.1","assert-helpers":"4.10.0","eslint":"^6.6.0","eslint-config-bevry":"^1.2.1","eslint-config-prettier":"^6.5.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^3.1.0","prettier":"^1.19.1","projectz":"^1.9.0","rimraf":"2.7.1","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-0.12","our:compile:edition-node-0.12":"env BABEL_ENV=edition-node-0.12 babel --out-dir ./edition-node-0.12 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"babel":{"env":{"edition-node-0.12":{"sourceType":"script","presets":[["@babel/preset-env",{"targets":{"node":"0.12"},"modules":"commonjs"}]],"plugins":["@babel/proposal-object-rest-spread"]}}},"gitHead":"f57353e1353147252e8c306eb5f06321631ea46a","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/index.js</code> which uses <a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a> to automatically select the correct edition for the consumers environment</li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li>\n<li><code>safefs/edition-node-0.12/index.js</code> is esnext compiled for node.js 0.12 with require for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@4.2.0-next.1573581968.f57353e1353147252e8c306eb5f06321631ea46a","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-5XGFCTr6TxLoPw4uex0vljUKhrwGWmnoRrakeQR1qhkUbI6Hy7AofpqjTutEMjWwl85tYhT2SvjL1IGKXxKs5Q==","shasum":"61c70ca420a3acfeaf7c7b7df9fba36c88ec5188","tarball":"https://registry.npmjs.org/safefs/-/safefs-4.2.0-next.1573581968.f57353e1353147252e8c306eb5f06321631ea46a.tgz","fileCount":9,"unpackedSize":26238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyvSSCRA9TVsSAnZWagAAExIQAJhU6zsEPIr0Z/bM1FUq\nG8beqMwwb3TBgvg56Mad2/uPX9CNatv24mNnFHzwPsvZLRM4Q9PRY+HxcsxB\nvlzNz868EajNSwLrSiaifaDr1gW2Y6Kgv8Tmu56o0jqfpWQkixLDGAN94sOP\nlHkgyCJ3zuhtiST0+rylI9pBeZRByllCHDAvQdKzo8cO0Q6aB0z5zDBP7USx\nxiA8uI7WQnf2PQ919BbnjkdfIaaapjWCuDoc3VJ+9RHRhV64hNsbibx24LNr\nO7mPoAZT0dyj10g/jwv7sqqbFpD1z6Ly+ALYsE4w3KaR+WZqZLX1lmKTzeRR\nLzNIe44dUqHhSdG8UBq0h3qJCzwSXqpAPseLIS4nt+KKDY0AJW8O+KqvspmR\nF6QQs1UWRYOYFJbgki7iIj92d8LiqYw1KH2WQVr/t8QIJkl/2L2HXtZI8E7G\nxsrjPLAG/fKOt1ABZs5zjIy5PvqnvWy1lUHbAyJOBa1n/xxcYaijiw8C/COm\nBP+gxa1PDiHi8uc47lv8f3R5JR+C66eoMUZYRyhNGpHoFz7GbbzrjnMlAoGq\n0bRYBCweHMAzT6VLyWlrUa23tqTbQB4B1TIrYjninhILY4NKONaYgtyOucXZ\nOqVsetqVILAQD2qePBPx2zrD+elqnBWpTzv6k8odUaaS9KDShRIC/ZsqXjWD\ns5CJ\r\n=Dk/6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID9VIE6f7SPjbhmxoJJOvxXjhF7SiTHGcH4ZQMyRtUBWAiEApiYWqPREPPy81aUdadBitip1et52R92cYDwWSLVqW8o="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_4.2.0-next.1573581968.f57353e1353147252e8c306eb5f06321631ea46a_1573581970301_0.07788548166811737"},"_hasShrinkwrap":false},"4.2.0":{"title":"Safe FS","name":"safefs","version":"4.2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":{"type":"cooperative","url":"https://bevry.me/fund"},"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=0.12"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"6 || 8 || 10 || 12 || 13","browsers":false}},{"description":"esnext compiled for node.js 0.12 with require for modules","directory":"edition-node-0.12","entry":"index.js","tags":["javascript","require"],"engines":{"node":"0.12 || 4 || 6 || 8 || 10 || 12 || 13","browsers":false}}],"main":"index.js","dependencies":{"editions":"^2.2.0","graceful-fs":"^4.2.3"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/preset-env":"^7.7.1","assert-helpers":"4.10.0","eslint":"^6.6.0","eslint-config-bevry":"^1.2.1","eslint-config-prettier":"^6.5.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^3.1.0","prettier":"^1.19.1","projectz":"^1.9.0","rimraf":"2.7.1","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-0.12","our:compile:edition-node-0.12":"env BABEL_ENV=edition-node-0.12 babel --out-dir ./edition-node-0.12 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"babel":{"env":{"edition-node-0.12":{"sourceType":"script","presets":[["@babel/preset-env",{"targets":{"node":"0.12"},"modules":"commonjs"}]],"plugins":["@babel/proposal-object-rest-spread"]}}},"gitHead":"f57353e1353147252e8c306eb5f06321631ea46a","_id":"safefs@4.2.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-1amPBO92jw/hWS+gH/u7z7EL7YxaJ8WecBQl49tMQ6Y6EQfndxNNKwlPqDOcwpUetdmK6nKLoVdjybVScRwq5A==","shasum":"6d60d3aecc47c3d02b0ecf39ee0a3798cb363218","tarball":"https://registry.npmjs.org/safefs/-/safefs-4.2.0.tgz","fileCount":9,"unpackedSize":26181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyvSjCRA9TVsSAnZWagAA8joP/2ZigiVfCBY9WYJjkMES\n7fYPCnHsug/6GAs4FQQr9EPNoECFb+VnxPi0njuTVRzg0Tr36s665mcsmuWl\nEhq8ouWH+wqN4TG5zfx8RJja91Nt7hM4jZWzsC6YEvgsVehUV3FSFW/BfF5n\n3kJFUyq6hsE+fQfTapIRnQw4nUek763bjSZe6SO+zaGibh2osVLrFIhoypEY\nvi73HrOoFd09IN/cYg3rwlBrdqLKuQn4SJpaAYZV4tKAOEkGzwvalpDRyedB\n6L6IZ5kzyWvaARaqUfMrbet2pbLPVdDL7bcce8k4++b7q1mCuwZR4woKdVhC\nMeGH2JSffOfdSqaoVcLZvq3vPRaAm3KIhhOl/Z9HX/AH+xN6FhDk41b49hsB\n3JVds04y6rD6jd+cPIh5A4bc5CVroHTbhqCJ3q0kppKY8AbmZEOQ8uPA9VvP\n/UAgjbmkMmyVvBfGUgHgWxh1ZAwv8UZmTJ7RqUBPOJ6cWAT8rD0CsxftLT68\nX5q14nhOQKqdvRZpdWKaG28bO2+rTaq5Xj2biOO5Gv3B2Cc1ePQCoiUSMGQP\nN4/GnSpQZGcJ9c3P5LBM36JdVpt648wKpRnRGVbrS9Ax7sYUPta9tsT09Ujo\nLJhYFZ4999ulKmneBF8JYqgJhbgnGnz5CvlzR9Fo9/JsMrRyGvyPQ/9Jr6ok\nzsXM\r\n=ssCI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD82tEvq6/2pH6e2rSP3V1VEbUcyE9ehrocIpcNX6fvoQIhAKwyr1CgEKoo2ye3HKjIkbfJdFau2XtzywavrZO0s57d"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_4.2.0_1573581987440_0.9489655496318854"},"_hasShrinkwrap":false},"5.0.0-next.1573587875.b7585a0222f45d7da1de03afe82a62e8feaadde7":{"title":"Safe FS","name":"safefs","version":"5.0.0-next.1573587875.b7585a0222f45d7da1de03afe82a62e8feaadde7","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":{"type":"cooperative","url":"https://bevry.me/fund"},"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12","browsers":false}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.2.1","eslint":"^6.6.0","eslint-config-bevry":"^1.2.1","eslint-config-prettier":"^6.5.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^3.1.0","prettier":"^1.19.1","projectz":"^1.9.0","rimraf":"3.0.0","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"b7585a0222f45d7da1de03afe82a62e8feaadde7","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.0.0-next.1573587875.b7585a0222f45d7da1de03afe82a62e8feaadde7","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-QY5ejbmjRobEpuWbLE9paKh223Xrzhk0qp3RoMJfRSMkmH5TeAjC2SLds88Tiu3ktZF1Ey+axmgUGFoTOse8HQ==","shasum":"5a0b5cd003fc34568ef4411fd60e8fad280bc6a2","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.0.0-next.1573587875.b7585a0222f45d7da1de03afe82a62e8feaadde7.tgz","fileCount":7,"unpackedSize":21705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdywukCRA9TVsSAnZWagAAZU4P/1eiERSqHMLixNZiBsbM\n3R3bjoxrcu8NPLkonowszz//QFtoMiaxKTHf1au/StRy5f/s3tNBwszLRk3m\n4AtDGj+4lipbwAMko9bgr5sa13m3ERzHml5xkqAYofO+VivZcM/p+0rvRgie\n90DnIyMSR32N+k90V5QYwvIX69M7wMNNrG7WLWznGC4hVG6F04EfmcqCFK80\nHNiyJ5h/8WsPZZvgfD/Ls5moP3kV4vfNGVJ263sfi09I02bF8Trjc1/asAan\nrhEHYMjTm4I39EJ68aOiVEQCVl/o/oLeZowTCryQJx6VwsZPiGW098KOHH5N\nTzvAq7JcjkkP0ktDBYhJCfysr2hfdIKg+tj3SVkgO5HANRuhIffKrugdKKTp\nn4ijzkJCqXrkYCCd9RpVAK+9ZSlm9gwQNHXSi5FdhxsniWOqig0Zcjapx6yX\nGwr1DP1mtG8AuraH+3Q0NABHY8uz1WZI1WnDeTxS/oBl1mue/5fWF6S3xwvn\nrBK4cHmVbsEAeYOyx7IbSzAh4nF7289h5ezpGsIAI1zNLAxruKCz8DkPhc1Q\nRANZYbh+g196DfTpcJy+2F6/aynN2szSHWC9CxdOKTSaQZ3HiKyCqXLYEwyU\nWpeXc1u8R+xr7uZQow+m6Q+tpwT5DJl8YVSp5R/KbdKMxj+DNNYLZwTxfaPk\n1Gzm\r\n=YzVZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/0s/HtzcW6hReqvy4xx5hlOx2b8qbGCUu41Bmun1Z/QIhAL4B8Hqtfa2yeYH2lOPgcd5Tr/6WZdlOM/p7mxNLU5ip"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.0.0-next.1573587875.b7585a0222f45d7da1de03afe82a62e8feaadde7_1573587876409_0.3137668309568913"},"_hasShrinkwrap":false},"5.0.0":{"title":"Safe FS","name":"safefs","version":"5.0.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":{"type":"cooperative","url":"https://bevry.me/fund"},"author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12","browsers":false}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.2.1","eslint":"^6.6.0","eslint-config-bevry":"^1.2.1","eslint-config-prettier":"^6.5.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^3.1.0","prettier":"^1.19.1","projectz":"^1.9.0","rimraf":"3.0.0","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"b7585a0222f45d7da1de03afe82a62e8feaadde7","_id":"safefs@5.0.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-lDjOP4U521GzdmyRHRJBGx3JryuqeCTOo6FXyrlsfWJis9szIHFlsli0k0398rFFOscB464DeKhzAc3n9c6ueA==","shasum":"f6fb95ad22509b1c797ac5431351a34e5c869986","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.0.0.tgz","fileCount":7,"unpackedSize":21648,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdywu+CRA9TVsSAnZWagAAPjUP/jCUgFuAIFBVooZN4FgF\n7xaBZL6GqWMeCa0bE2jSaLS2L6jsd+VBqTgHcji7vAgfgPhuiC4I+LhCbL+o\nWJvi2L+0zZlwcqnXi35qEa06AKAAhz55YjF0w7Gz0/mr07WjbQkYMNkb1+Um\nm6XQXTAQQIUxsar2MsZ5WbozCXhmDpIfnIohmtmwZGKezEh3Br6IA1tnn2Ky\nKElsUF4BM1MxjL5zyhwAyzCQ5kA9o0ct2wKk4UU0qNHTTdOTXfD1x76VnKg4\nitu9tZlgtZfw21xh5LNUl402POU31nOp1oIpYtGlv9i2yZSwAtFLxSGQQsZ8\nJGX4CxEC0HK92hVWinRaS/LbUQvp3+2PMgv4qvgmjDfL9l/d9JVtY6d2nbic\nflMkfNQQiHBjCTFOGEKT+hDBV+26DNb89umfANtqtjltD7kj4+1hE4LiaS5s\nozaiqQH547vPu7PJaWg/RVSPO60PvTWYB8KLHbNIcbGIODxlXAOnOJAH6r8v\nJxsleDbwH58hd1LcWT47vC42FFv/UC7Lomq35LX4S+KjXaJhf8q/tqipnNaC\nKxPtsNIWA+fcdYeEGdkWSi//vIV8bsMeWMucGoA4ah2mYgKeLisQHF2y00dY\ncfz8zcyhR4C2YZhcE/wmPbcr1yeb1uvNbwhvpZTOah3wYB98l47WbZCDrPDI\n1BT8\r\n=jzKZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCG3AzcsFIa1oAd2MxC5cip2NdvifsAd26bwFCh4HqzTgIgI/N41+vTPoPvPu2m82Zi5Il2YG0h/rIamURydRSXVSI="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.0.0_1573587902190_0.003424861397815393"},"_hasShrinkwrap":false},"5.1.0-next.1573602873.3aaa2c33bdd7b81b659c002542c3420d4787e547":{"title":"Safe FS","name":"safefs","version":"5.1.0-next.1573602873.3aaa2c33bdd7b81b659c002542c3420d4787e547","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12 || 13","browsers":false}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.2.1","eslint":"^6.6.0","eslint-config-bevry":"^1.2.1","eslint-config-prettier":"^6.5.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^3.2.0","prettier":"^1.19.1","projectz":"^1.9.0","rimraf":"3.0.0","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"3aaa2c33bdd7b81b659c002542c3420d4787e547","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.1.0-next.1573602873.3aaa2c33bdd7b81b659c002542c3420d4787e547","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-fzUW6JP0lYzw5NrGR7/Hw6n4y8hws2z7n4Nz8wUiInI8jphflbDAjzum9UipAdeSXkNdY9li5Ga3z2sto6XR7w==","shasum":"97dfa148de4f09fc67ebf0b8052acb218cd32cfb","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.1.0-next.1573602873.3aaa2c33bdd7b81b659c002542c3420d4787e547.tgz","fileCount":7,"unpackedSize":21865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdy0Y7CRA9TVsSAnZWagAASMIP/0b+MQ36n8wUXMvuG9Dj\n3UL7Rwp0Gsr8g5HTL6L1ClKRzXpyrT/BaYf+l6adg7zYX8YNKukA6Iw2KfNG\nEMDEHfoepvHfWlmSPCrRwOY7GL1CkiehYzAewFpBJJ6+Y9DJkECAvuiGAWU4\nW69lSKiUE2qBmQFHzt18+lOe367vtfRafYZIgQzRGaFvc6eSYOazgDRocQbY\nWM4abzPYDNwO8qZ1YVn2SncAtEf1QPVocnHQEAqoec9flvzTNcHQYCSJ4RPh\nDRWyPpunebBXMZU34gyNnsdnhVgPwrvMEc5dC+k9fvYU1VE+26wi++kMKW5Y\npR3aStIv8tggE7NnXXo7s8ln8atQlCUVyy4m8RcPW4Aa7OHpjtGYKXzFfvRb\nhBede/SlG0RxTI+t+QYkd3sNkslj5NPTPTVgjCjihL4wwcxMRcWi/vdqjm79\ndaBXkQEqm9Dj96HMZYqvACusU62VLl7pWeF5LKm1R4iniaRKkkw32j8MLL8L\ntGTpj9jHsjPnOAUe1J5+tfhe7/08/h6yImoenE5OtskG5+0nszuucVWNVSQu\nJG2P2HuIOf5TjEYFiU1rHRfQzY2njGHFVKTAa3Uf3+1DvoPMLNkx24udode1\nShCV/VwNpDpyQXY8EPStdNDEG6ulZso+QeyDXQrlhVodGEwFV1VTN9bpci0K\nGLaJ\r\n=A+dO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmCr3p51zjBhhQXxYqj+Mc6P7M6Wy0d7eoqtCfVioSKAiBUdXpRPE4HjeqTwrzc+AFKNxwe//p2O/odB2JOdqJqug=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.1.0-next.1573602873.3aaa2c33bdd7b81b659c002542c3420d4787e547_1573602875411_0.5846704978868447"},"_hasShrinkwrap":false},"5.1.0":{"title":"Safe FS","name":"safefs","version":"5.1.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12 || 13","browsers":false}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.2.1","eslint":"^6.6.0","eslint-config-bevry":"^1.2.1","eslint-config-prettier":"^6.5.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^3.2.0","prettier":"^1.19.1","projectz":"^1.9.0","rimraf":"3.0.0","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"3aaa2c33bdd7b81b659c002542c3420d4787e547","_id":"safefs@5.1.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-NfKlkg5Y8xgDTubMmsaURMgHXI1xaLUop94fn5N5wfcIHJsz45IlJAzZUq0XvcHHKhrzGqTy7hgar56fxHKnWw==","shasum":"bfd4006eeb08c76389e0d3479c0327ac31a1df24","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.1.0.tgz","fileCount":7,"unpackedSize":21808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdy0aTCRA9TVsSAnZWagAAVRwP/2jiZ3DqPbDkC+qhJrz8\nazsLwcokuqUAaMJ0lgxBSX/zNs4rIAny3qKUGFFSsOTRaNOQURo/2F0MowEc\nCvkWrf6ATMoc5gUtFd7tT30oVPmh5FiqSSg1S4FgJhl8DGmkEwZE64W5kzSo\n4ks0oaaOx1dg9mj/vf9Y9L1I1dgsp64fD6CZaAazuMROTZ9eR6KuA6fg3gKw\no1Mrb8/JX5Ofj+CiazDPWnbnVih3SQub0R1oPYwrhs8v9VuOEwqwGlSoMBUL\n+7LGiomcYm2zppbxbTXL7YpCD3ovSrLx6607z8xxMofc25WwKvzmVPvKwNyj\n7ROOIb/DEQaGw/Gn1YlEln0LsMk/MFarL/zWUjckVvRkFtEf2mr4dzoOB8Ad\nKi2WLlqWtFjF65BK3Bts5KUhqItrk3rjFsa6R+yucWQXcFtuqJ/2dDvnu6yG\nJrrwp19W/j7LQI/MOJRs3DhhVnthJD4nenGNOKvHCQnfc/WtDEQiGaKbABf1\nN6IcYoHLZrILY2mONaQiwpUstm/KHm66B+giEY4qD/Xub3cMHan+01IyUpRM\n9aUH65WA9PzT9MR+a/qvHQqg8UpZKVPVhEL+1B4iXKjsLgQwa2KbR4+mZHjE\nc/x97E9xRy6bDSK0l815ACeKSrI3K7rQY1RGrHTcnRUMiaXkBURprDOeaXl5\n+5nM\r\n=nUwn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEhdoIB0Qy8xQMVTYSJvoe6RczZI6rp4aSUXVeJ0d4mAAiAs6XRa1aQJw9/fP1QS8vd0GYq0/hUVw26zYip4p4R2QQ=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.1.0_1573602962712_0.12496836302954306"},"_hasShrinkwrap":false},"5.1.0-next.1573685258.e896dec01a3dba92500d17047e5566683d82b4c4":{"title":"Safe FS","name":"safefs","version":"5.1.0-next.1573685258.e896dec01a3dba92500d17047e5566683d82b4c4","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12 || 13","browsers":false}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.2.1","eslint":"^6.6.0","eslint-config-bevry":"^1.2.1","eslint-config-prettier":"^6.5.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^3.2.0","prettier":"^1.19.1","projectz":"^1.9.0","rimraf":"3.0.0","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"e896dec01a3dba92500d17047e5566683d82b4c4","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.1.0-next.1573685258.e896dec01a3dba92500d17047e5566683d82b4c4","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-PZ7m5EheetR0Rq7x2Ed1LXbSg+s3krek1vJSbM3ZV7gkyGzfrppIcpvI5OM7fokBjsIV3cErb3TW0ET4nehJ1w==","shasum":"1f0bb4345da7ac5745fb1dfb87c192c2c78b18fc","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.1.0-next.1573685258.e896dec01a3dba92500d17047e5566683d82b4c4.tgz","fileCount":7,"unpackedSize":21865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzIgMCRA9TVsSAnZWagAAw2YP/12+covq5LrrlyDyKwzx\nOVW/xDoNlEqGe8GNoD3VcCOK4hvMzrUMkixnq2V5NOcjVU80Jl0/1XZKKigZ\nKo1fYnc0syMkeSaPJKCoZCIgvPvqtKK4KkliXvpeMSG5CLg2VcQo5ZfFfK9c\n8bobtH+FhnoO34CJ+nheHjRbV+LdzdMc9yTIw9VrL5NKwKWItePSpMgdk4g1\nNMzMY5AMg1agkL4A5zjbs4qX/9ojHqo/9SYclyd/biSxiQbv1gyLZK3aj5nz\nFx2C28/ER24v7+y6Fkiqxyj5QXSFho7wLaKHFNfT70emOMpxR4Rnxk07Db0N\nbQ3FKkeCY5oZfdgQZzbBF8SCPrxv1AIyPQzrv7nM1KZvQlfpsEL609a4uAd8\nQgB4R559BmJa9SxBuqxf1Croze8EcVmAlbqgAYW2CT03VSHDsvscy8KLV1oe\nl2WfX5xSIZAu+7wWgnt+4/2X5A0geUDxs1TLhfpFNeLIdfNLoR4bt2HjZaTH\nohmW5JuCVQNuOhPH7c+qf6PmjWts10I+U89zvWlP2AXXYm5LTxr1o/FxFcse\nM6zWHNkUQFMIl19YJY2mGVCyprIGbNMYCgWi7kbww3MA3hzpMItrW6YIFktt\ntXxgY2fbbQK+LfLVRUDo+oADMPx1ksr7U6yWS8ZXS2T8XnnaGnFZoFQt4R3m\n6ImD\r\n=E71e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGiiyOKuVsv+79U717T/KxTi1X3F/5Qx1SlgRRo658vAAiAsDf1x0kgvSKTL/HMSvcBuTnwerdhlGvOLuOJxTpmVCA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.1.0-next.1573685258.e896dec01a3dba92500d17047e5566683d82b4c4_1573685259626_0.2679473652958013"},"_hasShrinkwrap":false},"5.1.0-next.1573739753.2045d6106f825ecdf6bdf798c30af54f2a6cb727":{"title":"Safe FS","name":"safefs","version":"5.1.0-next.1573739753.2045d6106f825ecdf6bdf798c30af54f2a6cb727","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12 || 13","browsers":false}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.2.1","eslint":"^6.6.0","eslint-config-bevry":"^1.2.1","eslint-config-prettier":"^6.5.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^3.2.0","prettier":"^1.19.1","projectz":"^1.9.0","rimraf":"3.0.0","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"2045d6106f825ecdf6bdf798c30af54f2a6cb727","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.1.0-next.1573739753.2045d6106f825ecdf6bdf798c30af54f2a6cb727","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-EzNlHruA5mATjOI8yv2Nee/kIsoWn0/wNPoeUjRtj3zekzKv+cHUTYLX3Vi2UxSKxwlJ1qBCrIaLBc5tyQXrYg==","shasum":"5bc3475691828d864147bd2c36b94b579650f62f","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.1.0-next.1573739753.2045d6106f825ecdf6bdf798c30af54f2a6cb727.tgz","fileCount":7,"unpackedSize":21865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzVzrCRA9TVsSAnZWagAA/SoP/igH/BAmrOzxXXdpz2lM\nD7WzvdqQAVFx1WglvQ0YkfjggJdK3iZ5lZaYQJn9cWeirFgX1cmRS6RKusee\nr0+9fp2fxdkvXyeYfxyxYgRKmY0ha+XGcLayqf9aq5VuMzz3px9VqmTanKQb\n9mVsHkHE0zE/5nSIIpZE0V3Z1nx1g9lz7LxC151T9BC8R2l194RM++elNGEN\nCzMwBZ02wmzn2BqjoTiVthAFE5q1YHjwNv0GflwJ5GTGGCo3PQ4Rpo3BPl6v\nP4Nb8aGlOR+2llaxEwJqUviJTuAQjQlotOe7o9/E62KCW10sdfiIsH+Rpmck\nXx2OXHVVIolAp7pgRt4XtV5X4rhbJYx+MzbfXoy0w9qXRyEyPG5/ToI/rYf5\ntd1fza8fzb/eZY1tHEn/K+gTqyFfVbpn5cUAIDnOgzR/bABftzX83aRfwAfn\nxZ7zzokoRh0FVdzZhMpPjiZcGsei9Fpqq9on1190ZzPijwXtce+QX49866S3\nxiKr6Lf9JjWdPNq1AwP/wrN+zSpVnp1kzPebMk1YNevvQVU6Ap5f02pWvHtU\nVUjItf/QmG36wIlLb+e/ECP9tj7HalC1gGaTncaaUhPnFD70SdHHu0te+yJD\n58IDTXgBpQ4L9cdfTdc+2CVLL2eu6spR9yt60E16uj4kIU2390MpJHpfE5Kn\n2Fqu\r\n=Daj5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGYIGL0uxLi6VKWPeJGGwWQYdckM7ZFiG7bdJ7LKwr/4AiEAwF9NzyyzWPNOEo0J1MZ/EEMp4hjx33ATT896U7r908U="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.1.0-next.1573739753.2045d6106f825ecdf6bdf798c30af54f2a6cb727_1573739755057_0.07658948958301814"},"_hasShrinkwrap":false},"5.2.0-next.1574057506.8a8f8a2cbbf9576f8abbba58cf52acb2b8be3c08":{"title":"Safe FS","name":"safefs","version":"5.2.0-next.1574057506.8a8f8a2cbbf9576f8abbba58cf52acb2b8be3c08","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"5.4.0","eslint":"^6.6.0","eslint-config-bevry":"^1.3.0","eslint-config-prettier":"^6.6.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"4.1.0","prettier":"^1.19.1","projectz":"^1.11.0","rimraf":"3.0.0","valid-directory":"^1.1.1"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"8a8f8a2cbbf9576f8abbba58cf52acb2b8be3c08","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://github.com/apps/dependabot-preview\">dependabot-preview[bot]</a> — <a href=\"https://github.com/bevry/safefs/commits?author=dependabot-preview[bot]\" title=\"View the GitHub contributions of dependabot-preview[bot] on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.2.0-next.1574057506.8a8f8a2cbbf9576f8abbba58cf52acb2b8be3c08","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-ij9rT+PZA1IskpTKXyMjd0BCMc5f+kh8/ugM6yzTrleQA/j+cmE+j3V7ytgzYgWXCae00ED8590qMHoWdx9RgQ==","shasum":"bdb828558ad74c5dedfaa3e225616b138fae448b","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.2.0-next.1574057506.8a8f8a2cbbf9576f8abbba58cf52acb2b8be3c08.tgz","fileCount":7,"unpackedSize":22394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0jYlCRA9TVsSAnZWagAAf5MP/3T29UN1V6uR5RMdEXO1\nv9B2dle3SWxX6qbcpio11D5qT1RiaU2d7x97peMiiMgm69W+stjC2iOaNgNt\nHiyUDus5e2Cb8taYISgHVu2x9SFGnypJmLKEdAqM538r4oChO5bLZfCXU+an\np6ubWBznYGznDER46mfLDmkLTGgBz5Uf1kG/48iEdjVMrEOvVaOsV8vVUiEc\nQvw/yd+WlACkw6MkxQ8+4dfXtjgLPeKrlxG+Y5gyE2Ie2Bx4uRtMTIp/Lc/h\nFHlVdXe/l0tDeLfb9L4q2GAxf4HlwGhUWtQ0nAnxb/erppJuFmt1q6n1SCEW\n1ECbuKlLF0DXAe1R2sxOLPR1j0R9jNbFpTJboL8HynK6x6FMC9wcen6FNcA9\nJGb/9zarOdjw/NrKVe4/1+kbYhsnRpxrufVC/rMbZVPsbDgseIsf5/xe3/bk\nQeSLMGve7aD6g811cD67DjUE67wc7gx6un/nUBr628P5N69JjJZ7IY76x0FV\n5BEOyCQGbKsp04oQEGdbA0a1Yl2xLQ0gmP+hF6uMjKAbyjLQRGN6sSlmrSV/\nEMDx1IhZBPJUPAYOyPQsAQu+rHmcy6wmd2zWcbTOmviNjxzw2/GeGgE/l2+/\ngDEFxSQe45AVCNrDCEQ6I63laDNDBLp/NMtxUo3i3fr1y3PwXvl56D7/lIe/\niqON\r\n=nJUf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCV59TiRayZVJQ7JjMTseVxHkx2GYSD79uaWZT6Y+QsbgIhAIkfhPTk5EBDJYderXEb84QAJUI9twzEQ2X7/54XYnWf"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.2.0-next.1574057506.8a8f8a2cbbf9576f8abbba58cf52acb2b8be3c08_1574057508543_0.24739583980612911"},"_hasShrinkwrap":false},"5.2.0":{"title":"Safe FS","name":"safefs","version":"5.2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"5.4.0","eslint":"^6.6.0","eslint-config-bevry":"^1.3.0","eslint-config-prettier":"^6.6.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"4.1.0","prettier":"^1.19.1","projectz":"^1.11.0","rimraf":"3.0.0","valid-directory":"^1.1.1"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"8a8f8a2cbbf9576f8abbba58cf52acb2b8be3c08","_id":"safefs@5.2.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-c5UbkGu/JNVOao87kYp3eJHi3IweRq5BeYsGEgL9U0fEE22tmNnFx1fNghaDBrN+/30HRo/e3hVJjL8hOyTNTw==","shasum":"cda656c52caf17c890222dcdb871aa5ce59ed168","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.2.0.tgz","fileCount":7,"unpackedSize":22337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0jZkCRA9TVsSAnZWagAAPnkQAJqPkbL0RAeKk1p/5l8q\n2WTuGQKIdFH7toWt/J/YfiSq8GmvIwpeUges1B7pLAT49FvSzQVnHazaIHzW\n5ui8popFErI2nxLPsvVgtEg7xEh1ri5OTTvwOwDy20KEWZoi4pDB1oVeIkCg\nXGbW5H6cmxyOyprRvP96fzQjne1Sc6zukBOmK+1pD/AFvdpzoJHk7vkyDf4B\nFTv4Qk/gxpaeIfLf3R31o3QmuA+uEnXqyHeH69qEgJqoUlBz9BHRuVLdtroh\n/6RjmhJtmApscjBpKVfV5+44otzwgvdks8yGFRBYSHuDy/UzKEKmwaHz4P6w\nHo5JHv3sJ3rrVf40IQyOXHQgDOBVY/xroen/u7/uU7QpWa/33Y/9EG2B2Ott\ntKvEompIHEbnH7CKndMkFHlVsP9OUL0ma3gT9MPqelaOtyAjWzgRwYBgmCHz\na1yFnaO8j8qWn1iyjfzzTb0Wj+sriQpX+KDCaBrFEvnfHTudIbsMv+WOoGOe\nUjViFIDolI42TyDZTTCnW+XFYF6tKMAh4ssp5L809dJTiIb/w28fnnNYUYAz\nDZAF1JsBMWN7kW52FrkI0aRbOesYmMIFogYhSJio86l/XXKyQ7wpVJ7hGRYu\n9gMPbXkoht24USguO+47Yx79ptCeGNVLg81y8AxRYUmUzydPibazt2TgaVZx\ngXqP\r\n=V8/z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfFjIH6JQ0fT1k7PpralhwjGopdrSlfyeO0IL8YmaP/AIgUFeMpvwD+crO673+RdmCcqXyd575XLZaI5OrWOCAYPg="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.2.0_1574057572453_0.009675234425545298"},"_hasShrinkwrap":false},"5.2.0-next.1574633707.9cddc12afc23d538d1ac8756e24c9e96a3e3be04":{"title":"Safe FS","name":"safefs","version":"5.2.0-next.1574633707.9cddc12afc23d538d1ac8756e24c9e96a3e3be04","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"5.4.0","eslint":"^6.6.0","eslint-config-bevry":"^1.3.0","eslint-config-prettier":"^6.6.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"4.1.0","prettier":"^1.19.1","projectz":"^1.11.0","rimraf":"3.0.0","valid-directory":"^1.1.1"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"9cddc12afc23d538d1ac8756e24c9e96a3e3be04","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://github.com/apps/dependabot-preview\">dependabot-preview[bot]</a> — <a href=\"https://github.com/bevry/safefs/commits?author=dependabot-preview[bot]\" title=\"View the GitHub contributions of dependabot-preview[bot] on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.2.0-next.1574633707.9cddc12afc23d538d1ac8756e24c9e96a3e3be04","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-F5w4m+nCuvH17Yhe5xA8yD69lj4YxZfS0e8K1vMcp1rdqRhngeAZnlu+nDzdVVJjZ4m6CGkP7LX1nneOm9YQgA==","shasum":"c489501f1cf174d8ffd09cedb042c6c49f20396e","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.2.0-next.1574633707.9cddc12afc23d538d1ac8756e24c9e96a3e3be04.tgz","fileCount":7,"unpackedSize":22394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd2wDtCRA9TVsSAnZWagAAKIcQAI0k5XzP4hQKJJmu9kSp\n1yHrGxrhgltvFEMg70COSynU43pDK26U0MDpUvtA+CovQgPu/9Uyp+yI9S7E\nlDBzlsdEk0f3FoT8ES6EIr3933+RsNr4TWJ+tJPHIHQlq3V1l1WwTIUJdkt2\nDY1rHGZQslQPXABUVzhp5bRYCfFtOp3+ZKWWDhd6Pj9078SMOkKV/SoLYUWL\n1UpPOwlf7XAH3Es9ZsAUdA1qOZIizKfTPoNorLJQHGa0e/N4Uix6YLtnWLUA\n5dUIeU0G0PIzV6v/QNnMdVRTBHpmgIaZ2aeArdFRs9wazW0G0o8nkZQJFRoQ\nvLu+upp61coRELiYhrKOUUaHfc6C5FffxP8lsZQz2WVBQLwpkBA2oGILYYC7\n6AelKkIEfz+W7EdMDFmavjMfdwI3erRWVIRmBVuTajuC4iFHnPuMGwAJ4wgz\n2GVaVKnsLe9Y9asn+k1mmiLof4PAt5RgIc0KXYqQXP6Jz3Bm7mXtQzwpntEr\n3DajxJT0OVvEOYI7eISJWeVx4Wtrm0SXqz3mlY01F6Y46dq3p20S59x5S67I\nIjgz4enda5+lgSplcTr73i7swgGMMSAqPrU4Y3imRouBZl676p5P1sTuWnjK\n/71zudIlq+sWghQyQtByAe2eJcru5mPZtDm/mUjE02CJv1tc/dEI52/eU7dM\nTR8K\r\n=zpEz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICF0IRIOIQVDGxt5JjEolXPw3TvL6nKbLoBJalNvzNQCAiAKseTHKqejLYN3MPr/Q65TxIWEjuUBGrxiGyX8rj224w=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.2.0-next.1574633707.9cddc12afc23d538d1ac8756e24c9e96a3e3be04_1574633708734_0.4054021914352637"},"_hasShrinkwrap":false},"5.2.0-next.1574654240.1459cd64923d56a05cd683906f5edb902f065fbc":{"title":"Safe FS","name":"safefs","version":"5.2.0-next.1574654240.1459cd64923d56a05cd683906f5edb902f065fbc","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"5.4.0","eslint":"^6.6.0","eslint-config-bevry":"^1.3.0","eslint-config-prettier":"^6.6.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"4.1.0","prettier":"^1.19.1","projectz":"^1.11.0","rimraf":"3.0.0","valid-directory":"^1.1.1"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"1459cd64923d56a05cd683906f5edb902f065fbc","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://github.com/apps/dependabot-preview\">dependabot-preview[bot]</a> — <a href=\"https://github.com/bevry/safefs/commits?author=dependabot-preview[bot]\" title=\"View the GitHub contributions of dependabot-preview[bot] on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.2.0-next.1574654240.1459cd64923d56a05cd683906f5edb902f065fbc","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-GBgdm3Fd4O7EBDlRDKZUKSmzKWLdMAZ9W/nb1gEn30zp55+2YPnIth4Me2DEOJ7h8JeAxKt32n6/p7ZWsZ26uw==","shasum":"14da0804bb24d8dc90d6417eebc2d6ce893d2193","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.2.0-next.1574654240.1459cd64923d56a05cd683906f5edb902f065fbc.tgz","fileCount":7,"unpackedSize":22394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd21EnCRA9TVsSAnZWagAAKqoP/i1DJp3eeQjzhDPcx86q\nA0QEDR9F+m0M3Vouh0W1LeOHQ4uAcIzC1Lz4FOhA41ZtpAfy0WX28TIHNplT\nT0sbH8raqhuhUKb5WmHHznwGEuVqQgC++fdYsDyMsWXvzbCyCnX0Lnl1UmdC\nx9NP3/KG5V1hr31wNMz1LD6ohLzzv3hKRM26d3Na4p6tsXZXTglKnsfM/mj3\nH8oKCexDmN7Z55cNIs8We2O8CgZfbLnzWO6XWKaoyHpFWoXuRYdTpykz0GLK\n+ymr1yVl5jqsMTM2H46wDmfQ3hi+9lp6N/OB7yea6SGDhWqViPl7G/XuK77Y\n/epg5p0E/FGq4s/4W5yJbO7iCvzaUx/oMpwz1oGNirhQF3VJ9uEnMdUiKPfd\npE++pxTAupQsJZCdWbJC7/79GiceH39i1hTBUGv2a9+j7/y0Vkatip1R2HTu\n4SHB1yxIdQzJj2mfGcUQtk0X9HAD44YYG8WO2P8WRCgMuvsX0/hf+sK1PjC2\nC/fwPM/mmmzy7RbepyQqi3L2c+S9t61MMiaNGKKuYnhtjonNq4l6azyCrl+X\nBTZ7eSDq9NIJXZcnvKwoNJZfkcp3hNDHS0Mi6uFf5f5YoG7FMUkYiqrjnczb\nLOT5mHwvuBrulv1+HABotz61sAe8rccWJLfI6Osikn9lRwBRDN2a2iwOSKHU\nb+TT\r\n=FnQr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCuI9nLpt7z6PVYMMNLILZRsiBzmqnNsmEPO6bpN4AMpAIhALxtJ4Nq/sPnfLyV14FGywAYJt5aKrl77dPOLZod0H5B"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.2.0-next.1574654240.1459cd64923d56a05cd683906f5edb902f065fbc_1574654246942_0.5027364497767326"},"_hasShrinkwrap":false},"5.3.0-next.1575154183.c64fb9fdb4c8d0329e549bcf55097ca3267c7366":{"title":"Safe FS","name":"safefs","version":"5.3.0-next.1575154183.c64fb9fdb4c8d0329e549bcf55097ca3267c7366","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.6.0","eslint":"^6.7.2","eslint-config-bevry":"^2.1.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.2.0","prettier":"^1.19.1","projectz":"^1.13.0","rimraf":"^3.0.0","valid-directory":"^1.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"c64fb9fdb4c8d0329e549bcf55097ca3267c7366","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://github.com/apps/dependabot-preview\">dependabot-preview[bot]</a> — <a href=\"https://github.com/bevry/safefs/commits?author=dependabot-preview[bot]\" title=\"View the GitHub contributions of dependabot-preview[bot] on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.3.0-next.1575154183.c64fb9fdb4c8d0329e549bcf55097ca3267c7366","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-7zDLduSqXfI6QVZbR3L7MvN+9/OhGDeP1uZ+N3ymbRASxVr3AeVWgiYTNk9CcILr26uuKCQkUUUkaAwiC8mvrA==","shasum":"e0ff04e686716b6ef1082871d2b649ecb31951f2","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.3.0-next.1575154183.c64fb9fdb4c8d0329e549bcf55097ca3267c7366.tgz","fileCount":7,"unpackedSize":22599,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4vIJCRA9TVsSAnZWagAA2dgP/iAJx1T7QVAJXHJIId1L\nt+iRb8HOrjht0vRUphfSU8zauV8XaeiEIhIgFce2ZU6/zi89vsHfcxIaTXgv\nioQllYzWWRLVpR8jN5ba8qO1F5ZbCnDPDtBQRFBKMRdcj8xGL9RgmOz4Ml6m\nu753FSnZPfmsTo69jPCJg6hU8q1b+d1cdTdBPU9I0HWnckHq3xhGKYDAJkxv\nSL/VOCJSsk4FnmcgpVm/qs4t+7Ae565LZQFCetXCClzx6cxLgsHOGcN1v4Jk\nUKnNIhp0ETf4I/9U1WUVTcDuhBF1OdflYe99UQFB4I6BL4hjODJzgWhGpU2C\nQ23/nMBzBQiWWhuXCAwH0qfu2e7RZjutO8A27pNrhC2wQ9hR1UUaSLi7ZzjJ\nmo9X6qG+nx4T7m/mv3kZcrp00XlSM0dYnmoYCKnKhiD9WOpA0bMPhBrnYyzs\nsjSlEMSeHxVFNHzKmVgVjYrWOlKRnJY+/InRrZDTr0boMGlEgx1vDRfjwnXU\n5hX8TGM3S3omlTwtSFk6PdgD76okRUoYgYSrPxU21g6rUSkPBfvBu7quCzzU\nPOEvwb5jXur6C/M1+zoPcuxki2L3BxtdY2O32BLvc76IcOD93DE24dcE2L6H\nfWziGOOHfF+5NOc/3H8jmDMvPhxuf0Oxc+hYhj7umolKa/L0tpsiXxZVgFJ7\njCek\r\n=IdIq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZ2MGf24fzty1Lp6KZ2jZ03jV1jdhFr583lnFILfmd8QIgYmd7DI+u/r2NDEY1qQyczsWzbn6DxY2jFqI9a/K2m+w="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.3.0-next.1575154183.c64fb9fdb4c8d0329e549bcf55097ca3267c7366_1575154185239_0.5104522053343206"},"_hasShrinkwrap":false},"5.3.0":{"title":"Safe FS","name":"safefs","version":"5.3.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.6.0","eslint":"^6.7.2","eslint-config-bevry":"^2.1.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.2.0","prettier":"^1.19.1","projectz":"^1.13.0","rimraf":"^3.0.0","valid-directory":"^1.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"c64fb9fdb4c8d0329e549bcf55097ca3267c7366","_id":"safefs@5.3.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-3YKi0DkVHZPY2ZVAt50CJy3fszK7nZh1oV31BT9XaXiod+EZD3XF9u3HGst+N5rYRTpWkZC/0B1pJcKKTRtgBA==","shasum":"550bf3d9921ea12d67822b474d882ca3eba61ab2","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.3.0.tgz","fileCount":7,"unpackedSize":22542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4vJOCRA9TVsSAnZWagAAixUP/0ePjJVoMym7lhymU8Kw\nkTgMbKb5XpYlKmy1v7+v+wnWVAY2TQPB2HbIWy3CYKqsdcleSmvAr9J20T1t\nA4277Ttp03Du2NklyhKF82IKJf6AHiKehYX9oKSawvv+7BD1KsAGpeJN2FsY\n1QFcmaC4CHFz/4gK/bsKnZ/sYAw3AIxqN/PpOCKE7lmvi5SPCU2Fz6eQH8b+\n3PmNoU2K2w04jL/yMFLAJNPHiNIGqVj62lUwXMOXJT1DdthfFcWoz0IAwoV1\nsAAuBftPrkpSKFw+dxJRlfWWnOaGWflUulROrBO3wIH9234ZwZBXsEDosIuc\nAwNlkcqVsgyh/05J0AAlOpAwe3UnYeXC43APtl2BUHI6hEjzVeHh+cIJExs7\nARfHPWTvbxxbJBr16bfN4U0VzA/cDrzKDL52olbtmLKItGYQUmSHlHFxKqZZ\nONUpLamBZTkiNi7p4mniZkVoGitE/q7B7hupPejRZh23ewFAG1ysD1yEMS/1\nQc9hm6NMY7lBKPRzjFIM1uwNgG8UpwM1fAdykVKGZTRHpItllttu77tUE7dK\n2vKhmTxCfgwxN0woEBAxIU5n7yHBaU3dcsZJbMAZcxtmX/aX/Z63nUindpTL\nEZtJJnDsMxkm5PrVLkYk3L+o44kSv6KVIYSJ5zZmNmxWqqqk8cV02R84QB6D\nBFKf\r\n=wjPu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmDHZj5tz87AFYG5SQZA8l9iawM5IZCJla9cG9yVSwiAIgH73ReA6GHoK8YO0iMFgedLTBuOMeGBq/ovgle5yUs4M="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.3.0_1575154253735_0.14394022546565433"},"_hasShrinkwrap":false},"5.4.0-next.1575218787.6a7dd47c160a9588cdb05bf65a88b3d2dfecec19":{"title":"Safe FS","name":"safefs","version":"5.4.0-next.1575218787.6a7dd47c160a9588cdb05bf65a88b3d2dfecec19","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.7.0","eslint":"^6.7.2","eslint-config-bevry":"^2.2.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.2.0","prettier":"^1.19.1","projectz":"^1.13.0","rimraf":"^3.0.0","valid-directory":"^1.4.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"6a7dd47c160a9588cdb05bf65a88b3d2dfecec19","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://github.com/apps/dependabot-preview\">dependabot-preview[bot]</a> — <a href=\"https://github.com/bevry/safefs/commits?author=dependabot-preview[bot]\" title=\"View the GitHub contributions of dependabot-preview[bot] on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.4.0-next.1575218787.6a7dd47c160a9588cdb05bf65a88b3d2dfecec19","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-y3O1WtmHcp+Q0ywXhZ/ZaDTUEodACbxw4OfbAcDtDCqS6oeaVc/SOC+J/97r7Qd+8Ko6YZP+Bn1FUKK+RIaUjg==","shasum":"037dfddc317403d7655bda792eb5f09ab4fed743","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.4.0-next.1575218787.6a7dd47c160a9588cdb05bf65a88b3d2dfecec19.tgz","fileCount":7,"unpackedSize":22804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4+5lCRA9TVsSAnZWagAAGFEP/1B/VrDGyXdBDLXLXTeF\nuPT2KqaWHqjkK952dUjqL5PDDw4YfrWeTl80kn0fS1ylsTgqmzyoIXYN5JIo\nH5uB1+JtqPKGp35z/4tefgsUoGuU7EalPAKs3wIOKapQW9wGvf6zi6oLxSAa\nynUo241DZ+ZTgDl4RguZqZq3jVBLd2QdmprvBms3gFrCZDmuZ/+3t6tReeqS\na4AvS2t5ADKyHWKcCnu76kswJILWIOcGK4E3/aaLoC/nh8kIDPD5cWQTLUdS\njIIzkZ74TTKEtbQA2tjsKBe78V2FmNCU6JFcIxpLr9lxL74/uVUZe4lyI6ki\nQFtQei6Zz9UMXPQfJ4VPAyzGSf6JjQoDGXLkcnayoV6TJL4SwvpAI7XJqNN7\nvQHyiP337kUyXBTirrIh1DBW0r4jf4JmnoyZrSGaEU+lvJp2J1x2q+LxM3qY\nYRnRHGrKrbrKpWPpJisU8J76ImNTxisG8VJwPLaCA6GgJuVEkXVqabPMEvcE\ncZ06TfqnrRu5oA3d8ecv+8eqq6zDeLqMh/ruGqqsaL5D89Du70B3HuUTM3Hu\nRVgwp+erxvdqDDg1axh++yYLN7M5C1gTcGmSZwLZ9scwouLfEhZ1f4Csr3j6\ndCTZJN7pKjivKoHxcXP2JOcnkdoH2q5oo/IojT1SIhz5L9alQBLE1sQS8NTE\ndQwn\r\n=0pR/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGP4bMj5bXobd1xCFKY6U0F/W79ZNDeNP8JZ2RectKaVAiBKbLO+K3zZyCBFBxEv45jxmvrW0Q7eLJlFtriQ6QKi9A=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.4.0-next.1575218787.6a7dd47c160a9588cdb05bf65a88b3d2dfecec19_1575218789168_0.9398824284258123"},"_hasShrinkwrap":false},"5.4.0":{"title":"Safe FS","name":"safefs","version":"5.4.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.7.0","eslint":"^6.7.2","eslint-config-bevry":"^2.2.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.2.0","prettier":"^1.19.1","projectz":"^1.13.0","rimraf":"^3.0.0","valid-directory":"^1.4.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"6a7dd47c160a9588cdb05bf65a88b3d2dfecec19","_id":"safefs@5.4.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-GPtiWfschsrHy6FOmBiJV1WyKQfAkFcW/HsxCqZDGOOH2h87Rx9+qPnpdBhIfleDtJOrSAuYJFCumaq/PAt/jg==","shasum":"14c9b91d4e99548998a25dcf056170141f1a653a","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.4.0.tgz","fileCount":7,"unpackedSize":22747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4+6DCRA9TVsSAnZWagAAQWAP/0ruMK3CDOdO8RzM/6Fw\n/2P6pXK8lW9mABJM+NY9WX2QFr6CAiErAMxZQa5C2MeOoEfno2g9U8iHIxPr\n86fPPk21TCThZe2nGBoZ8glv86+emHTmu2RPeaUvX5sLULXk6TSaYeMtsyal\ntf+4n5+uIxk+p6MTKxRAHRl+YiX62Q2WwaIHt1VhEjxoeDwdsQ237qtDBxaK\nL69sESBkUFo1U/DGzeQ312BKjGwBiJNmPCnXq1/jJW/teRVIFQZUCRIDrYm4\nBPvWo2LynmZ+NK0MtIssFhdwTOlOhZitpS+C007T7c6Aa7ZDybqewjmpIMjE\nT/bsAnxSTiraM/mreB7N9RZV+rwmj3008T49WvBMNCV7MNkt8GIdszOY2OSE\nxWYqFZUSKxGoOD8E2RaHvlXNf3VUFKNGBzCRpHPNwHbxIsVG7l/bMBXxgHI3\njUtnxEA+lNOuGaZ19USiHgxtIqVFh93+247+Dgr6QlikUWlnJX++S3tMeRcC\n1bncwhfdgKBydR7FeFXV0RAL0lk1pnbMD2sPf9Ch9JhXy8uy5hIfCaYyYsby\n7R7dqN2oW618LV6CxaHjDVABj8vNb1dDnNKogaHdWbcVVvGr1OahuVEVtIgl\ntP9lrxap+SWhk8a4+NpiOqcaCnbFCPp0iDce02C3kNwLDi2N1skSSR7s1eww\nuEkA\r\n=TgZg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDCdz1J5tw3Y1O3J+GBg1DU82xMccKYrWI5/kjUx2vq5AiBEH7qKk2CUOfeQu2Opr88dQgPBswpj4KiQxv3UY7xuug=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.4.0_1575218818593_0.6212072918684666"},"_hasShrinkwrap":false},"5.5.0-next.1575918587.08414f820d713e7033963a17b6d90d84740e276b":{"title":"Safe FS","name":"safefs","version":"5.5.0-next.1575918587.08414f820d713e7033963a17b6d90d84740e276b","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.8.0","eslint":"^6.7.2","eslint-config-bevry":"^2.3.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.4.0","prettier":"^1.19.1","projectz":"^1.16.0","rimraf":"^3.0.0","valid-directory":"^1.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"08414f820d713e7033963a17b6d90d84740e276b","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://github.com/apps/dependabot-preview\">dependabot-preview[bot]</a> — <a href=\"https://github.com/bevry/safefs/commits?author=dependabot-preview[bot]\" title=\"View the GitHub contributions of dependabot-preview[bot] on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.5.0-next.1575918587.08414f820d713e7033963a17b6d90d84740e276b","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-+GvDdUC9KfsTPvDmzPKqNMmw8QhTf/WPSPjW+kPa3BTDk422UHy03ls0ZhHJR3YdqzT8S45J2h0LkJF3fQUAqQ==","shasum":"9fd65016f2e9e22a4fc0486a21a92bc473505181","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.5.0-next.1575918587.08414f820d713e7033963a17b6d90d84740e276b.tgz","fileCount":7,"unpackedSize":23647,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7pv8CRA9TVsSAnZWagAAWEoQAIu8zLwW2Sn3ecbPwlCi\nreHgZX927y8J6eWUZwA9eS7cV0/2CiWLUY2rKx4OMX7VsD63LsDLDB1QrEwv\nk6pwdUE831J7HLrPeewibFS/D9iQeMKzGCYIxhB/Ysa42WyemsXinoy+ZPoI\nnthX3d+svFXw8YVTTVOGZ8QGXaBAsIzHM5k+AiUhEH69pmkHnS3+/9ceTgIx\netmlM9P+sLDrl8GEm75YoWkdsRypiETmoOlIg3dDUXHZtcELYhoVk2hqrCcq\npe6U7nlMOZoau48pI/+kXB8WR2YLJWl/EknzSJHyKSiO36WJy0Jj2rHlb9eR\nWuGheVBNyyXxKYxmfz2iI884BhOOLlBA2PDvVgVFf+GZimV13kUefpe6T5FG\n7E3Repiax4mbi5+RLNrRXwRvqTsgivujG/eeB871P9q2tKY/6PIPfHQVkWnm\nT0Xcyosm0D7NLCio0JwNV399+XWiAaFRnbiwgbhiGu3Jm9qSERBfPFxOzfQN\nkSalMrDmk5fGzwl0kKCFzKfntRH+G0WYaQgEjZumcobRjDdcvP54zelteRgn\nwwYbIDVQfqcS2MHozj0Wzo45j0bIYcMcD4g7KCCze0t3+/f02ybYQCnk7Jtx\nji00UWCOd2pwC6eftNf5bDmcKaDrkg8Maui0LLWOD2tN2oGfWy4WaoZVKN/9\nvjxQ\r\n=qzP3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFPaw/OO2mAfPoOic6Fv7BSSmGAuNhipeWRwWgP+4vakAiEA23n7N47+uycxdOyYiaduGIn/y8S7rvSAUa+pfNrdiZA="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.5.0-next.1575918587.08414f820d713e7033963a17b6d90d84740e276b_1575918588523_0.25984221501594806"},"_hasShrinkwrap":false},"5.5.0":{"title":"Safe FS","name":"safefs","version":"5.5.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.8.0","eslint":"^6.7.2","eslint-config-bevry":"^2.3.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.4.0","prettier":"^1.19.1","projectz":"^1.16.0","rimraf":"^3.0.0","valid-directory":"^1.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"08414f820d713e7033963a17b6d90d84740e276b","_id":"safefs@5.5.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-I8wa7h8Z9OpyULYkEiQoUEtAvPOlsvmYSmD2PD0hVUs4Hhr5BHor8NDSg3qWikIba0+yz3xww0IrLvzCstYVFQ==","shasum":"17506b894542c592b33379578177bbab9f06c085","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.5.0.tgz","fileCount":7,"unpackedSize":23590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7pwvCRA9TVsSAnZWagAANiMP/3SRYCuu8S8o+hA4hpgm\n8Lo4mbcbXL0vbdkxdDq8Vk0CMRoS9P0C7nOpQeqWUzKZDOt+RBePzvNm5m+/\nSnun4mqOtX6SJZ3SzM2z2mnUGxhm7RT8trZNwTdyWoClGYet20rC2qNAsG2H\n7ur1Y/bxqFc6r131o8rbEBIf02muPdWpk/47eGrEZeZCp0xZeDjooHeWbmf6\n8zbNdMLvJLnXKzYnG9VhQu0rjjp4KXAJ7Ce1UYUN507bZ6sKUEuKDgXx7pqu\n9l0rDoyIwNU5V8/S4LBJujgSMihc/DGQR8SCzRSsAIkfkJ3f7DZWAkVRU+lP\naNjR+tvo7S7pte5Mw8wxRQW7X53PW5uBr3eU4ycmZZGs7T0FdiuMtbAgd+iT\nJa1V621L0Ux2EVM4iJ3MS3T2/BgnTwfXd2exC6Db+BolUP8m8UPxNM7yXjhN\nV27DA0T3Xk3ibxpcvjKDag7l6FmztOzJR0LEkPZLUq2/ajTLyoqUbyrq2QIl\nN/winYVelbSTenP/moe4rX8LeTXF9QDNbM7de3fDbsqPn/FS9GZlwlxxp6kl\nkcmXbXippdDw2yezpqEAKLJYJKJJ97JE+U6y6mdr9eoQIyZiA7Wg1bMzfqAu\nL6n7InE71i4ViTiiQWWegBe3To1wKZ0u5U5DzgFHF+8FFinS0Zo9dnct8I9F\niC1u\r\n=PzKG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhR5tt8VRroGV0tuuCWCfzaCKjxWF3zh1KY8QDq9S12QIhANFZoCAvPYfC6k8YRTf/KaTzg/hiakNDVJ7hTsa6G2rF"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.5.0_1575918639187_0.6195591406933085"},"_hasShrinkwrap":false},"5.5.0-next.1584138081.0ff57bda4005b1e8f702a7e50b8f9114fe3f70c5":{"title":"Safe FS","name":"safefs","version":"5.5.0-next.1584138081.0ff57bda4005b1e8f702a7e50b8f9114fe3f70c5","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["fs","path","openFile","closeFile","emfile"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"http://balupton.com"},{"name":"James Gill","url":"http://www.linkedin.com/in/jagill/"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"http://seanfridman.com"},{"name":"Kyle Robinson Young","url":"http://dontkry.com"},{"name":"dependabot-preview[bot]","url":"http://github.com/apps/dependabot-preview"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=8"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.3"},"devDependencies":{"assert-helpers":"^5.8.0","eslint":"^6.7.2","eslint-config-bevry":"^2.3.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.4.0","prettier":"^1.19.1","projectz":"^1.16.0","rimraf":"^3.0.0","valid-directory":"^1.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:projectz","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"0ff57bda4005b1e8f702a7e50b8f9114fe3f70c5","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Require: <code>require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is esnext source code with require for modules</li></ul>\n\n<p>Environments older than Node.js v8 may need <a href=\"https://babeljs.io/docs/usage/polyfill/\" title=\"A polyfill that emulates missing ECMAScript environment features\">Babel's Polyfill</a> or something similar.</p>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n``` javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n- `appendFile(path, data, options?, next)` -  ensure the full path exists before writing to it\n- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n- `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n- `getParentPathSync(path)` - returns the parent directory of the path\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://www.linkedin.com/in/jagill/\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://seanfridman.com\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://dontkry.com\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"http://github.com/apps/dependabot-preview\">dependabot-preview[bot]</a> — <a href=\"https://github.com/bevry/safefs/commits?author=dependabot-preview[bot]\" title=\"View the GitHub contributions of dependabot-preview[bot] on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"http://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@5.5.0-next.1584138081.0ff57bda4005b1e8f702a7e50b8f9114fe3f70c5","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-KBwFhBgidSfQejvYI5Y9gdzV1ggD8uZ3uWob3LhTkeg0a1fO7fkEbwIANPa7r7uLWk4OAqZaqRLZv4JciJCPzA==","shasum":"3e2ae5c6329473945dbfca4fb792210f734241f1","tarball":"https://registry.npmjs.org/safefs/-/safefs-5.5.0-next.1584138081.0ff57bda4005b1e8f702a7e50b8f9114fe3f70c5.tgz","fileCount":7,"unpackedSize":23647,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJebAdjCRA9TVsSAnZWagAAMgsQAJQvyCdXO0scfO0vY7tY\nTrqhylucwu7ioJeORWWdcCYxMl0M73BSD0aBRVa2ZkWmmNiFkTyjn93Mi5xb\nwUqDuzoloioOnhogaeEuHLlCOwZsd2MhWe9pi+SW962FhYqZPAANzWQUxyqo\nGLut/+XYD47gc/WTJDqFN9QOtguIwTJs33JLSc+x6/Wurmh9OG2woTLuD7z6\nS3vsz34d/BFU35HxdhEg4unA/yRLLaDhCUEMYMjV3UGU43qd49Y02DawJWJv\nvOQwvF8QvVZehIqodtMYLwaqPs7qvYD2wlmRG+VNFlCObflQI2fDDh/lm8YN\nRQQcweW3VomQYOo1oO8ebfTcKkjx8kA40629nh+2GDLQaaQm1ToUHVmYE7is\nXezwl5vYzcFkkn2Ven+Az7nkBR1fVoyXWvvAnByDezu4xSkoXRxJcfUrE5rd\nvzjaYf0A0ygjUwUtd9NrkGwEhfUV1jebLfKfWVZiL1VqVWF8hIOyEQlhLr/L\naXeVnUENIksjtTtt3GIrEkQ/IfYy+Bxw3+DMoUmS7z57d4BSCpW1MAQ2jHgq\npZtiv1eyxwnnuNZ8x9tUrWbx5EzBVWoJXPdG8hQ7cWOi3MnMXUui6PGkgPtS\nPGbOH9yx6IUTLDB4bTWY/IIPoyVXE+7tUAqeHEHuTOoHg5hiplBAISiN2Yns\nNHzU\r\n=fu+m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDu4MGtlVNCtaDUD5yDGeFdAjPHX/TkJ9bSJqMXL5rxDgIhAK68acA7cPcMwQaXfwS4sBtAepiAifYIup7MbBLA0vNX"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_5.5.0-next.1584138081.0ff57bda4005b1e8f702a7e50b8f9114fe3f70c5_1584138082620_0.2423325920280921"},"_hasShrinkwrap":false},"6.0.0-next.1589186247.0d4291354de51adc4abae6ebbf34c6e4104b12e2":{"title":"Safe FS","name":"safefs","version":"6.0.0-next.1589186247.0d4291354de51adc4abae6ebbf34c6e4104b12e2","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.4.0","assert-helpers":"^6.2.0","eslint":"^7.0.0","eslint-config-bevry":"^3.4.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.0.0","prettier":"^2.0.5","projectz":"^2.1.0","rimraf":"^3.0.2","valid-directory":"^1.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"npx @bevry/update-contributors","our:meta:projectz":"npx projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"npx eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"npx prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"0d4291354de51adc4abae6ebbf34c6e4104b12e2","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.0.0-next.1589186247.0d4291354de51adc4abae6ebbf34c6e4104b12e2","_nodeVersion":"14.2.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-lN4eD1ntsLliUQXX1g3nkluA+H7/Ys4zhlsAkJJVZEQY0FscwIKpt+B8qttlj7XA0wq+QuGZijhffKAFBcb84g==","shasum":"8071bd8837c3312655d483d0d0a7ada39a1dc165","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.0.0-next.1589186247.0d4291354de51adc4abae6ebbf34c6e4104b12e2.tgz","fileCount":6,"unpackedSize":23995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuQ7JCRA9TVsSAnZWagAA4cIP/j5dXcDGEIcDLMXifhUu\n710CKUH5RwiwlGLCwa6VSyeuVj1ztJSiv31PeagFoWz7vXyPVdwr8D7xnMlb\nKSGHY1NOwIB6jAQL9vi3F9VNBpORnehxd+ZR+DTs4jUG3GCjhcX/SfJGTwd5\noPnYb/ObGMB2D36AFyEcbfdvQJvhVuhb7TBHQH7pQcnjDWiPYbeCMt/4r18g\nIj7Z2CBeSGIgG5cw+Zqmc0M1ZQQhCPSv5X/LkHRYxJhhlB1VEajkQsHXLsMt\nzRQok6Q6us0RzG15EJmlnNEX25pjRN74rmPxwPh5wUqpHr58SuIoSL+2hzy2\nfobXefKT0hgN6SUXGpDxzPGohHMFBmRMKJV9mwTqaEfmk594/Etj47to6IcQ\nE0xsrr7L++O+G7BgNEIRwr4FRCqzaYmuNXLcVBpDzJjvE2limZRZPTNTRFcb\nBdMW41QyAxg+6CicmGUKlJg6uem1EEzJuKx1reOv/JlNKkZgrg3b6pTNDIRI\n66bdRct4HOGEI+BtkroMHzPYB7hE1weRF7QETr1J77YrpoDhEneElbRLU5d9\nBwHsJPTyfOdNGZVTQwX9PbTVCGjIHIuX6/sbh2S4kJaGHjyAo+KS0RbIs8w4\nafCkcTIyyLkEOXOrAHXhB2kbjHnVCp5I17DhDkHkmrh+G7Tv9z2jL2vVlKBz\nTcEw\r\n=YXk7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFsKRHAa3dxKP4eN9+Nh9YEaYniIC17Y+W2JZ8uzlmIfAiEA+csgS4kEBoGSYnU4CnLj4iqlpULCYJbyl6cEBnrqptg="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.0.0-next.1589186247.0d4291354de51adc4abae6ebbf34c6e4104b12e2_1589186248731_0.2531196053599727"},"_hasShrinkwrap":false},"6.0.0":{"title":"Safe FS","name":"safefs","version":"6.0.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.4.0","assert-helpers":"^6.2.0","eslint":"^7.0.0","eslint-config-bevry":"^3.4.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.0.0","prettier":"^2.0.5","projectz":"^2.1.0","rimraf":"^3.0.2","valid-directory":"^1.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"npx @bevry/update-contributors","our:meta:projectz":"npx projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"npx valid-directory","our:verify:eslint":"npx eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"npx prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"0d4291354de51adc4abae6ebbf34c6e4104b12e2","_id":"safefs@6.0.0","_nodeVersion":"14.2.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-gzb5uX9VSe+x5rfgAmGZc7Wbt5bsI4ZMXpVJvnF+ewrDfQxXjZbJE/+kqbje84LJWaEkVyN1vrvzzy/6flgztQ==","shasum":"acdab538eb43e27cfda433f40682319ca448cadb","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.0.0.tgz","fileCount":6,"unpackedSize":23938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuQ8OCRA9TVsSAnZWagAASFQP/R0rnvKQ+DUTeTw532dy\nIYgAi9f+g9JH4zowDEcuIZHbNT1mtNhO6SKQvNzkbwwlfANdWq7/IRrqH2VS\n9C4a2CDmgmsP11lf4k+/TRfyw9GVonGjSqV+b+MMwvyyEQ8DISjjg4+vZ9bx\n8v7qNlYw4towIWkvzZBvkZ3P1233sqLDMyc8MJI8BWVskRib4RGWaDPTgXhG\nqfXZ5su8KE5Z5owi32MJf4YFyhXYc1n9a3CnjEx4fO8sSw1JJqAeDHiHER3N\nOkgSehEhvINOH4VgMivn9KhALmyT9bBSqdV/o/kPBfSJ0Ub2ot74bVXI62yD\nLhrXCH5d7G24WsOFCKVRR1ZiXyIIWWvlhxNzKjdqLCvCevLgm6k6wsHXfhwV\nQ3cfTyhjAhWLy/SHzWXdxX6i5ClFHoAlg3LV2HLBBIfWXatnnNcpd+cXquf0\n2M6wtMDMKVm0UEN1bEI2AavBWQtula+/SV31gd+kYmJntWGxil+MAw8hjZIT\nCXqUXKqAnvDoT1KiKS5fEdLoHyiMEVEBGaBeWoF8nLbjMemsJTk/I6h+Hma4\nwuyYTvGVZEeFBgrNpcjpd87JO0xkvHo2sAIsVkdv0crSXhcQOAw6i3d7Zcan\nk8MNPpmdj08zNeyrv7fjMJGYZWvvIfZ31iL363OC7W2LO2OOFdcWvLoJKZP9\nZqBb\r\n=7YBZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBtFL+r3s0GBMVmQAyVtflLjqJrkOqMLP2LYVkqlqftfAiEArLhVAgMLjGbE4AKoBD5JBrYUKvewpUTewU6aFFXLdR0="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.0.0_1589186318208_0.9373623141379686"},"_hasShrinkwrap":false},"6.1.0-next.1590008467.4f65c6e5bc3f80ae216e63dffacfd5b061558b4b":{"title":"Safe FS","name":"safefs","version":"6.1.0-next.1590008467.4f65c6e5bc3f80ae216e63dffacfd5b061558b4b","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.5.0","assert-helpers":"^6.4.0","eslint":"^7.0.0","eslint-config-bevry":"^3.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.1.0","prettier":"^2.0.5","projectz":"^2.2.0","rimraf":"^3.0.2","valid-directory":"^1.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"4f65c6e5bc3f80ae216e63dffacfd5b061558b4b","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.1.0-next.1590008467.4f65c6e5bc3f80ae216e63dffacfd5b061558b4b","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-YXI7UjX9LRfOKfU7H9QGMduvhgQ+XhU1y3qY8BJT0rx20QS/6wwc8JdC7b2EEZkdq5KRMLRHy33BtF9fxRxLBg==","shasum":"b4bbddfc4b3bea1959c9dafc38110a9a057fa010","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.1.0-next.1590008467.4f65c6e5bc3f80ae216e63dffacfd5b061558b4b.tgz","fileCount":6,"unpackedSize":24161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexZqUCRA9TVsSAnZWagAAB4MP/Ao93MfcdWHrQYsd9sQv\noHpSXK1sska6aUh3Sob4lk8lpUZ/aruIiJvlplJr8S0fs7Y+xBoUwvTeLRFV\nilXJrhf03scmMHLuI/RVvBAaab3DxrvD2hkAD6Fxdavzlljo2qaMwnYeeavx\no7R3UdUtHwf0D9wJvxb8czrkcTK+hFvmX4OiqT25Ak1bgT9o0SYr/j5h/5gW\nZmWq6KhkFPTbq2RhqxZLPa4QbhUnhcN80FHNowj47li2euCelfR4PogG1O/t\n+vb5oztyyKJpHsvVBIh30dIjrj/uu2KN6bIvGxxIfQu05hohLdomcTpNqHi7\nhIPMmLDa3Fy6NsB1qqxC5WFmL/zTehzYiwOBZdiKXf50AbYbvWu9Ghd+PR7y\norZeH86urC5WmbWuAGaiASMrXJymPOfNzBRqSTQOAJWOrqSPSdDTunpCAWsU\n8f3+8Ou6FqnhCarov+6OxdkQxXmyLIQQlM7ElnWWmoV/zwp4I6S9CV+iNs8t\nkD31nYnLYd2ZTDtPoZsz8iVu4fH2ynogZNR2WhrdMHYrRFA7jEG9Z2VGFSgH\nx3N03/Zjp/QOL1b/6UNmgkdDbY/8Y7wp9lz+5+HLFEiIxmij5YndQ9q0j7/H\nFPPAxO58gG6Nd8h2hOhDQiSEBT8nR3aV782eV8OPGVf8w4ufGybRaUd3O40Y\nuxgC\r\n=V1jf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrLPIlFibmy0V3UkqBgmsX2X9bL+nXsVA8PCspVKKMbQIgczTxi0cnoW5QqXxXtoWe4hmMi+C6H4IXTGKbN8WHFCM="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.1.0-next.1590008467.4f65c6e5bc3f80ae216e63dffacfd5b061558b4b_1590008468371_0.3549929765799811"},"_hasShrinkwrap":false},"6.1.0":{"title":"Safe FS","name":"safefs","version":"6.1.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.5.0","assert-helpers":"^6.4.0","eslint":"^7.0.0","eslint-config-bevry":"^3.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.1.0","prettier":"^2.0.5","projectz":"^2.2.0","rimraf":"^3.0.2","valid-directory":"^1.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"4f65c6e5bc3f80ae216e63dffacfd5b061558b4b","_id":"safefs@6.1.0","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-d8PaLN/E3E5ntxV3+MNigKU+er1XZ6oNftbLRY1g38/NHAztEAxSWwuYUYJXSO7yGug/0MgvciTmhilNbpWPGg==","shasum":"bdb4a115044fa4b87e3fb158aefc473b33cd561d","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.1.0.tgz","fileCount":6,"unpackedSize":24104,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexZrLCRA9TVsSAnZWagAA/8kP/jVAR9DqmGMPHXYequzD\nxFuP2nap48wN6av7TDrs7+40vij47Hm3MXadWTwgPeHUSweU2Wil1CHJQSyV\nmtCdEQg1EgEs+gGsGKVuR6zQsZM1eMP9hhknUn0MxOgLzxKwTNz3X7g/wCIa\n7G/nLw1wl/wHbkCaJXb7vi2x8xA1He7QF/E/0UExDm6JtDSASg2XzXlWy1Fq\nIODyGtAwTlknC+UZUaiRfxuDqnL5U72sJ+b5fbFKThIqEOF34vTg6bPa8Tu7\npmVS2NHmtNOGqzvAfpLQhHpJJQZkqAw5vqI/lsLVo3w9wyb/+zSOx/pGEL+X\nPYB8egiTLY+zY2Kvn/q3q1m9hl+KG0koN87nR6dFk6LuUtqT3XrfUOLWsmtP\n/itYeWevAfOaM+sKo6vVObl7xHy9y43UaiMtuNJaRG+P4b3C2oSaOz2AIG3A\nf9NrnRuuNWnSViHrDprEwFo6bedMmxgByjJ0kQlJl02BcfNkmtnHAfO//RuL\nxVVgSL28ntVzJBmiR9mfr4gEb6mLlqw0NhkdwTus5ZnbuONAHpt9LfGeH8sL\n2RsoGMiMmLEJVWDUZb7QawPIBOxuEKOvlc1xyXXmahXfCRblY7MQ0VwF8Lgl\nOU+bi4c4TZ41Wengd285Mf8ntSChfUHBPnNeSzrceqsqets+7tJa19veD4cv\na3MD\r\n=2sQg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbjgwFzAPx7xvw40CRdJjeVaR1cSvXMH7p6VhTPp1SngIhAP8OuKWeW5PnLHlyP+ZTj29xN14MGzbRfYOwaVB19ezU"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.1.0_1590008523332_0.7796779493796153"},"_hasShrinkwrap":false},"6.2.0-next.1590064065.336549bb5a49b01eb6bfae65e0ab27928c6b6c14":{"title":"Safe FS","name":"safefs","version":"6.2.0-next.1590064065.336549bb5a49b01eb6bfae65e0ab27928c6b6c14","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.6.0","assert-helpers":"^6.5.0","eslint":"^7.0.0","eslint-config-bevry":"^3.6.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.2.0","prettier":"^2.0.5","projectz":"^2.3.0","rimraf":"^3.0.2","valid-directory":"^2.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"336549bb5a49b01eb6bfae65e0ab27928c6b6c14","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.2.0-next.1590064065.336549bb5a49b01eb6bfae65e0ab27928c6b6c14","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ltUTalXQTJqlJUwNAXzZ2fwXkNg+q2LJMtK/gEJo4BlFKoEUHzkan9Kiy9bK//FRYazNzCg3sVCnp/6uCFNI3w==","shasum":"8599e94e0d83f7fa73d65736d9b61e4839478c32","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.2.0-next.1590064065.336549bb5a49b01eb6bfae65e0ab27928c6b6c14.tgz","fileCount":6,"unpackedSize":24354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexnPDCRA9TVsSAnZWagAAG/kQAKMm7xWQXisLqXuzVPRv\nUb8UPI+TmIoxw6fOPqzRuu4F+tURoxkxQxEaamK62UlC8YtSn4ofj0nrmU2T\njnAN+MWM/wPwwc9r6h3RT/hvDTSCfXYSplirREFqw7heOOO3mPX2r2poz63k\n+8qw5uTS8rFwxUbsv2lJk/IiE7MVoU3jMCoEROeKGfOBegQmL73IlpNfOeLc\nDOgeKNTEtI3CZ7VVHEcv7wI/BiBQF/STesbVq/ztKN58fnk0U/mhmBhzzfWn\nLt3m23O6Tv9gTTrPQ+uj92EjJsWyQUSiQo9OHisF/xoAB8GhDC2ygmeOibiW\ntrNQTbmYcFWjwe4e8Ej7sOC/R77GqD9EhStmxOMafOIyNp2jyplKFo8UrWHq\nqAEt4Ch+q4Rnj7LDMZGt016y1Q4amhTEKv5q0wR5e9cT7mpU1p3xNkRWDe4F\n8+hAHafpnaQig7lMokAP6AoxbKXG/XaniweNWmeUu+0QGJOUFRpm0EOa22r5\njuMYjcfNRvgUStDux3Awzkk6Q+dJ5j6XWiaZq+yIOhyVw7ZO4uOuJQw7dktA\nciPrrV9F55LiNrSa5x/RNVaZ80kC5iR2ZF7Isn76iMxLw4VvP5M6ljeG8ILs\nYD8ooTdy27gM6vZVXADUxc9mTz/OnEtAPeDwdU7ipU0sI/xnHrm63+WUie26\nPDvx\r\n=A/iR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0a05BlHueGi5TF+WMBDuNrHMPAwkTJYuEJHla/R6gNwIgSIeS7M83N2iW+saFDgbKwu67nc5d/7f1DuI24zm3oGE="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.2.0-next.1590064065.336549bb5a49b01eb6bfae65e0ab27928c6b6c14_1590064066979_0.2919421287213415"},"_hasShrinkwrap":false},"6.2.0":{"title":"Safe FS","name":"safefs","version":"6.2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.6.0","assert-helpers":"^6.5.0","eslint":"^7.0.0","eslint-config-bevry":"^3.6.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.2.0","prettier":"^2.0.5","projectz":"^2.3.0","rimraf":"^3.0.2","valid-directory":"^2.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"336549bb5a49b01eb6bfae65e0ab27928c6b6c14","_id":"safefs@6.2.0","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-diU5MOGgO53NdSAmKiaXkf360hFuIWy/1GOQrT8JPTuu1vyhX00bs9j12SooKSrZQRoqo3KMHHIDSPlZki2Blw==","shasum":"c118190047d0ac058500750bcee92f4cdf9226f0","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.2.0.tgz","fileCount":6,"unpackedSize":24297,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexnP9CRA9TVsSAnZWagAAMAcP/0J/RrTyJf2fLDmizelp\n7oXoTRTy7Kdirzu2fTC89q/JIfJXzPl70PaA7btFd6Or6NNEDOg+a0VFaKVJ\nIDy0knkDPtivWQDk4Zscz4VxGResXyguwxSC//YjTG92aP37BxCAJG6lcqxP\ndJP9oynwfNyp5jv2/sB7HTMRrdAdG54w4iCeMQ5O9Gu3Qfzu8yVwovx5mQ+N\ns4UQG8bwuK8WhL9X9YSAG3N/KJdzC3tcWmRe30BLt2KGwjH4oB5GbSBdgc7G\nbns2MsE0n38n2FAdkL1HwjjKdxdTn4lCbAx7jAora5UD149n8pp8Wk6uIWbl\nc9dxxmvoYmTVm4gzbZHlf6FxJGkZbMc+l4pa9HrcEIFZD4QLhMM1Gl/mBQNw\ngSpRtjQ8H/6unOZA0sT6dM+A1cH26ZRnElonZKtWyTH3vzX5H4ko41z5+Xwp\nU3AJqsF3uecdn2vT8nzuhJ95SVVxGPpZvy3Xl6nvdei3w5oPNjfIpPorDHJk\n+gjRPjQVv16d4wNApFhrkxDdK5KHCWZURwFHYMwabavQZqmScnFOoK2nUTRR\nnKJCkSUftjLddsFgajuzKoyTJ9u/ijQfVVz89J8GHvIlCpTdp5l6CW5YIP4f\nq3+CGJytZZCMqaRfTbfJtr7yhs/XCNzvdHf8J59kdy8XSnhIcfeQTDX8dCLe\niksP\r\n=XCCL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIESuBRAHzBE6zLFhLt0ajyYmXlE4B9Bo+WSmQiShUJbyAiBNFqmGdlrvXQmRpkyu3kkseT+JOZQ0BerJa0Czg8fALA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.2.0_1590064124703_0.9179577119779212"},"_hasShrinkwrap":false},"6.3.0-next.1590081175.7af8cbff01d472aea0afce8b2f832e6c62307cf9":{"title":"Safe FS","name":"safefs","version":"6.3.0-next.1590081175.7af8cbff01d472aea0afce8b2f832e6c62307cf9","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.7.0","assert-helpers":"^6.6.0","eslint":"^7.0.0","eslint-config-bevry":"^3.7.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.3.0","prettier":"^2.0.5","projectz":"^2.4.0","rimraf":"^3.0.2","valid-directory":"^2.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"7af8cbff01d472aea0afce8b2f832e6c62307cf9","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.3.0-next.1590081175.7af8cbff01d472aea0afce8b2f832e6c62307cf9","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-yiwXR1/EI19tiuyN1MyuPGT2v5U7JgXnIj3F/YG7ve1YtH+xymQFu6zjKovj+gZ45vc90xh4UQbAU3V1YQ/WTQ==","shasum":"c6c7d233e42e4df0f00dbc1f2c3d0f7e370fa424","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.3.0-next.1590081175.7af8cbff01d472aea0afce8b2f832e6c62307cf9.tgz","fileCount":6,"unpackedSize":24547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexraZCRA9TVsSAnZWagAAwAEP/RiQfIHJW0ifZdbiElcz\n9RTNWY+0p+Q0HtSXafy3GrvxS9Dtjjp1QX9XigYQKAKg7pRcCQyN1lyozQNp\nX7g4F+6tj7c/tFsNThyoSwIzMG9n19syBqnmbSL+qcuSCmOqbMLydA9QvjxY\nMpZd5NMvFWJwmgjUsZUjmFEkEaSNznjhX8iu8eVNs3Gc6cfup7/DBJWE8xuM\n3OAKjr/zkwou0/KbJOgoQ6h/hCFLkPMfB/KKfoj2gJlLwsoTnKL+pLwfLv1J\naXw54RmdqZzMGHrV164b1rhh9K6KthETzNk0fBQ7RZON9J3xkOpqOKZL4woW\nDnGlnF5djFJOQsOzrfs7Nd9YTj0ZOdlfyPmluVIzoc77PL42wH680lJR4HS5\nur6r8dG3XAmQUFuRsA7FolfzRU0UkUALz9qXO6yscj1b5iOj9WanTBGTF3N1\nDrN1BNHGJpOQO56dIo3OviNdQyU8L/dz+pwZRJiOqk/Vt11LqtPpbsGc3MdF\nQQHNpYioGZmaxEryS5n7RWxfDQRKC7dTEwdnquTkliOtve6zvpET8ATVmeZu\nrs5JXJn5lCTQ+XNapyogHNeJcY9vN8gbggK+zY3FYKcvutt1atk0FZ6DxUrR\nzosHbzrYD1Sjg+5RIAhz3+zJyTVd1/XxIxx3a3JSjwhKQ/9qRQFWvvSyFn/A\no/+e\r\n=J1yA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAESE8YazKXEpbziMHYyVBCH1sD+6khvdls3NEGsLLG+AiBtpf1DobWE1NutRu+a90goYtd8dY/A08BDSPJMDLCtdw=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.3.0-next.1590081175.7af8cbff01d472aea0afce8b2f832e6c62307cf9_1590081177297_0.4918394478264141"},"_hasShrinkwrap":false},"6.3.0":{"title":"Safe FS","name":"safefs","version":"6.3.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.7.0","assert-helpers":"^6.6.0","eslint":"^7.0.0","eslint-config-bevry":"^3.7.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.3.0","prettier":"^2.0.5","projectz":"^2.4.0","rimraf":"^3.0.2","valid-directory":"^2.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"7af8cbff01d472aea0afce8b2f832e6c62307cf9","_id":"safefs@6.3.0","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-6I8ZFs1qAb7AziHDmP+GkyrsIvvfXjGL+yImxBSbhQ8E8ZnknebnOQN8xTGwaMW1DneMV4TgHLvdDhvb0RMjvw==","shasum":"a4dfa3cb60f96f3239adf71f6191556f9e8c14ae","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.3.0.tgz","fileCount":6,"unpackedSize":24490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexrbQCRA9TVsSAnZWagAAjpQQAJt5iNJ/dfmGL1gENU6m\nlkAR41FXq5kID19EPiPxGdM5U3vl5xhh7dwGfVo82/HTGRQsK4+e4AbCZzQ7\n9d5fDQxEqI9hzJ3OA0Mg4P+F9JuNaIW/+ckhVvyOJktUewlr3hJ28vfIMmcs\nHAz0tuQAmTEI/6F5NNv7D3EfvZwx18lHV8ROGHbaKz1VfeJObnWiQIsae4rn\nCLEXYxTfRnoa6uliXM0+8cdjjnJFQB1sdLJFALWk5q4p8JCynRXyWwyz5lyc\nGt7ERKqWaHXPRZfULNNYuWtBKuLHjspxqhrUrQdPm7GHAU9VMcQORahD/lhK\nk7BZmEtO1WneKUAC3owYkDQheH62CUdbWNxPso7yr9B9f6bqz+4+memZ3O/C\nxNPpdU43/F6bL5ZFvHAHBJnrGcaY2BABabDoD6X0u9bAEf4YHRPDJInKXcEu\nTZ4hLJAXyNs3KAdmOBRSVsVOGz0t8vXw7c/A6hlyUiy91uWOy25B9LJo0knL\n7LYjsw7wdHmCVP2QPtF3XYD5jQjyxo5SIvNlj8VT9xpxUxJ3EyGw2wPimJ44\nUN2pojNeToDQCMyM4nijbeZz2mps+osKoyUWN4Spha/xp66sfsO4DvuhSTmb\nZXVoF68dq3NW15uE4e/r2JXxymOYesJRgwbadoK3uVrodv5o1c5mNxSbGFke\nWDll\r\n=rdjV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCveZMrjz2qhjG213/1wsegUU+Xm9flfiBYHXRnftaIQIhAJVl5YPeISSI+6afcXfzfpcuS7z2VNIp8IrwYXfTfYam"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.3.0_1590081231915_0.12540618816857685"},"_hasShrinkwrap":false},"6.4.0-next.1591785786.b5ed9934425d4d1d66de3d8eadd40f199d9ad19a":{"title":"Safe FS","name":"safefs","version":"6.4.0-next.1591785786.b5ed9934425d4d1d66de3d8eadd40f199d9ad19a","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.8.0","assert-helpers":"^6.7.0","eslint":"^7.2.0","eslint-config-bevry":"^3.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.4.0","prettier":"^2.0.5","projectz":"^2.6.0","rimraf":"^3.0.2","valid-directory":"^2.2.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"b5ed9934425d4d1d66de3d8eadd40f199d9ad19a","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.4.0-next.1591785786.b5ed9934425d4d1d66de3d8eadd40f199d9ad19a","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-GTwh/O/bn55j0W0/VDfj9vJQuMSzbme91/ObhrvI1LF52u+37Q2Y4ZkUdnLN0BzYCGJ2FaCyAiq/N3VjNc4krQ==","shasum":"024ae00b4086408480df7b05f3b7edb51a917cbd","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.4.0-next.1591785786.b5ed9934425d4d1d66de3d8eadd40f199d9ad19a.tgz","fileCount":6,"unpackedSize":24741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4Lk8CRA9TVsSAnZWagAAiUsP/0AjOJ8VqQ7ixs/Uz6lQ\ndf9JnXEJ3x7jIfNH3in1rGa1kFDNhTGqsFHWu+4xBFR1u+qnnT9Wx9Y13nAn\nJrfRT1ZR1ZUjH1vw1U5cUL3Or2fEgFKio3ATsPYxf1eleM3XHAehAyCT8lfP\n3HsngsCgzmaqzfvJN6DmDYk7CfLxT05cbHnED8ehtpVcFargM1A3THjuehNe\n3FYksEMb6Lcg1Ft+U0XVUkXLkHBePXEqJ36DI37XPxdhfFlxnge3dvTA+MWH\nfS75OoexjqvRMb5uApiDgjETdnuT/ZNkLQaLGRRP0tKnQoK6Y8Pczy5PLU/V\nBL68A8D6Yk2hL7YYO/WwFnc2+dAm7fMyj6bXf32I1kTjvymAOXu36/jXOpLb\nlWHmWwbaDcnla9TSm9EUIb31aAQLa5nBxa7eX3IqIZ0DU88n9tUlC/DFzWPv\nkzwWSfMXLdz4TZGHG08aEcFxSlXHg7ePOHDpNrE6hKVWwdiqiZ8Xk3//+9x6\nI11Tia373EZIGEV79jrWA6T+xAVRnBqOK3NiAnZ0/DXuC11tUf9RuMaPTEN8\n41acTqs2mmKyWXnzWdfSRrG4Px9G41jxlzm5u3jifCpp7XavAl1T/oUa6R19\nP546xxrt9V8CWpLX1tK254WoW8lfg7onN03Wz3WEnV9fhcEIy0mDDeY1YNIL\n2DD3\r\n=mfh3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHTC0S2azsZIqmrr6V81ZGKGbwO2MOpm9dS0xRFFvSZ/AiEA12EH6euvy5hRvhh4wz+S0tEk+uWAJJTxKUZdi79xfvs="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.4.0-next.1591785786.b5ed9934425d4d1d66de3d8eadd40f199d9ad19a_1591785787691_0.4087713985013399"},"_hasShrinkwrap":false},"6.4.0":{"title":"Safe FS","name":"safefs","version":"6.4.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.8.0","assert-helpers":"^6.7.0","eslint":"^7.2.0","eslint-config-bevry":"^3.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.4.0","prettier":"^2.0.5","projectz":"^2.6.0","rimraf":"^3.0.2","valid-directory":"^2.2.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"b5ed9934425d4d1d66de3d8eadd40f199d9ad19a","_id":"safefs@6.4.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-1uVfHyiAcb6xe9p9nCkrKoWF1qJcMNhDjKIufYKwB3QY22aJwYeGwZDBIzKmVhM1LFs3dLkBusIeOJz1Oudzmw==","shasum":"ff9e265cb487b7655e6a834b0df97043466250ab","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.4.0.tgz","fileCount":6,"unpackedSize":24684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4Ll3CRA9TVsSAnZWagAAmGUP/RBj8JPAm4VQyflQonGj\n1xGU3ddYuDb0eTFAkEbVgK36l6FT4nAf59zxca+CG8cwT6HBuIG2IZSL2hSq\nPflIOaeuADUz3f8D7W3fbuXZZJotGGg1tl+ALA63skH6Sn76U/slXvI1b6/d\n5HmXC0y5ypgghn7x9B7T9JcBDPbJ9jXcOC3P3QBeLTYXHoTG+MfdRk24XTyb\nHD0J4NBH5u8wGNvQl8A7QQKaBzA6+GqBUm7ZboE6KM5gIFvGDsyAUSquBnPV\nnsgE0pw8mR1GcbdLUUuo21fze8L0JAIh8nG/llVOfLlfBcExtJusfqGdnzsV\ns2Oc0eJClAeZu4xHUadG1yNHgI8FRHA+tTb8Eu02LTMlKfW2kc6TAuDebOWr\nLKrgXyo7zFVijCAa5gE28iWZ3uuyCe+a45Kui5NNpvf3dWTE24eZc04JTDSC\nviYynu5FA8IC/ropQW1p6YexQ6M091Y6zCqz9Pp9UCnU8WBUnrU9b01s4Cv/\nozjHUPH8dBtuOOzfbHvAPw89+I/BS+dOgMVdf+HIFFe+7m5m8c2T9hAk76tG\n1qV3yb3HjSyMudqLwKvzLMbla/qzHJjhGRYWyqtkqQ+GM4XrmAwu0WVbLTRh\nHBAPjPooQbIBIEpSNv+a53ghRahHhTwldG1eOfYU8ZjcgrybcmSPf+9Oditu\nZIxS\r\n=8uqe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIExc858kZVknfCLt0+fy1tgeeofOv+9OZ/BnEU7DFMspAiBW4f06zyeQwOqp9nt0Ek/WiXF4Srdhu0CtkFsZcXy12Q=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.4.0_1591785847190_0.8184496359090099"},"_hasShrinkwrap":false},"6.5.0-next.1591801732.beb3464ecf780a45211c950975fd597142182410":{"title":"Safe FS","name":"safefs","version":"6.5.0-next.1591801732.beb3464ecf780a45211c950975fd597142182410","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.9.0","assert-helpers":"^6.8.0","eslint":"^7.2.0","eslint-config-bevry":"^3.9.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.5.0","prettier":"^2.0.5","projectz":"^2.7.0","rimraf":"^3.0.2","valid-directory":"^2.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"beb3464ecf780a45211c950975fd597142182410","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.5.0-next.1591801732.beb3464ecf780a45211c950975fd597142182410","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-9g9x/kq+AcjA3wpieE7evY02Gpw80TPp59AYFh2Yjylte23gIND8dhb6sIhcig5Ta35Dv1AyQwWcTsvi9Y1BRg==","shasum":"3cca13567803cb8d8185b9454824cccb4ac3384d","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.5.0-next.1591801732.beb3464ecf780a45211c950975fd597142182410.tgz","fileCount":6,"unpackedSize":24935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4PeFCRA9TVsSAnZWagAA4+gQAIBKjHK47964C07sfCPB\nMIwBYLgN5Gni972SmMTOmHu5al2jM97D6FkQTLZu5C+Mw5M00cBwPdvupYxu\nxy5PCbSEeqNgwvgoG95jV+jawbXdiwbI346e8VKgXiChccEwCll6sizNLVn7\nTMPGk/G1FyJolH9UbqhN9JM68h3LTaQiUciYxHDc9wX8pLkcrKS9i0Vc2Ujg\nD5YBAogMqvultT/uMXFuoWWX+hMJ1Ajtjb9m+Q8DwFXWyEWBjsKe/poncsJf\n3QTFA/BLDZ106IALNawSQQHHBnd8q3SlGuolWYGU+ByKO5+OY+gMTWgwLj/6\ntUN3Dfn5H2o1XnYgwMPWnEoVxAPtWCDttozg38STJIW1AdmJ0t4Cek2gFm8/\nOLwSCA/w5V06PQXt5rwDwIEb94Cc6uMJpJMIncPWMd1k5ptpLW2nJD9OOCvm\nUEM9swlDGwO324G0paJOdjyuOMxSulZZovZHW4SOHmsW5tcgftgyTBMtHpcl\n8L/nl9YAU57AYx6H8kpJPfxmR734y3iI95K26oJiEdo5QIi9XvL3101Hlqgd\nZfKPtmLDb2cza8gzAMMYoZk9CEz0XZlSFcwaHnwmE4i+Nb8mLaLcPWu/c8KF\nEv0wfnQrsdjcGpOJjzDxpWM8Ye8dnysgOsBfFpp1SRp8wbIR9p/emarPZrNk\nVIzk\r\n=okwC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6G/b8UfDkkP8nTQPGnAH1JzgQw4pF14t9ZTbjTW93xwIhALW3Kj5KvSDZy5WegWyx6CB01hLXNp4VlKMROkRLtpMq"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.5.0-next.1591801732.beb3464ecf780a45211c950975fd597142182410_1591801733163_0.020916227396222897"},"_hasShrinkwrap":false},"6.5.0":{"title":"Safe FS","name":"safefs","version":"6.5.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.9.0","assert-helpers":"^6.8.0","eslint":"^7.2.0","eslint-config-bevry":"^3.9.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.5.0","prettier":"^2.0.5","projectz":"^2.7.0","rimraf":"^3.0.2","valid-directory":"^2.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"beb3464ecf780a45211c950975fd597142182410","_id":"safefs@6.5.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Y52L2x92P2jXqrkPqjEliIq602TjCzivaUy01gBdu8TzSjt/ms3vt5cE8EwvlTb6tueurVzfEcSWoxrq49HTfg==","shasum":"a8931c71925c0ac127743b0ccc6154283d07b0f3","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.5.0.tgz","fileCount":6,"unpackedSize":24878,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4PfACRA9TVsSAnZWagAAdIMP/1TwPR8ge24wkYyO8loW\n3/WEpsgHw3Vq/yiDPLBTcnZT36rf9C9lEH5U5YRcmDlwdMobty0GSlSb0wu3\njlaeWdt7ZaJdVi+ErziV/bzzzdIExZ2EbC6Dtj/cx6qhPaUPVjRV/3e8D0VS\nBVIKzf4hVCKI2mUpxRf4pO2ZIONBhe8axBjavztUOhHwV8mlyyYj2AkG8VYT\nPEkEZTBjZ2AGM0cM0cSQb/0kKhIT2QgvdJiSparC2wbbwTLEnLZ3M0lmJSRG\n+KBJRG9BT3OA6c7CHwBPEV9DOBR3lUvPgiPvDGKp0jlRuFFjR4UgRGhwRahB\nH2j9iSD1midRKyac95KTInkMFdI8+AAHI+S2uZxzDkrw29Xmn6VbKZiaKefv\nsqXhiASbClBS7pFDlr/saMGjRq/GHT6KSnwuNyAglPxoa6NyTI0IlrYpmCCv\ngg8hWbWcMH2uvr9Bo0apaP/ibsXf0swQ4aLOiyqfSxGwMLQohAroXZAQQQ0S\nNxs4VmlGPNF7HH274hRlsEL9Nq+Vp4pgLYA3o6MFpVjTjWPcsMHifE6d5fHf\nk8+Sq1BsW2zAZxamJq25CuJk4A2UJKDO+Ocn9hGY/pkuinwns/mNZSVPfTpC\naj1B00r2OjAaBqZjzzUA+vkj+SGk/JgA9zVYAQRm+6NemqyBRP7tLlZWt7ok\nNAtd\r\n=QOtA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHg4VW/DPlW/woRCylBkkoJTXQWVmwjvEOazfKAVyOPZAiBbHZCopQFnIXRcN7HPjrIye8LRQ99/VaZA+Lbe5sWK3A=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.5.0_1591801791798_0.7043720439582768"},"_hasShrinkwrap":false},"6.6.0-next.1592641161.83ae2243ad11eca51a55e57602a96f5fb47a4e67":{"title":"Safe FS","name":"safefs","version":"6.6.0-next.1592641161.83ae2243ad11eca51a55e57602a96f5fb47a4e67","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.10.0","assert-helpers":"^6.10.0","eslint":"^7.3.0","eslint-config-bevry":"^3.10.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.6.0","prettier":"^2.0.5","projectz":"^2.7.0","rimraf":"^3.0.2","valid-directory":"^2.4.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"83ae2243ad11eca51a55e57602a96f5fb47a4e67","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.6.0-next.1592641161.83ae2243ad11eca51a55e57602a96f5fb47a4e67","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-M/datdMx4rW6cYaCddz0fEOaiOm+zRhG5BB+/JcH47tWPvhmCLjXycefrku+Nu+lLqpUFzyazlPIgrL31fm5tw==","shasum":"e293c19fedef22510b2da6efed1e5b0909dc1720","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.6.0-next.1592641161.83ae2243ad11eca51a55e57602a96f5fb47a4e67.tgz","fileCount":5,"unpackedSize":24863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7caKCRA9TVsSAnZWagAAkl0P/0bYWbv+72YI1FkzsXxC\nFCmHXvTQSP+yuUoKxXA+lAfCdNGoIvmmB/v2Ks0DxLY36N774IMo2Xqok8Yv\ncKK7K3Kz7ftp7/tTfzE5oSYEn4Q3M3iDXZetdPujwC8Px/1rZZYiPL0LkOVa\nL66ggPSOD0U5ayP109Aszy23Ce1Dvm9q0XQjloNxGlUgyIPKVJXKQPQGZftx\nuoOzhBxMHxgEdHCB6D6Aeglt4gvxl54OY+WeXGSZHpVj8VYeYClij8MMfCpV\n1l78Uhho5HzN+ZdYO+kU5B00HzrH5g7btHS4owpz4tC2WLKgi19P8ECh0gcM\nwbFUtfOfirk2T4wpwnFmQqnh0ynJJ07vKgEMQuz+S65xcQPWOK6jITK4f4jD\nNB6kXsZqOjoCn8r9bY1Xxr7b42DiQYEG2+wLC1LqWxl9RCSBokFVHxbWuKHI\nuj7GNWMSFQHEF3slsyOMo9hxW1AIpSnSPUSbmur9Vrbi2FUpiD0XhRprJSgj\nEnyX5mcaQsffAlQ3RT0iaqbUFRYcI13Frrhn9pyBVQC58U1GDILTy/cBGn0f\npC9hnFEkVqjjISuHYWWB/FVV/NA8EYS1qFKPKwYJrLbEupW3TYso9Xei+FCt\n5MnDlIDqJm6cNjftAMyWdz5doIXmGDk0UTf+o2rrJgDXaOqPwMndKF55CX24\nvvsx\r\n=1siq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqOexH5swjGHJp3zqRii56l3mGBgzX/v06LxW6eja/vAIgGu3jWPRCGNpibShf2cPmXMJg7507/XVcBViTHpldbng="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.6.0-next.1592641161.83ae2243ad11eca51a55e57602a96f5fb47a4e67_1592641162264_0.36305486135960097"},"_hasShrinkwrap":false},"6.6.0":{"title":"Safe FS","name":"safefs","version":"6.6.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.10.0","assert-helpers":"^6.10.0","eslint":"^7.3.0","eslint-config-bevry":"^3.10.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.6.0","prettier":"^2.0.5","projectz":"^2.7.0","rimraf":"^3.0.2","valid-directory":"^2.4.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"83ae2243ad11eca51a55e57602a96f5fb47a4e67","_id":"safefs@6.6.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ZykMp78hDp3UqXTJjt29ji8m3Ri8bomcnIk6mwc1DcbXrnTIpQiHOQoWLtuZhkLYD6YHuB66Qa3eg6/RJ7MKMw==","shasum":"20c3bc65dd80c622b24d7449d7d06ff16bac9b3a","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.6.0.tgz","fileCount":5,"unpackedSize":24806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7chPCRA9TVsSAnZWagAAqHgP/ij1WGg/Be/6Hn6H1utl\nP4QAjGpNuzhnT3/vPKn98PUHHOagwzFsJ3BXyGQBQSvrDUI83vvNBP7NTXdG\nbnV1JU0AC/Yb53EZxYcSFMEl05qEWtaj0zaOSJhpLlovTCY5EjWqKzszVjnW\n3LtQVNrOtd6ILKMVd31IP4mk4C4Iuh6ghPT87A5oPq5jAyUCiqAprGT8oqz3\nCOaf/kYyxNDfaIPQbl7nBAIOG1up/ttSjsonRpdXH5HvLqsg63y/OKMvPZAS\n1lxvwC0y6tuRVcsfaUyr6rPVgIGKicUuh4eck6uv0IsKZPIP++7hlx4DkupY\naFnT9bSzWTw7db2JleZDatvxdIG9j4yBe0OB+awmz6PttxoUE3N3IBjrZlvx\nxdlMwgkVWe0E1zG2eWssxKyXjLwuKWvOuHX3J3eH1+oLC69MgzGe2w2BW7tu\nws7NxsjSY5AYEGGjC+yg566/MDW7BBrNS1jPyiyo0bIyrCiAvMxKOPaBYdwL\nmTQT3B4xJ9/+R5ot+H076hge7NqxEIWCtigpsI+PyJ/wvBvgyZcoF7S0x7NZ\nl6r6EXvXiSfJXFpNd89qOeN4u1grMmGTXxbw+qWqa1wruPqsQozcmGY1a1Pm\n0a9hci8ynqzZ6dY5FPYfstQXe9wS820GPt2oAxjB5H4BfbbhzglFVvB1une7\n56+A\r\n=IA+O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFeIuZ/yWgbxleEj38EzvI9FNvrncb6wMmFuqCNrBN3VAiEAqwmqmFb/yBSwxXzRSpaUnCDV5NC+VWz7w9yomv1c1w4="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.6.0_1592641614935_0.7118409232624061"},"_hasShrinkwrap":false},"6.7.0-next.1592728511.eac5c543041c364b3a1b2a95cd259fba7a3f2f13":{"title":"Safe FS","name":"safefs","version":"6.7.0-next.1592728511.eac5c543041c364b3a1b2a95cd259fba7a3f2f13","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"1.9.0","assert-helpers":"^6.8.0","eslint":"^7.3.0","eslint-config-bevry":"^3.8.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.7.0","prettier":"^2.0.5","projectz":"2.5.0","rimraf":"^3.0.2","valid-directory":"2.2.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"eac5c543041c364b3a1b2a95cd259fba7a3f2f13","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.7.0-next.1592728511.eac5c543041c364b3a1b2a95cd259fba7a3f2f13","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-gYGvx2tbg8/TaPZ6P/JxDsYh4KHaPBEmWMzRDSnttbMTf2YE/xPc7j7rDsRgMqHHZBqoWXGqITArKDX8tmmFfQ==","shasum":"750d00bd29889a0362ab6957f893d23cf73e8903","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.7.0-next.1592728511.eac5c543041c364b3a1b2a95cd259fba7a3f2f13.tgz","fileCount":5,"unpackedSize":25100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7xvACRA9TVsSAnZWagAAHWMP/AhqOiunUyrRxIpIHlaW\nQSsUza999LihescFWzNJ8jtL7RcDAFDxq9/X4y29AWKk7Srd/hSt0dBC8cO+\nQrEmA3QXByppvVbVsekfOFsZVT4+mcONrIqWY9ApIg36HJ4NIqm/HkOV3VX3\nKpIkoPrNw1QjCj56b/XNJ7AvR4yUX5n+HTqHLQhZvH48SNHJqp2ay+3FGOwD\nFdGhSmfs9n7R8bnZTEzhcfn9hDZkJ6kGDM1d7h3N5o91nS9s3ehuQQ1kCtNx\n649hGN6cNGHQa8ps3vXHJaXaAUgVpFIukR/XDtlqdedmeGWVA7kyTi1Phua3\nKXBTw2X0JwWzPhQuk9F+wvk+n+Y5gkz/vKil1FuEOuxQ9r27T4/9912G/a5H\nlG66h3AgKavIILr03NN+21aykbU7oXZX1/t9W0HSkEGPwswk4yffArFi8hPx\nRK5XiaM43UQSezWa+W6/bRWieRywqDaBAJgxhhdsoESU1oJqoBFWzWmK9PDe\ntAwDblGem5gDqQYiuoeuZBfBD16g1yZpYETvWLTTPxqm/8r1iRVMjg1SB1xy\nd6M3zkIIGDnBpdTmHunIR3ESvj/YjosfL0WF4lY3KEknsrPj2SUalo/QcoYK\n5/f0mvXr1F/SkTWEpG0yrTTT7/KBWAYY5amy6rzhN/Hcmx+88HTOiMS6fRIz\n9R2A\r\n=dpae\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUIDCFdeGnzFB74JIOpS5IKHUWXmONm1gKFg9jgLkGIwIge4fkvLtrJBMRytFMP6hERCEaRed3EcmBpinxayeV/jM="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.7.0-next.1592728511.eac5c543041c364b3a1b2a95cd259fba7a3f2f13_1592728512114_0.5168930601720967"},"_hasShrinkwrap":false},"6.7.0":{"title":"Safe FS","name":"safefs","version":"6.7.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"1.9.0","assert-helpers":"^6.8.0","eslint":"^7.3.0","eslint-config-bevry":"^3.8.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.7.0","prettier":"^2.0.5","projectz":"2.5.0","rimraf":"^3.0.2","valid-directory":"2.2.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"eac5c543041c364b3a1b2a95cd259fba7a3f2f13","_id":"safefs@6.7.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-QeDqKhEac7y7ckNCOyIVcpJBUk3EiO2QIRsKT0PFLEyzToOBCMg8cKyx9XvyHTZPefZ3MZBxFR5RMHLYM+dNuA==","shasum":"5c1d5483a0128052deab5a3c2265f0949fc3cac6","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.7.0.tgz","fileCount":5,"unpackedSize":25043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7xv2CRA9TVsSAnZWagAAoyIP/A2ayitiZsRAfbKbXqh5\nTnu2YWlQugY1qb7HainKCbKu78DFagcYheVWBgx+LZW6T5zKMNkC30zmoq/l\nKoUqxg05ZYx5xUcyEhp+NC3NTCv/ZDJx+Ug/1b7G7Cxnwe+W1oMEPOPKp2JB\nqIEU3xuus+PhdwArsNkkXIdjfFbfMBgj/msReCB4GWDqy1lk6hJbB0vA2Geh\nUc93SDjPKCVSwvQgc6+gAUkAPB/V8dUJddNl28UyVrcv3tTKFt2Q7di86Q6j\nImlJct19Wv72K1E9B83yCFLN+zMjEugK7eFcFLuN+74WysgHXPGopbN6DIBX\nKr7tMm3IIUStpuK5GS2D5QSUbnMRC9N7NjMFNzAZUOFkqLd9cGH2spd8S3SX\nLzanarsjUEFThzTnyxDuLc+WB7A4S/SHXPlWCdvr2rFtRxyrzJOEmkBBf/vM\nP/YoShWpsMXy8Yb6pJFaeVlHLviCq7Cb3OYa9wY4kPN9+WTj0h06/4xAhw+p\n2C9RWssDHfowoJA0B89WngBFi8tiLV0A27uhRuBzHxcPEjs+K7MtmX+KaaVA\nkJ60eN21lFPOs0EZk/S3ypW8GWOWtOntWdt4Jig88J2xyE8R9421eAdiGQXK\nEe3c23AGh6NSXiyGT342Gt25buK2N87Pk7fpyFuxlltFFJUvWaTqwx0M+Mm0\niWzP\r\n=I85o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsl+vg6/W4JWZKLv9SBtMvht1wnWKJ59C4KbqlRE/wtgIhAOiK0Gd7anKAx5Q4VPEVbIyrscPjt6EizEBBdD8EVjz6"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.7.0_1592728566477_0.09062244793259588"},"_hasShrinkwrap":false},"6.8.0-next.1592764124.9017681ef46d96ef48330f178f108fb2737a82d0":{"title":"Safe FS","name":"safefs","version":"6.8.0-next.1592764124.9017681ef46d96ef48330f178f108fb2737a82d0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.9.0","assert-helpers":"^6.8.0","eslint":"^7.3.0","eslint-config-bevry":"^3.8.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.7.0","prettier":"^2.0.5","projectz":"^2.9.0","rimraf":"^3.0.2","valid-directory":"^2.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"9017681ef46d96ef48330f178f108fb2737a82d0","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.8.0-next.1592764124.9017681ef46d96ef48330f178f108fb2737a82d0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-acG73UKsAaSpyeu51eyBNrc/qOsb2u7DGtRQWjjrbxwIBxxILndhSFO6/1fK7m03bPo3dMOZtgQTZk80VTr18w==","shasum":"1d755fa9703e14105249557d70cffe1206efd06b","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.8.0-next.1592764124.9017681ef46d96ef48330f178f108fb2737a82d0.tgz","fileCount":5,"unpackedSize":25297,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe76bdCRA9TVsSAnZWagAAuqgP/Ak74D33LKZkU16z7GU8\nl3sIcsKUbrs8aDlHlcqsjhcwtcZk/yJHpb4DJFrQ1i/FXjhQwTrA29is8XxB\nWyyZaC2OJKV6rQBsXtJ7vLK47hyaQDx4n4mwkbefekrtYLP+Z2xx/OtvH1Sb\nOcTRIhXoA7m1Drj485jFg1GI/Ga5YczhCZsz05CcvhsxD1U0U8csHmu/KryW\nW4+wZVOkEdb0KVS/Ocp8sdOWvpQbpRwwNcVvzYAD64NX7zvz6e9FbrY4AwPq\nc6ajo+6qbXemgDJ3nF0U/r5bXddne+B6Wj+vKzAxUs9/e3Jp/84zzShldhKD\nvN2IKbRXPo0rkk/yuZGucVywJzaWw6pLeYwsN7ZKxS4rftHHPw9kODLWYgKu\ndoGITpU+193WAC2HohJYEoa3wzRsg/+Pz/wWl7iOQ9UJ67Mrtx02sgHaX4tZ\nrh96mPfN1GmzHT4JHGVa6mYPPQOTp69Zz4ekqGvK7xmXMdeJt7XwU/FZs7TN\nYd+YiPhJgcC0+LTqjOmDPxzt6v8NJMRDUSmy0ASq8Bu9EzfjHeB+EUcSahrr\nMpG0VhkPu4syRyU6aW/ZGlHDqmFkH6UlLKfFYXh3iPmrB06F+ETLrQlM1FSA\nHFknUQ8GtD1Bam8d++lbVUQnvSvIj2EHXz7ZN572TuJX/UIbRIb0dfQt4ILB\nHW2N\r\n=u/5l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHLPXE3C3eNV0nrbvVm84Mk/lKfHJBtrCnY6C/Xbd8oyAiBrO3FD49J7FTjOB1YEmufTgUwcJgD8mk1ehG92nmEhrA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.8.0-next.1592764124.9017681ef46d96ef48330f178f108fb2737a82d0_1592764125288_0.5611878219770845"},"_hasShrinkwrap":false},"6.8.0":{"title":"Safe FS","name":"safefs","version":"6.8.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.9.0","assert-helpers":"^6.8.0","eslint":"^7.3.0","eslint-config-bevry":"^3.8.0","eslint-config-prettier":"^6.7.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.7.0","prettier":"^2.0.5","projectz":"^2.9.0","rimraf":"^3.0.2","valid-directory":"^2.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"9017681ef46d96ef48330f178f108fb2737a82d0","_id":"safefs@6.8.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-bfoay4QKqKu3alh9zlx0UFtwVkE/8/hb3Et8ChgbBmxHhA1e9OysOx7XTqM1mQmUrMMvLlL5GYWWmD38kXRU9g==","shasum":"e05063f799ef5d9debef3f1f682e2ec569f4d712","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.8.0.tgz","fileCount":5,"unpackedSize":25240,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe76cbCRA9TVsSAnZWagAAKRYP/2RcNXBeCJVynNEOZf2T\nNDv8AFXGcIR+YnU4sDoGeNjFPdAOMRb8Rb1Skrvm+DFAuh009lygchGXV+vv\ne+zGGcI9eQDGP9raNKog6SZKvLCfB0gqpdbRyfqITFwjh22a+Bg+7tUr1P18\nPf/CvmNiXJNmKZqULm7Cj6a44KLnOF7TCtd3I8c9yuVtE1PasrxTVn2x0O2i\nW6kLkeTJ05gDTgSbuWcfRsKwmG52EfNBlpt5lcIXlU11NsRL1FNGSoe7j7ed\nLbsvwgF+LlsWQJ43nZXotUL3qncPcSkQ9F80QDSkGEVyVk6HIrNfzXPAtyfy\nibbfo/cO7tnpBtIgdqC2sr1T5OOzgZmThGJZHaz2Terh5EI7dehaIb7foA+j\n4hUGbEla/Hn3eiHwweoCElsa/046QEL7RnTVdbxklqNC8eqCyXneSfbNoDfT\nC+2J4lkQA+cqEROQiaZuW0SjJaaxx9Eo0xjSpeVB6BXVlnGHPKb5r9FsLTtn\nIv3VzfO8opgj4n+7b/R0VsrTlisn/Pqhv32eEuVnuFkxyUBzU8MKQb+tiqoC\nfzy8VR/WP+Au22puePk686ZSwYZdiH+kMXaGwAqe35wbJh4M1+kxnbQmAium\niwOj0CipPqwcZo5IMHmot780B45YJeWwput2kXDzvYt4qtgpeCxx9WfCWMGu\nj5sm\r\n=DaIN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGz9ZFWjtQj3xZBCULK46BV2qe+orRA18bk+LtEkjp8RAiBFKMMKeY7OYP2fGi6JCltbbcL2SeQiPFEdy1AHhqOnYA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.8.0_1592764187022_0.08732294179186773"},"_hasShrinkwrap":false},"6.9.0-next.1593059904.694d53073ce64fbeb5ae9aded6b6726b68382bc7":{"title":"Safe FS","name":"safefs","version":"6.9.0-next.1593059904.694d53073ce64fbeb5ae9aded6b6726b68382bc7","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.12.0","assert-helpers":"^6.13.0","eslint":"^7.3.1","eslint-config-bevry":"^3.13.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.8.0","prettier":"^2.0.5","projectz":"^2.11.0","rimraf":"^3.0.2","valid-directory":"^2.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"694d53073ce64fbeb5ae9aded6b6726b68382bc7","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.9.0-next.1593059904.694d53073ce64fbeb5ae9aded6b6726b68382bc7","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-vt8Hz/Ug8g3IlyMqG1+J7o49gahP9BBNRtU4Y071UhewA7K6rBe3XULCO3+3oJSg/4Kdkzg4huNRim/skb6oIA==","shasum":"a6e579d75972e17727aaa47ef351bba68a1bff63","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.9.0-next.1593059904.694d53073ce64fbeb5ae9aded6b6726b68382bc7.tgz","fileCount":5,"unpackedSize":25496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9CpBCRA9TVsSAnZWagAAJnEQAJpTBnXU5i9BPTLJkswZ\nee1vDB1Euwt+hAbIuEXMMowBkcQSm0pWAbhRDalqwpCaEYPib6+A5iRjcnhb\nu9Rb8oaCDKHCfLbG3xnogoOJ5MGYnjyJJZpt/jdnEwqHq5PwEjMpdx+8XCNd\nqaYlOeIlJZpAsdRKwStJSuPi2bygiSOPcwNDkCuBoC3HX1EEiSdTQgxBEzYW\nsKgN2g7n1hA6Gwb5HnIsscol0yM1rV2blWFiNUPPaLHM3g+imwgKRn4lWfio\nt7HHwcwCR8bxPnqIeLhJHcBZnGIBTXjs7RqnQkYmZD8zVST74XRCycT53jHk\naiC7ce/EpZr7y7pyKvgZKmkZTQtwouIBbeaYlommz8LT3M25JQKJmwjyG6cj\np9hjWi1O4CQ/KEgMe2Y6tYlTI3ECMuXr9CxkxWGRcJnMAzQk/0aMdUIgiEG0\nsSiAV6UmlX38YfwlEHOgPAtveMIkQQHw029YxqFgH6P0yedHWQVd8RyaPLqX\nthQ7V7IpRYeY2reCVIs/Sg2b9dB0c8/eJ/rFpZh6XfNu4n7aUbwISWSOv0dn\n4L2TOnMG2GsJY/Qj+aPtArsaqBYXgMBglXogGAnNuryuxuDZT/FJk1gdu44G\nJEOtsBHgocrqhfKri/veMbzcF8co5P+ErCCIJiIwQy8/X2sItEdyWi3xoh/d\nHOVa\r\n=QLVX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICRV1u5RjdTINR0z3af81NsX+3w7HbtvM9Au9GVaGo4JAiBvAMxIIWvxBqMErDcRsX2Taxy8d3rYC2CZ1YhsRu42ZA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.9.0-next.1593059904.694d53073ce64fbeb5ae9aded6b6726b68382bc7_1593059905517_0.8828002079312924"},"_hasShrinkwrap":false},"6.9.0":{"title":"Safe FS","name":"safefs","version":"6.9.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.12.0","assert-helpers":"^6.13.0","eslint":"^7.3.1","eslint-config-bevry":"^3.13.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.8.0","prettier":"^2.0.5","projectz":"^2.11.0","rimraf":"^3.0.2","valid-directory":"^2.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"694d53073ce64fbeb5ae9aded6b6726b68382bc7","_id":"safefs@6.9.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-pTxUYAiIZTgRy4BxtTC7jn8ODBKsKFYuT9RV1p7UCEfwd6ddWnhcmBCeiaePrFErjCaygrTZOq24+UaAXgO2uw==","shasum":"9c3d0797055ac7c2f4a28bfdd9634058a2b90593","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.9.0.tgz","fileCount":5,"unpackedSize":25439,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9Cp9CRA9TVsSAnZWagAAEj0P/jrKOKoExdO0p9JrV7AA\nwoRi7VAMIZtZbreOVx39TT1jrRUL+a7eBumTeQ0b4LEZjLMBZnEiMhHsMvyH\nv1uwbpnLCZA8qtQ5By2BmdVpB5Gg0pZd/z5ZtRkxOjAssFtYGb9/wYcie0G2\nkTn46M26LiB/wIXeBoB0w9CXZxZQNiLkxY4iPGHohbtGzQchYwaz2FnsDO18\nX8i6hVUEqiwejGNyL3rUh2zwN7irEXJygtpO8/fn+kMqwDh+kdk5rCtYR3GA\nGD8Lvjo6gtvuylwwvX9wiaaLJO+BOuKBofJgM8odj54ERsYnNFuDOzbKahaG\nRqKsqqyjzTiB6ykmsSYNu/i0WxquTpt74/6aSDd4QNK4vfzrY1CUuNp9/GFz\n6LFNKKjxZT87mtIS8x/Wxpz5hRgjmhZ2eMKoYiPgzEKDzibGUX6HE5RNMr/q\nqiu3SIysvtn+0VCr+w+2/N9tR3XguPfid3smNhk6MWCaYvSDC8ii5x0tp2Cm\nz1mIhNdJsPWL2DEZ3h9fWXtxcblH8FibutjHEMj4oW40IGnWEpglc2FF2PTY\nzTO9aXg1GffTW/aSPDBG3rDCGGxca5a/UosLxcBEaV5EKFEUxJsPqAJyuuBy\nnnCI6yTxwHZ/330iWyMSa77Snp58FxqxXaKPmqLddJoDpxjVJNgzCfH88WNT\neydj\r\n=1XVu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD33RGS9qCb1cqCKgzwjrXYLiXBqT36GPNUSsNdtBeksgIgYF8uykbDE/uGYmPO8XcmNH3XnadKSGzOVhIEUjF7jP0="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.9.0_1593059964884_0.3311692863731328"},"_hasShrinkwrap":false},"6.9.0-next.1593742702.4969d107d499b75686658b9e79e43720adde9c05":{"title":"Safe FS","name":"safefs","version":"6.9.0-next.1593742702.4969d107d499b75686658b9e79e43720adde9c05","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.12.0","assert-helpers":"^6.13.0","eslint":"^7.3.1","eslint-config-bevry":"^3.13.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.8.0","prettier":"^2.0.5","projectz":"^2.11.0","rimraf":"^3.0.2","valid-directory":"^2.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"4969d107d499b75686658b9e79e43720adde9c05","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.9.0-next.1593742702.4969d107d499b75686658b9e79e43720adde9c05","_nodeVersion":"14.5.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-LogYQe7J1UtBIDBCmV6SF4O8z7g0SzlrbfBQi6iQhHbKDyWf/PweeRgrIlleAmHQbma+ofsCMiNpxhgxdyoTqQ==","shasum":"5253ad414c74efbd15b4be1425760d6e4aad8781","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.9.0-next.1593742702.4969d107d499b75686658b9e79e43720adde9c05.tgz","fileCount":5,"unpackedSize":25496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/pVvCRA9TVsSAnZWagAAS6YP/iHqtTA2dALKQsDZ8U1k\njeYK99TJQPW3xGrugzHoXlHwLr6077b8ZVRkGtFi57H1DGUMxb7+TcZ0I7Qf\nuhjPtZcqAermfXPA8T2zYgYN3SzRtvSWSh6QjayITuWZAWl2piLuiouUISOn\n4H/8pWy8doLU/K+A+dcs0F0pf0LbTHmLvQffBP6A3t7g3hc3arPN71nkqfEq\nC3HyA435v5VrT148jD4kUmE0hrbrwis/kaV0mbcaOPrFrx8z/jT+rOAZ1Wq/\nGlRiVuFoIQ/CKTsxPlHRdxA5X1opsq4fv+JLEwxA57nxjDi7JmScY7Il0/WP\nTTwEdFDCFRljqrDqXhDvqTw2s7GPLlf8vftthcATaQ4HNYUClZYXokcuFDgT\nFW3GJYcMqLahNSzBNiH1so4+38hc3nXdnD/m/7riuKdJKIUfb2kOKo2o116d\nz4KnfYrzOc55L+pcJOKXLcb+d4biEgf8FgKdq62eyMumFLNXzFlpoUeAf9hx\nYSov4oGdWg1cKPMG4sQZY3mllra/ODRxcW90GyWfFmnCibWkIoiu6nmBXfqU\nkbaTZmW72Yid5T2g2Q9l7Oxdq43yyo3PHyKE+RFEQH9A7E48XmDdaTW/lyZj\nj1snRpJPyrzOBossucY6FxiqXxQKRgxVPkYvybr4PZGvHQ7+CEBB+Qugl4p3\nnfHG\r\n=rbwL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdozRyVwizGPY3OCDfNYYYukMYmZmomVAf/andbNWIdgIgN7eoS+3fDv/cNQ47or9jBYM7zEYHHhSqagwA19qizf0="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.9.0-next.1593742702.4969d107d499b75686658b9e79e43720adde9c05_1593742703565_0.3861995075175013"},"_hasShrinkwrap":false},"6.10.0-next.1595450801.a66d06f76cb6853fd11fb5690a4666a68ba59dc6":{"title":"Safe FS","name":"safefs","version":"6.10.0-next.1595450801.a66d06f76cb6853fd11fb5690a4666a68ba59dc6","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.13.0","assert-helpers":"^6.18.0","eslint":"^7.5.0","eslint-config-bevry":"^3.17.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.9.0","prettier":"^2.0.5","projectz":"^2.12.0","rimraf":"^3.0.2","valid-directory":"^2.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"a66d06f76cb6853fd11fb5690a4666a68ba59dc6","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.10.0-next.1595450801.a66d06f76cb6853fd11fb5690a4666a68ba59dc6","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-QUkkcvfr7bKzhaWeYPJR0erOiDmh33vqvY7fIxrmR5+dtTdHJlk+7aGFrx4rMENB3QBhwTvdgjzQkoCb3i9zmA==","shasum":"9f246ad7102a5e9674de5d6d51a963f1e8580052","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.10.0-next.1595450801.a66d06f76cb6853fd11fb5690a4666a68ba59dc6.tgz","fileCount":5,"unpackedSize":25684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGKWyCRA9TVsSAnZWagAAe5wP/iPuv6/8t2Tisy4JlGpR\n+uD+xf+a5k5wGBXS95wm2dKeSEuWrNUCA8uYB1rYQHHUxxcsfmwiO2O8FffA\n/aoJgR7V7DhRuAtFcSqrBw/crfk5RWOhl2iRj+mttPHPWstUPVfS1W2+md8q\nrgsmzpSsCn1AJGen2vI9GIe34zxzj2bH7ijDNoulECiibDoQ9lcohUY1ldGe\nR8CAl5xGfFi0r1TMVlqwitP/4aS+pgebSyHaQVZ7GiBDKPe/dpAlW4oLL01A\nhaWlLv5V/Lk6ReNknioWalMV8G5ipA5BpWG9PbD7aR57TyW7xP12teC00/7w\noP7WYdm5+MOaqtGLoM3y3aW+RTD34GCNyerTF3U51ZKq6wQJ7+0VK3wCBsBb\n4pPT8BqUobPzG7Ixv7qBylUaxF0P0DbQEao+znwGH3t8o5mujT4axLsUsneo\nNtg8p0s70JMPkjkulAOkFjC1cJbe1+JO+M7xUc2YBIXdEAPGPlHOnMte0iuh\nyIwk1lVZnLu8958XlAeVbF5uBes2xf8pSaxRJGsKmEI1sfWR1OUWRIxeHQRG\nQdIL/KnpU+j2OPY6UcDs0eW6hpVRVzIdnAibwp+gGR7dF8fDEtILGc2vVzbw\nr80/RTBURMEy15EXvihjyX45Jkl7FjKujb7bThKp50LHeaEmaqVreG/lZdfi\nSlZm\r\n=/XH0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/MgapFE6cUZVe0K6lwq/rNTEdaueJ+nX3RZpIBCylVAIgDVpyaGRZ9hni09LRiLNObFbC1FC+es18u4OX5RfuTAA="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.10.0-next.1595450801.a66d06f76cb6853fd11fb5690a4666a68ba59dc6_1595450802371_0.03567601118963992"},"_hasShrinkwrap":false},"6.10.0":{"title":"Safe FS","name":"safefs","version":"6.10.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.13.0","assert-helpers":"^6.18.0","eslint":"^7.5.0","eslint-config-bevry":"^3.17.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.9.0","prettier":"^2.0.5","projectz":"^2.12.0","rimraf":"^3.0.2","valid-directory":"^2.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"a66d06f76cb6853fd11fb5690a4666a68ba59dc6","_id":"safefs@6.10.0","_nodeVersion":"14.6.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-FGjWQReuI6Q78lRWGC1mWPmT5yWAi/34AkxIC7myCHLvxAr8D4RuJflXpHp+YpnjwSr8iO78NAeYUIrNOvZZnw==","shasum":"e28c59b2e52bcefb21760f7e646ba2e3a7e2c43d","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.10.0.tgz","fileCount":5,"unpackedSize":25627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGKXmCRA9TVsSAnZWagAAaOEP/1JNKrYs54KRv2auppOK\nHUx74/WwH4thCMq7yMnvpprBT+SxC06/FDb+2KMzAZ+qGtewOAK7Sraki96Z\nVxfXshLAiUDysdgfs7MQr7vfZXN6lIANgPa322pM8eo3xSObe+8V2/HLxeur\nPvDVGdLiDWFtCZ9lHeC2S40IAvqQ5Y11Y9QgtDcM5jDnVRPYZX5zKyYaTeeB\nTvkEftLs+V42u5JOs+fr2GVJZ/KHAjbcjbaoJkBbr989+qMJtxQVHeDsGr4t\ntcibl5JK84UKhsRVhhcnZFvCnLWtrNBBr/U+ranI8l9vrrjpujk0JiJXOq8i\nnn8s4nEY86g7wTBvnDkFw2r55gPhkaGrRNkhntJJY0yyIzTy0s4146qG0LEs\nteujSJNnmTjPGtl899m0N0/Xk/Baeh23YN5ubycfaYTj4nBewkIvXk0tSquk\nDQRRtTDe2+DshnfqPHMVKv10VR3SOlJZVYKWP7B6sQcYS+09GpTh3QafXrsF\nEWE+vOKBrvKsdXoibZaor/0aPNkaaZY4zHq0Tpp/XYzhmYLXuk5h0/GbxBl1\nxX/kY/GSmFCzzIEsbZlQZQw3RDLHM/aApu/SOz0kUsKovyWOyQ+fTD/DnY9z\ndf+JwXc62y26AELSlECSNDCwgU68HOJr5mD/HULo8RtYxUxHnrmYhJeI81+r\nqLIE\r\n=9ehc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDXyHW059sWfaCkSO8Xyp23DgNfE7NWRbHe8gRT/CmNyAiEAoJfDvELMi4gT3/x+dTDi5k+rRR3Op5pQLa5OJgfJi7E="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.10.0_1595450853806_0.19141029088056993"},"_hasShrinkwrap":false},"6.11.0":{"title":"Safe FS","name":"safefs","version":"6.11.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.14.0","assert-helpers":"^6.19.0","eslint":"^7.6.0","eslint-config-bevry":"^3.18.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.10.0","prettier":"^2.0.5","projectz":"^2.13.0","rimraf":"^3.0.2","valid-directory":"^2.7.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"92288f125c8c20edf7371dc9433371e4507c7541","_id":"safefs@6.11.0","_nodeVersion":"14.7.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-ACQvJfBKGkKe2lzqbtwwb9LimB99iiOXT6fBRJB65WK41EfIhv/pe7Eop1fhfkfGgKgPZ9bzqlck7yx7zPaung==","shasum":"ea47807be2a63e5a436ac5828df457af0270562a","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.11.0.tgz","fileCount":5,"unpackedSize":25824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKQJKCRA9TVsSAnZWagAA4B4P/jY6FI+i2rk+Q5/JRPzT\nx3ghpw12KeimH5JEm8ahc8acNIqqLdrR6D6XvdFAQd5fzFbJxhF0GPplhtUP\niW5TiohVxhIS+iYfbOtRnf9sEzE5Oe9KfhINbNgNXmdzuYxj80zoEnu4IH7l\n+fUThYGspXLZPqLJCQR8Elw4bPb4/IsxJjRh0aX+sPG0/C5HaptDZcxFv9AM\nxB3ex7cxStFlR/T14bIzHQNk/8g3rciHyFaI9Sx+g7jQFCq7sGF8P3gLzvXx\nwVGPQRto1KgX09Muc8x0FIyr/SaOmUepphnuTIpnjACujGsMkzli8ts1fxl0\nARfsyiXnO6wzHLcf9J7veAay3N4yJpTVE0T2XaigVfwTtkAwXWiPBBveeCCC\nPFkM6GtmqCXXIdMiG20OIAvXT1XmEPQ+QyV1edAS0D2SSkMD8CPXEv6H3Usp\nQCuQGEf8MAzuKdHguGC+LTnL16+iADdUy/Xc8JWt1493lYnsH+wUYIuwzfeN\n/Wbj7hE+4BNGjr5tv/o87f+hkIetR7z7lkdKgkRlKbSNnH6k8T1cri3fcmX+\nU75tMg0rHWIMOKWsazyDVH9qLGHfRvbq2VTPaylQo6tLtBIiQ1RoFBQNbboJ\n/OZYx44HF7icMyv6GMawISWh3Qx92CsIS6SYbEEUiafCdSwfMSr+sJAhIYPT\n5bH9\r\n=C0x0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3vXmzMKQt0lOY/w7jMPd7NLTJk5J1Lfly/XH888NxYwIhALiI9ag4GHE7lpRopIYTM+XsCL+bcebD5pfHfHDEK/Bn"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.11.0_1596523082404_0.512589188960757"},"_hasShrinkwrap":false},"6.11.0-next.1596523086.92288f125c8c20edf7371dc9433371e4507c7541":{"title":"Safe FS","name":"safefs","version":"6.11.0-next.1596523086.92288f125c8c20edf7371dc9433371e4507c7541","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.14.0","assert-helpers":"^6.19.0","eslint":"^7.6.0","eslint-config-bevry":"^3.18.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.10.0","prettier":"^2.0.5","projectz":"^2.13.0","rimraf":"^3.0.2","valid-directory":"^2.7.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"92288f125c8c20edf7371dc9433371e4507c7541","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.11.0-next.1596523086.92288f125c8c20edf7371dc9433371e4507c7541","_nodeVersion":"14.7.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-VcVf3/LYYc5tkxPYL+2vAeMrEI2ROaYqTnVWHTGI+D4hlFYrEK+3HWFbEaYmkXNbZMewhcAR9caxQMmfpjimzQ==","shasum":"ff25f5b8c705a8c01c863ad071d77138473213ae","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.11.0-next.1596523086.92288f125c8c20edf7371dc9433371e4507c7541.tgz","fileCount":5,"unpackedSize":25881,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKQJPCRA9TVsSAnZWagAAmYIP/2t9EGBtx/TrbZHczhWM\nbfmpgGBG5U3PPQ/3E1kNVePTOmZrzXpPgDZ5WAyA/GsR5S5DCkCcOuwHqRtX\ntqusijQPBVZDn0FV3GHrflekar9BSCiM9+Fu7zUPuEqdy6jGkB5nFfTUKfpZ\nvUiMpIU8UENLAXZKMuN0gIHxU41pSdtCZE1wKLIDGHhamP/4znsF4Lun6DPJ\n/reeMRc86CnSyXu59Z1BZsme01JfuimQLqBFXCs5Y9vdUw7/izNxQq8XCnJx\nya/eM1HkondO60oMstx3BED0GpcjHnPXrDqnkg1Dn1+o2bfbtK3KjbTdGT0B\nKqYv1efIlauOavk5moqmxhU4nZae48pYQtNUbTAbbaEBnSQN+lWpfPAEDUEr\n52ICtJwL6zHlliKXSVgJdHEmcgHkSYGao7RSur9BMh6hu0eJmWiRcr1eR7e5\ngpTSAkPTJi+zOjCrM/IN//wXz66XPGSsIEzsxbcEheFz53tF6zhIYebsYvnq\nz4R1l6Y0moJKgq60vZoZ+5vfqCSFGOHm4G7zTe3/lYsXDVZdyMQShtxc55dv\nxSAgDdy3fU4pn+eIYD+giJcjxouE7/111g22DnXxbo5ISDdQY91FMd3Cz1zP\nsaRE9sdwlMHzJqeags0nnZVKEhf9X7frOmWn+OWIiu9obOEvCxDmow7m6dyd\nUpl9\r\n=hlHM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDm8r7w6MdJi4st88pEdVRUKiTsP02y44VTF5SYhk8wqAIhAN+mPBM6sWxq6D/wH/YajqMEa4hdE3U5kNRl3aFUZLRr"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.11.0-next.1596523086.92288f125c8c20edf7371dc9433371e4507c7541_1596523087429_0.2878815586547747"},"_hasShrinkwrap":false},"6.12.0":{"title":"Safe FS","name":"safefs","version":"6.12.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","assert-helpers":"^6.19.0","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","prettier":"^2.0.5","projectz":"^2.15.0","rimraf":"^3.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"6c2bc86aeb0963e0ce0cf3ffead0ac7f719ed216","_id":"safefs@6.12.0","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-AH5E4vT64a3C//wvyVFk3hABgefRbt2gqoW43uPlfA8LAe3Vjfkc5kaKd6O5LalIvHdDxc6pMOya6e7ZI/qJYg==","shasum":"a35b5c6a75a3d8c51baf282b40ae69b2b024f1ab","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.12.0.tgz","fileCount":6,"unpackedSize":26258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOvz0CRA9TVsSAnZWagAAsTMP/0amO+M+I4DpP68XY96u\nxEliMtHO2zn0heUqZS0TCrDoepTC1ZidEkoPJ1KyXRwp9RY8+kdPTEg6ADp1\nbZY2oQuJvw3oVgEJ3cX5OjUk8Gk8RvhR5hTEK6kbMoF52cjTpeencINiqxSJ\nA2TQ/UbCtxoP0BqFP7x1TEfxAVkt8g+2QyO86I9zQXg2cJr5k6sGEGfhCcH9\nYQvW7jHLlJhsQimLpM3yd3Jm1aj7FWlxMW9ePG41lKolXIpnUlgTMu3eni0y\nkk3gGcT2Wdr8enUJOz9Nysfz80AaiEyot3OGDIaVUedvhZuRYAI/fysiM3GO\nnCJrmWfF7csMN450sLLoLmycdFvCNRIkUZiRue4Yr7cwg+Yywl3ZF9+xOYlX\nnsdZzLDPvDfAYhUtaph/VUDCybS1+d1gkYPj8pECX64nd34IY23MF00chL2G\nw4YcC/OHlug1InBQlc0OrEFVHb2O8LlwS58O9OW2GDe+B3iToDkzwaMrvHW1\nsShC5sXjArgbKAm5tYwWDKFrpe123X4K39n35+Jhko6DslNb/J7RYzydhZ4d\nXMaGplnbSTkinaoEvh41TPovMkLbFFtHGGUV8fvLrGJyRzqzzap4QDs1ePjK\nxy8WfwxGb5M6zhNhc+IAxcAeXTkvap9pntM+aHRqKvBkePW+wi/kkJ3WcXvj\nhbW6\r\n=Lc46\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNMYpZX2cuhw8AFB0Gq0TvNchaz7Vyl1L8d9bZLiHP9QIgZMn+D8P58k8Q7pFE92D82FWFA7ioPIwtZs0g4PksSU0="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.12.0_1597701363752_0.47114520692687"},"_hasShrinkwrap":false},"6.12.0-next.1597701390.685a9b3e5487f7f2a0b11c2c75993f2eb66694a1":{"title":"Safe FS","name":"safefs","version":"6.12.0-next.1597701390.685a9b3e5487f7f2a0b11c2c75993f2eb66694a1","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","assert-helpers":"^6.19.0","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","prettier":"^2.0.5","projectz":"^2.15.0","rimraf":"^3.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"685a9b3e5487f7f2a0b11c2c75993f2eb66694a1","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.12.0-next.1597701390.685a9b3e5487f7f2a0b11c2c75993f2eb66694a1","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-baku/1IuQ0Yw6u6WDPgkjEOOCfw94vkJe1wGjpJ+un4DwIfT+NaaA3DFdlA1t/UAUaBJa8u/uFzSBiuDjFw0Xg==","shasum":"73299f1644617faabffe57053b93aa33bd363fd9","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.12.0-next.1597701390.685a9b3e5487f7f2a0b11c2c75993f2eb66694a1.tgz","fileCount":6,"unpackedSize":26315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOv0PCRA9TVsSAnZWagAACy8P/1pARFM01C3Ec1+IHr+7\nceFZILwyfSZFoYVRzEeH9D4B+v+zyGsgar2ic8PqZjaOSubeHGAeMxzUXXcx\nfJDWA+25/eMQy9Gw5VsSgBNetbSXd7hGyIrA2YYvI7vQXexN1tEieO6wz5jT\nNGY+id+J+9jYqNkfZxk6mKoq9kcK66Ig7Mp01Q/zSBR0Z5QmXM4wceK25dVj\nIC8EVzoyEqJx6L4oVHBZ2VuwzS4h2ki325lOVxBWOwyoKYvavPAn6sr1l0A0\n42KrbD9e6j112F2Ptyj2fQtKiAiL9j8vYSqH3JgntgVeDFCtn2L8XwUffwuL\nakDAl2zDr6ryHMj3qs2oh25x6+lpozGzZb74L81BWKcQBhzEK8ax2SIjN4bs\njNV2+oWFrT51q8N17fT4D+dcJD15v8YvLQNS10gkI7cSvdJVCjSe9xxAc8mQ\nvVoNyEUp3/R6oPb6FzjU3hvVaKzecfxmgpJcZyX5jKVHPanH0rcz5j6RpCNI\nO9MfEli1nuWcnLzE44vkN6dowN+P738Dwlq0JIUQqbBMVgBHQolHaZr11Iyr\n4WS6CaCRfHdAGZ66VHa5YKBGuDj7v9mFrmH1FhTgGNO665K1SBQrcC1x9cB3\n1HpE2FaK58eWr4WWuFpAvYlCqow38Agq9hH5g5lD4ZeArkU2VhOBoeFV81KM\nwcW3\r\n=xIUS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3xjn1dpdcRWqifC95j/NQS9cClk7fl+VJVa1NxSh7XQIgFcUEV43J8iXMQcPyL7fa08ScUpG25IszbNnymnRxmUk="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.12.0-next.1597701390.685a9b3e5487f7f2a0b11c2c75993f2eb66694a1_1597701391409_0.8475057231951466"},"_hasShrinkwrap":false},"6.12.0-next.1598183321.7616aedd6951232f5c315d474990ac6bdee7a176":{"title":"Safe FS","name":"safefs","version":"6.12.0-next.1598183321.7616aedd6951232f5c315d474990ac6bdee7a176","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","prettier":"^2.0.5","projectz":"^2.15.0","rimraf":"^3.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"7616aedd6951232f5c315d474990ac6bdee7a176","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.12.0-next.1598183321.7616aedd6951232f5c315d474990ac6bdee7a176","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-9lb9YpC/lBNyb756hGKXQ7pzpvzV04ADrYPyeuThFWz0iwiGjcEc8RwntWGyoJjASgG8F1T+B07AlJOgxT81NQ==","shasum":"21c43dd01c4df9418b188c9a480fd8e8abbb1792","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.12.0-next.1598183321.7616aedd6951232f5c315d474990ac6bdee7a176.tgz","fileCount":6,"unpackedSize":26314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQlebCRA9TVsSAnZWagAAij4P/2Gzmf1pF6lsu/3fetBb\nY+9pkfd1TycRnbob2gIDnZOiitgZIzG5JzrqurDX7/8pz4ovoj1BwwTd1+wO\nlOjggxe8Fzdx9rbvAfatyeUu05gj6rR2jE9DBcOgtdFZWBwkVnTz+UxYA3jN\nm2rROJL00a6QYDmg2mtI17EC2YDqu5AeyvYycW6VkZxsvdnbn6WFceARHX3b\nLfH3SXpvs4WSnoY/q4DQ3p51e8PQsp6osq6J3MNfWUzA2vMJpSkss/w5wN2q\nX2ogu7pf0WFj0SOg1Gc/RCvgv5EZOhDKBa1rw1EEaOJkrr1AZZTtmC7xgP5g\nPKHOfoIiBOHisEF1V/RB90qimj8/YWuxDDpEaEIZRDqbTwUizAJax6/G9Iby\nYMtOU7igapneFCAC78G8a8lfmXLXBYpVkIfx7fuazNHfsPVstyyJjYXSR7L0\ntYxjC9EsPL6nNH1CBHPGRC2ccMcut6LXQyPrTRWRBjP5bG1ajqTIcSu4ls9s\nEq+s2n/9b3JuXduTT4fdA/X/GP/MHhYqjev8l0nodGLKwnqa5C5rjR8M8Zes\nkCHZkkJhVRVZDj+hdUo7jQm0ALKF/RcdTH1XH/oa+FsbHvJgE+AfJX0t9pbl\ncoEctklvA+X74bP06znfLeHBhOgn9TAVlXAIKL6vnEi6BqGc5eQdnYNw1UhE\nxtfd\r\n=Nbis\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFycqcny4YZuTUwsLER54CNzRUKuLsHyOC4i3wjv3qnTAiEAnSZzGuiL7KDyXqkBD1RjgC0ot3lTxSeITJvFu6zNRFI="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.12.0-next.1598183321.7616aedd6951232f5c315d474990ac6bdee7a176_1598183322770_0.7977085351677033"},"_hasShrinkwrap":false},"6.12.0-next.1598772366.967710869cb72e371e023af9396023ca7dbabf75":{"title":"Safe FS","name":"safefs","version":"6.12.0-next.1598772366.967710869cb72e371e023af9396023ca7dbabf75","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","prettier":"^2.0.5","projectz":"^2.15.0","rimraf":"^3.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"967710869cb72e371e023af9396023ca7dbabf75","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.12.0-next.1598772366.967710869cb72e371e023af9396023ca7dbabf75","_nodeVersion":"14.9.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-MEUWpGXxkFnCOQEzgeOgVC67jTvSjXbFChPgnRY30cGr19o0O+u+PvUud/6/8PT0cRpXz8W9qpWdKsVGWCiIdQ==","shasum":"f1ab92b36db8c2909622d1974a6b721e0356e05a","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.12.0-next.1598772366.967710869cb72e371e023af9396023ca7dbabf75.tgz","fileCount":6,"unpackedSize":26314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfS1SQCRA9TVsSAnZWagAAg2IP/i/pyxuXHGV5l2kd03yH\nKJwAgD8Q+QovwcXRdSh0jeJEo0Hk0LfBXnfq5Hj+3bgOz50vsPkzS+uVLOfQ\nztgj7v1wPd014RTrpLTG+dUtW+AOd4sbjDlc/N75gQZO9priTIjSZslcyoFP\nRVuDwX1sLAXn2rGAzZfppTFbIbIgntGt43Mcef+iUE6wtN/e+gxwRMXcvAAO\ncQPq6Jvl4yidnsIdXPUj0znlsjQ2wQni5/4VlYskAqWf1kY4tCIgeBGs96CL\n657tIOKU0WYRSyt1b1WvDL8/H4lvzl43vL3v2JDpCnLvUEsn4oEIudGtuXAf\nqC/4lgb6P5xg41vm5AUhXMmGQVz6rCxaNy+vKWCnarxsvj3KkX+f8LKXRdtP\n31/YKRUqpgZsibJkVG7gyhKjOr3/L7D3fnR6kC7Dfyzepvxtlyiu5+m4DcJL\nWzGPqPph23U32YqsqKEymIZzlmiXra2Z0T+GMHbLqzU143B0rMcFCPUxpZCU\nuWAZPztjdRO0f8Mqqdu4wq16Tax+NZx+EEa9gSrW/EjA3wi8UejeKGwxcshO\nr0o+jATgGFuMmeZNWQEU6QDcxEqmSnlwufv3C7Q97g019ivTeYXWvymcbV04\n6ygZLv4lcZkivb98rj2NdRdL5OsA21LrO91+B7/wFiNtQZRwLz311T0MsVRO\niIl4\r\n=t6nU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdOSqev8bceBL1tAPJmQ2XR0gWz66bPS3ogPmpQibQZQIgIAHH3ibOPoNsVWxmNfWKIEORGEfYuWQkSbfMA30zhoE="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.12.0-next.1598772366.967710869cb72e371e023af9396023ca7dbabf75_1598772367723_0.6829908601800876"},"_hasShrinkwrap":false},"6.13.0-next.1599280300.5f9e23ad285bdfc82abf4a45beb2845a1161b9de":{"title":"Safe FS","name":"safefs","version":"6.13.0-next.1599280300.5f9e23ad285bdfc82abf4a45beb2845a1161b9de","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"5f9e23ad285bdfc82abf4a45beb2845a1161b9de","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.13.0-next.1599280300.5f9e23ad285bdfc82abf4a45beb2845a1161b9de","_nodeVersion":"14.9.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5hB+EiHda8y+oKSaVcObEbw+K8Tg+5AV5SRitenleWzhgRugGSHMMAymJf5RkSzesamJGlmKutGvQMaQlRDcHg==","shasum":"90043f4a5905770751cfb4c87e0aa1964459c0ab","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0-next.1599280300.5f9e23ad285bdfc82abf4a45beb2845a1161b9de.tgz","fileCount":6,"unpackedSize":26531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUxSvCRA9TVsSAnZWagAAlEQQAIGWhVU9ELCIFgRrBDNk\nPHmO+TOIMmBA/GSxBVCIsMYoVShKA6iTQp/DaytWF13Ftt4ZU+1XT4lbCSot\nR/A6wHN86OOGJ5JZM0MhfceeiyGWDdYAesEdrji3j5w69zi21swuGa7JcFpZ\n17TnE0CjIzeg4nZosbwWfSDlthlEzOabgARdThpE+tqcBqPhs2HHtRHYAbH6\nYP/EbhRCUJeroqfUCR2BExfjqmyj6f5l6Crj/h6X4t51O9lyPjYeqAe8OoGL\nARx51Fkwe93tpuFhpD3o2QIaW10ynRLN5+LQ9n3coQmvAYjn59xQQ3dW3hgc\nwQtDxs2+dSuDwyNZ4fb5ysMseVB5A86oWX3pL0MBTGNPR+IOoQT9QOWKn8er\nMy1FcaJgN/EMrwhMZIbJKuH8/2pGucr1K9KKvEZ5J2uWbI5jnAp0vc8tiUzw\n+XS52kAgkewnP+FC+G1H3Fca+mjrle+QbSQ3zgTQrLZtb5yZvb3ehnmYnf/s\nEFB7B1u7zQa7+yDBrKxUEOMj8q/uOhEOoCcY1qB7gOBBZlEwf2gfDLvPJ8qo\nAlSv1O1pOYgEqCu7sCA+V+JDccJgJlyVH740RDJDjMk7lb8p7SV3PiKAYLfS\nzbBPBY524WrwQuKgFJ78PzJlA34hKaZ6K9KyXneIakNjEsREGtZMbwThm8eL\n9BEY\r\n=CtG8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHJEmjGwWV1PaG7DRk4ht0hGO5vctycTINHfYdNEWR6AIhAJ2uWCTr1vUcYR87QiusCKdoCMfDJmCCKNwMCutL+X+T"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0-next.1599280300.5f9e23ad285bdfc82abf4a45beb2845a1161b9de_1599280302444_0.6082421504273441"},"_hasShrinkwrap":false},"6.13.0":{"title":"Safe FS","name":"safefs","version":"6.13.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"5f9e23ad285bdfc82abf4a45beb2845a1161b9de","_id":"safefs@6.13.0","_nodeVersion":"14.9.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kCx2QWEcmdglNP4sKbwcGQ4GPlZ1MTrkO+WbMKz0GUgiAeHglYYDFOxbaqoDjm0t/A7F7Aea90KLE7fz4Cxzgw==","shasum":"3dfac2d351690f53c938611ffee4d066047c18e7","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0.tgz","fileCount":6,"unpackedSize":26474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUxTHCRA9TVsSAnZWagAAGJUQAIlrO/7KMRFydjW5Gy9I\n/KPNUrTL1CNAgr5n3ENKScUntLSH7P1KJ0OXG5G8MsbtBgNbxqwiRXNqBNJh\nVXsx8BAtVvmGPuS8Y1zI4It0ZxBa5edodw8rWa2GgUQyRvjAX2i9G/IJBjA7\ndStZtClUEXnjHsHEBJ3Y4HNMQJpf0m42PCpAtuMipjx9mAAl8xE+aWcifGDG\nHb8CrVhyMBHdel6wL/8sqbOEKiF4JJXY+vUbD+z7bsaQD7qyxc33z2qGCi3h\njwHkmIPNrY/iIGj03KdhsmM6dA5tbLWdz3oGNKw6d3Rj8DBZuzSQeRASrMRn\nxWLyC5mS1kdxDFSxG7X0kTMlGnMTGav+wXvAUAAvrCURo9JAmoV49fIC2SVQ\nved/yezYe+msECLkTDATaruyip9/F5jXf/SS6+ef7rwEGrtKmsixXQ97qChE\nhZobNw7yUfyEuuIZ2bynY/Elr/dCcDZCgINWKM/9OPJdh9RBV88oVsniqkJL\n66qeu2EMOCBeuuFpEkpSZKcLEKHndWXPhz9Ogh5QOalh6wuZxziaT1/Rjn4e\nL6DyqFkcQ9pLz1lLvmzWGAvik0qS11D7yU1spl8bmErpPdtruobJZQLqe0r/\n8zwcuPVWJcECbEuN2rLh97Im50s5eIetK2BUxJQgho+SuzL+DDj6ATMtQ5oh\njJrb\r\n=9KW/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDONbiJF3GIpXx4jfPTQRzv2xCCb09HALKRuy8ur6rbJwIga5o06IYBZb+DNzBPhluH7QVu7YQ4T2yy2EEf3YsfY6Q="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0_1599280327058_0.5423756132790714"},"_hasShrinkwrap":false},"6.13.0-next.1599392887.b693405c13180836bc1c20940f8cadc7c9b7bb6f":{"title":"Safe FS","name":"safefs","version":"6.13.0-next.1599392887.b693405c13180836bc1c20940f8cadc7c9b7bb6f","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"b693405c13180836bc1c20940f8cadc7c9b7bb6f","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.13.0-next.1599392887.b693405c13180836bc1c20940f8cadc7c9b7bb6f","_nodeVersion":"14.9.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6Om+yIoWMUhX8sB4xUgkpMKfdX99Iy7XGwimi0tx+9Z3HPHWD4zpUG91r9CcozxRq2zQ8vy5pviyXQIpwBgGDA==","shasum":"959108385ea2a62be6837a8e0ddaf0899dca3d0c","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0-next.1599392887.b693405c13180836bc1c20940f8cadc7c9b7bb6f.tgz","fileCount":6,"unpackedSize":26531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVMx5CRA9TVsSAnZWagAAcaIP/j5vSZYp3ssrFjWO2bLM\ng8tlSSb1V465HuQ++3QV5Wm8Wp+5mJ676LvWDhVLgrpSDdG/xHFHA43He+J8\nOVl1Ll6XnwtLV1ULqjFOiZwD9gme+8tAS4Uh5hYfSrCWllxqPNEZHOWkhZTl\nZwmndjaJJxaX+EPo/5AZroWXyKeAH2PzhfZceP6ys6zApwWfMZ+UrtfRxMFk\nYCFqyQ7ilWjAmCs7sR66yeBosHZTe88Njq7AQS/9X9ObdmFooOKApoNZUHf7\nhZDbC3FOzHlcZl8Ym7D40zvhRZdvtyF405x3MjvoiOpJWqwJgNZr6oAII0ji\nv+TZrn/Gpn3gVffwlJHMFGI4L/rV9K14BWppZKfrBtNVJwqknwjqicjK7x8B\ne+xgmcWHG4WoDVmcXYBvIvCmW7pn2wj9v1tH0hUdHPhQzfrkg2uQ4//mi6J3\n8W5y5Hz2+HuLb6yWJYAMMZ4Ig0vztzGz6CnIKK2lQqCanKc1sB0u7U61LWjP\n1ErwoUEnqTd0Nxh6Fq55hcSjWOtkVfB85CDWzHbtBS77sv3pYvC4W8Yn4L6N\n6/WdX449n2caAvR2cSrj63B6w8OluYzrWM8Scrn0c0xQf0/YFF3PLk6RJm79\nJhHymcG2UKA7ifX5YV7cWc0sND2oXmaeoaSrj5nuSui4oue5DG2yJfJm5hV8\nvTaN\r\n=4iwn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEmi9OBzyjqv2wP73H6jrgv5da+OmtZk/Q3FDV4Tl+XKAiEA9z53Rd4O6FkyxG8yzaWU2iHRtQqSVnZOXQZz1mk3Flw="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0-next.1599392887.b693405c13180836bc1c20940f8cadc7c9b7bb6f_1599392888563_0.09980043760003388"},"_hasShrinkwrap":false},"6.13.0-next.1599991002.9f51f998df542f0bf8205d76935a0641d684c356":{"title":"Safe FS","name":"safefs","version":"6.13.0-next.1599991002.9f51f998df542f0bf8205d76935a0641d684c356","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"9f51f998df542f0bf8205d76935a0641d684c356","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.13.0-next.1599991002.9f51f998df542f0bf8205d76935a0641d684c356","_nodeVersion":"14.10.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-8nPdItuMcjPxFmDAn4/RarJ0hH6xsdGdzjH56N+CV5zjYWfpAzSUQyHTNUCzQra9IWeZqqYr0Yycw8DHJqA8yQ==","shasum":"5f3155f331ba488c50518733ba0872f75c3c7fda","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0-next.1599991002.9f51f998df542f0bf8205d76935a0641d684c356.tgz","fileCount":6,"unpackedSize":26531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXezbCRA9TVsSAnZWagAAt6AQAIMVbNF8obY+vujlbPyi\nq9y85r78huxjCvlD0UUu27lcsNIJEItRB0of47yvc5srURp4AhRDgmS2DRFm\n0TVmWWAIAeR7KojAeJsH9p25TpbS6RlOoHokpCzkK7/ZzVMbCjnKVHCFLsIP\nCAhFCy4B8Dt665JloQJ29ntxEe/TnAnNiY5hy0bwNtXweKCjCr6nCt5G7im0\n05cnY/p5VLrXkX3dwNXrGZ6CiVVwNz73liGbqEmEAHoe9PcP6nvFsTuKXpDQ\nSSPdiDZkg+sYOnF15vUizoBOCuCguADaL4nUpBS7OScwzao1M4IfVtkfLto9\nnab83bdf60ALBpRmH8uX7lBcTFyVe69mTn91fWRMwIOIDJDDhlGgenK3x0UV\nMk56j7/B8CVm9VqCGxvnddU8JUKN8i19k+5RfjiM7jIfELzRiIvFZdkyRKBv\nAgf/QiGk8N7OlYOtPmWJPfmyV1Bor7qV4H05LB3G2a+KLdI99KdpFuClGIpM\nfLUTIcxL5Sc9LZ+DvFubAUiFk3oSxaHocbut/JsHxsuMIST8mm/zrBqGhYdU\nN6j79012rfGjoMtbxWFg7OjOe0+AcVsMI07xd/XHtFwbdlTfnz2p5MNXPV4B\nlhRV5RnOqXu0We+I/9b+wewdGzTjCv+saEJABd68l5F2w3Cl8uSPDeq1cife\nUO4z\r\n=os0z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEg4NbAvCbDON63a05Q9vFlRIcu4PAD39QAFr3PtKotsAiEArhW9/cdTjBbSwhFu5u9W94aptdU3GvTwHUBZ8CXDnvo="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0-next.1599991002.9f51f998df542f0bf8205d76935a0641d684c356_1599991003401_0.16091060272589708"},"_hasShrinkwrap":false},"6.13.0-next.1600588992.38562b63048565c795104dc84c178ca90d4d6d42":{"title":"Safe FS","name":"safefs","version":"6.13.0-next.1600588992.38562b63048565c795104dc84c178ca90d4d6d42","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"38562b63048565c795104dc84c178ca90d4d6d42","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.13.0-next.1600588992.38562b63048565c795104dc84c178ca90d4d6d42","_nodeVersion":"14.11.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-Xpf8LcB67BhRtLfx+I4q7dVOvgB5KErePtr38VF5BIjezuSj2ZuUB7PTeZDXh3/LSHV2nq+AWznV8OhP4dYXnA==","shasum":"9dec402ff4946a7aa97a8d876c310d4c38c6596f","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0-next.1600588992.38562b63048565c795104dc84c178ca90d4d6d42.tgz","fileCount":6,"unpackedSize":26531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZwzCCRA9TVsSAnZWagAAF98P/A60KNYoSeOKl6HGHY0n\nmlToQIo8qdx2FAuXdjQwGWRsVEKfxtq4nYSZ6Fk50c2eH9QMEzmYw/pFxhBy\ng+ILBSWLY40x/RbXpQBcaY+XmMjwlwnvgJLnYOpKqERhcNWtBzr5FdEpDOG9\nwLw4S08wzkkeD+HRpwIZx+dhn6YbHSIAsZB0i5OLiGUeD7pjOtWKaDBe5fjy\ng/G/ZTCJysFvXjI+R3Sua5oEDZoerzdTFfOv8yyhQfEGjRgt6WU7wjLd0JlK\neEEGQYFdO5eTSftq1ARRVo+iXVwTwAai4AYJq9WYU1TFn0DNnhm5BbYnqgxz\nfvThzjtkFcWVCQ9Bi5ql1gvyswodCXvAm9dd9vH/ComEJ7fuFYEPNMbBvwvw\nnvPA5eSO6zW5x0t+OqaOXaZeOM4Au/FEFA262/bsoKUXz1M0PXpBuSbQPcYa\nCsH3yzf4bO85GPntzQIPruDFNJ48QUt64sAcNMkGZewj/GcNi3zyAT5VlX5g\nnFZlzEFA3w86guzUUy7KUlrXg9nexNp+1RJgk8WmCwkDOM0oWomCPF7QBTbI\nEDyFeSjmYyzyqG/8p0eeI7RrpuF5A+/mWP/gVBjMM0arZlSHWCAsCbk9AFyc\nge8vvYr481MJvl6uroq3A/z3+yYGhvqRtKFuLoPoe0m22mxZNmO8XB+Tsszx\n908g\r\n=m+Q4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFvdBAzO9Ed117PbAsu9dOCRKlPlnqV6Xi9ccM1+xdM3AiEAwFAl3j/bDLToF7HCnUbcgHfTERQx26EMtyt69ccz0y8="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0-next.1600588992.38562b63048565c795104dc84c178ca90d4d6d42_1600588993824_0.36608258997368415"},"_hasShrinkwrap":false},"6.13.0-next.1601202681.9a259ffc66644b488abd6f017914ba9bdd113956":{"title":"Safe FS","name":"safefs","version":"6.13.0-next.1601202681.9a259ffc66644b488abd6f017914ba9bdd113956","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"9a259ffc66644b488abd6f017914ba9bdd113956","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.13.0-next.1601202681.9a259ffc66644b488abd6f017914ba9bdd113956","_nodeVersion":"14.12.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-o+GV3+7tC94iGjG9o8qTJ+6jaW1R4mltN2DNEpNZmTKuqciZMXUXlNqcaOXs7ZLC+AHSomnG67lyzGDgTw0xwA==","shasum":"d4b158800b5dbee02ba2332f7f31c2e26954c173","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0-next.1601202681.9a259ffc66644b488abd6f017914ba9bdd113956.tgz","fileCount":6,"unpackedSize":26531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcGn6CRA9TVsSAnZWagAAxlYP/A0MlJEcVNQPpdaEc7fE\nkER+BwHQBDG/ip5fdCBfW60wSqWzR5YdcAECaqRvtr19gGBQ1qy6ep8tHULr\nHGUjxga1bDjUY+xbftUAk5xDRyYUXxtwFHLb4Wg3JTUJkCRy4xk++VoDuJq/\ni1VFfvVDbQe0r3VqhKXcKEJ4+lQf5Ur4G/OZGPyBLTRfQYjOuecGbKHaoUMV\n5ji1S28LQTtWcUW2YB4HsO/aSlVAyeo9C7DEX6m3SImRuVsRuyRo/KQ6Nkq/\nBleN5KfiIFKqeVWrQ7rz28Wm8Zl3KT1Dc7wB01m82y08wVkwgaUZWcpWz2JA\niUCnGUA8nVqLBiUiiA/s1e3a9EDrcLqrl52WSkBqvJLEKkw0UfQlwJ1M9eo9\n7q0mXCg72XGQB7KmA1Qg93bUhomuk1d+1DwU/wFXHVcakgXy6W+9tGBk4iYU\n9Z1gHrW12sbjt956puOnXtkGmkF1kJwVeR1JYlObpvrgH+BA81Bgrsqfy4lI\nGhqqXqX0KJwHU5FWrtyuuCLicUPRtYVYj4MY0leCd2NhkmJ5f+xK7t1luM1h\nQ6a9Tvx01FM216NqRfoLLawUl1RMxJkUVJPeSe/pyj5wjMcXyV/3mQ4+Bz+U\n25vrFkZ+3ZRAOqIaX9Th2oiM8RbnxwjuZqh/SXmjqoipzWR6PxlELpbdW4aq\nr4/M\r\n=mjop\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgZzE1TqtIuVcVf5ocKvCMvH/wd5J+J9VmpYgRzsgeFQIgB9Xu7sxSIcP6wqwIRIH7q38PVcTyLvwO+Qdb/8BnbVU="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0-next.1601202681.9a259ffc66644b488abd6f017914ba9bdd113956_1601202682491_0.6439413048789784"},"_hasShrinkwrap":false},"6.13.0-next.1601213152.53eeafbf594e13721712b04ac96aab87448e6085":{"title":"Safe FS","name":"safefs","version":"6.13.0-next.1601213152.53eeafbf594e13721712b04ac96aab87448e6085","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"53eeafbf594e13721712b04ac96aab87448e6085","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.13.0-next.1601213152.53eeafbf594e13721712b04ac96aab87448e6085","_nodeVersion":"14.12.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-RgPP9fOkMMhA+4/gUkTIkAJhG5dnMeGyAJrsi78klhkacqe2Vy5xnSi/MC/na/6Eist0bFNFMJXJWFYUwnwbHg==","shasum":"00653c0f1fd64320753fecb7624c6c2ccc192824","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0-next.1601213152.53eeafbf594e13721712b04ac96aab87448e6085.tgz","fileCount":6,"unpackedSize":26531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcJLiCRA9TVsSAnZWagAAhc0P/1xqKqr1BHkQS540uLWx\n+MpszStGpEQDguDSsSuJwrFTmnrf0wbtj5/+SVS6TtDa9SIdWZnUCPxPhODt\n/MNXLtAQHi0G6xv/y27wQQTtGJeqebMypM+cndeR8bt4UTo4zQqHXudKhVzj\n0WgLRtWG8eULr4YRxeaUF+7DKqW7BRbW/YrOtRZtN/2vOyTgnpE8aJnM0+As\nDSdUfyxHL+9yqJi/aGghJqjA2lt7xYQIm5oDkpdti3z6SMjc8je7+bSaG5Ii\n3Vt8ELT1vbDqm5TjGqZvNf3t2h57CbNASc9eICZEjEYgEgGhy+i7w0OU4ksM\ntceE9pLF/SybKxAvND6YRBQNUlvzPavEV35VVR/SozvrOpNNzsA3Ii2bcExk\nSSoBDDO2u/xrbyMOweMw/0+r7N7fmWu8VC50SA31khfxQqEtflVkLBsbJUTP\n4GpvothmD/OriRdJTeZ48TQxHP7PSJfr6lerIC5h2QW0fJgUjHnOd/Zq19TT\nka6IvN4DGe1DlxfNJVXyPd3eJlB/Bj7zt8XZjsyDORSJykNNXjO0yhqPceXp\n6ubKo1o6dnCRyjZgFDUF5m4nD0v+tkaoTuOzb5dCn1kWwuu4ruI1s9eTipEw\ncP3oQEyzDCDVNvpI7ZBV5oOkZ+S4i61Klhk76ql16dV6+UQkiMR5Ip+oIizC\nXb/d\r\n=397y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDo6rb976Qu0WLGBLOnYX378IN2VCdiJsSQRoJbqduNIAiEAlJT82iDuGonAGy6FOyHjbX/cs1uBD4+F6GLMNjd/fuM="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0-next.1601213152.53eeafbf594e13721712b04ac96aab87448e6085_1601213153480_0.30457554969343703"},"_hasShrinkwrap":false},"6.13.0-next.1602405103.302840dd530bb6d28dfbafe570f7601ac0157222":{"title":"Safe FS","name":"safefs","version":"6.13.0-next.1602405103.302840dd530bb6d28dfbafe570f7601ac0157222","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"302840dd530bb6d28dfbafe570f7601ac0157222","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.13.0-next.1602405103.302840dd530bb6d28dfbafe570f7601ac0157222","_nodeVersion":"14.13.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wJtuTeI6eABAkto3seQ30Tuqy7g9JIRg+9veN6k8GAEdKGQMF5sAa5WIFl1iiaN2UIDJPV7hrDfWQ37P8gL5Tw==","shasum":"c2796cf86a65d2c96dd4f51f3a6fec634008d688","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0-next.1602405103.302840dd530bb6d28dfbafe570f7601ac0157222.tgz","fileCount":6,"unpackedSize":26531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgsLwCRA9TVsSAnZWagAAZR8P/0GIOiF0qhsNrk7M8zfO\nohp96bqMkGSx2zo6UJeardS6FROtTAF7YvmxNhmWR4qgHh7DldVQAbsXV+H6\nZHLFo4/vLxLYCxFZv93XhmFamE6fQ8RZ9E/3Y1m0DLpeQr3ktYrpMhv0zk2m\n0y/xRBMX2cvkU9JkeHoOZh5Ye/jbMYBgs4UhUYNWYjSXot/rPWkBVteX6OyE\nACEGy/8SQxjrpWTZjmgn2OYyNS4MX3cBO05+ol+afR5WVXlTRa6GCzRDRnIB\nHgTjLzhkEKUijC2G5EVg085zLaitNNyhUNRGQPlXoH+udAN7+/GfejIQTiob\n10T98/eJM/SkxWPcbdtl/sGPA7KRZo+2aOkYd+H1htqBptZgmlvaoV6x9erb\nIC5LDRLLO6Od3MReG4Oh3Xs0JhyC0Zu4qPK32skLQnQ3IH+LHf1XNIDZxbZZ\nFLZBARDYDB95ymHJRiC8rGfGU2wyVdqkXd/C8dbFL7oXEv7dJk0TmPx5H6oP\nc8CTiqq3fqvNMNkTXT0noxPC99KHsPOC1mqsfUSyEMFxfSGpDX97iAqLAtPz\njOVQt+py4kUwYPUxRMw8/APLelybAXbiFAvVrOJQC5vVlyxivKJBw53xPxKo\nW/q/5tMFh9XOBcusNc6dMzBPsNCVZ5/QMYmr2kprsCeVdXWIvmD6JZMYCdmO\nFipc\r\n=oo6N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDMH37jk9UisZjsnROjEY9DDkzWQNJCzvARxKsz9OXTSAiEAmbw9zHuykrIMR9ZPj4Mn8gDZ3Lp0wLfh1IDyjvS0FT8="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0-next.1602405103.302840dd530bb6d28dfbafe570f7601ac0157222_1602405104249_0.7411315015684341"},"_hasShrinkwrap":false},"6.13.0-next.1603012749.d715df7c9d738ca10d8fd5868132808bf2d79374":{"title":"Safe FS","name":"safefs","version":"6.13.0-next.1603012749.d715df7c9d738ca10d8fd5868132808bf2d79374","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"d715df7c9d738ca10d8fd5868132808bf2d79374","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.13.0-next.1603012749.d715df7c9d738ca10d8fd5868132808bf2d79374","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-TkBgcLF8XXigXBjf8YGPjxePheG99PEdjssnIsK7kzVxlDJLyOw63RMClyvCtTzIUfLsa1sCW1igA96Ogz2e2Q==","shasum":"b9b1a91dc6e462a22411ca89ada679624febdada","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0-next.1603012749.d715df7c9d738ca10d8fd5868132808bf2d79374.tgz","fileCount":6,"unpackedSize":26531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjAiPCRA9TVsSAnZWagAAXTQQAIeUx5yvVpkSODOKu5sD\npu7nt0zJ75r1YkCY94Mu2ZZ4w2eZuUvpnKhXGLNJYTNkYl+Cg7QyyMS6ZmFh\njGHCGSSOjamQtPQZbP92/6gFXwcT4jh8w1Qb1TUn+tJ5jLeRJWXsDuRSE3hd\nh3vQCR1b83GwY3DqmI/Z2RrjXz7Q7oMZU00ChIwhRGsa92luOGulIX6n7qlo\nM2udMihWXTQ5UjqEDctg/vWlibL3Eibw7nl+yspvm/nuu7t5q9dk7ecmN14M\nkb9z3gdX7SNpdcEjbltt41+WZ5HqnzS9jNi8Hewf+zXP6UfHQmbP4OPqRkLr\npjaCUmSTkw5UPsCVeVaHacwQd/dTXJ7eHD0DGOqaLgs59ldZ4HYTt6UbHgJ4\nje6lpayEmm34Hwnj8OHu5CNxTyM2VlXP6dCyA3PWGRsBRugRkXH41+wr0QGS\nm+QUlx3EPyFMKNQ3+L0SEOpLKWooHydhJEWs+AXRCG+cOQ3RO5ElT+mr0zQ9\nhXuY7ftDCqqKZeoZWYvxebygzU5MsrXpf5PJTswzjd8/gXxoHwuPlbIyCXsk\nHXAFTM7Hcq3Zh8D7MnD/xEaGrm6DU4YYMNwj5L6ykj/womkQ9ToBBllSV2Gu\nd3Vm4xDJ/9klxzYsh8MfV4qQ7bG6saJW6ZNIjZ0WK3ZdD6bYoAkYu3/qjLvM\nOa/X\r\n=KFh8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDoKEHILrM7gHumsh6H//p36TobZBFUy74zFrsDfwGbDAiBZoGWQxZK0DDbcYfWTyX7CWazKKIbyQ6y3dXyQ25nNRg=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0-next.1603012749.d715df7c9d738ca10d8fd5868132808bf2d79374_1603012751292_0.8060409860363242"},"_hasShrinkwrap":false},"6.13.0-next.1603618318.7258274dc6510e88b72cfbde2c84b1d616662181":{"title":"Safe FS","name":"safefs","version":"6.13.0-next.1603618318.7258274dc6510e88b72cfbde2c84b1d616662181","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"7258274dc6510e88b72cfbde2c84b1d616662181","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.13.0-next.1603618318.7258274dc6510e88b72cfbde2c84b1d616662181","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-hdKak0CrpybAEbCv826QDNUY1YEWCI5HBt42ARKhfID1khYsMBpz+PkJb1/N85a0HKKvJFNzdRg/HwtAJfjQ+g==","shasum":"c1341dbc994d64284886f05acfec2b07d8aebdc3","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0-next.1603618318.7258274dc6510e88b72cfbde2c84b1d616662181.tgz","fileCount":6,"unpackedSize":26531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflUYPCRA9TVsSAnZWagAAkVgP/0h91vDrcvqkbFi83Bz1\nkwpbmR5joHGSZJSQreTMbNyl8SYGIoG+300tl67KsNzOup/REboACh/Wc3qB\n/sxqI1LZsWJwfj0WETYY3lZWHLf6oyvvjY4GO2Yyp1APk5VSy94V63WAd0cR\nVYyOs61+kzKKGiFeVWJI79zymUbc9frZ0XCM15mHcDrgxylAZwd2SzAYq2g5\n3Pe0VdJZzq4m9g4hmNReswuXN64mXeH7KHPq3pdgaLXduonDMTYjxAPZzpUO\nBsk5sE2emZEKFoYf1dQF13tc6fElJu4net9PJP5W6Yl5IXb/tmV1REDBIzPo\n2S4urDB64IJAMiCMDuzpoUivShlxFWWwX4l+E8emgOsl08jL8iAe//YEBzcX\ndKUt/AZ3tu01PjNGJMv75Tc8JG7MXLE97hQFEeoy66MO6hFodd1X0SNVV0f5\n2CLOVlf++QC+wqZo4KpbVWX9JQhTdacOkzFhFNJY7vQucgFSCXeUxXw1TnAd\nGSAei5paQ1OJH09/M9Ghqg0z3Eg90PeW/tdp+9ZmsOBnlHaYSoP3GeMxsxix\nyYoDW2QrPPn+JtQJs7/rxInG9lR548QUOKBzy2kAYZP9Y6HCB6mO4O4QMu/E\nUAVmhV1CN3dvH2UP3Pa2/q/bp0PeZ3RAPpEmCSVXldc/jr6Eo/IvexfBLuGj\n8Nmh\r\n=SQm4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEdJZCKK1V/YDXEJWd7emFu8lWmdBHVUN2rDjzCbEoVfAiA6WV+yhafQrOwmnOBrz+kZ85oEJKYxndJfTyZ3ctvEBQ=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0-next.1603618318.7258274dc6510e88b72cfbde2c84b1d616662181_1603618319365_0.5435069332778037"},"_hasShrinkwrap":false},"6.13.0-next.1603629268.1e65add73222ea8693554c2844a0a10bf4e3e463":{"title":"Safe FS","name":"safefs","version":"6.13.0-next.1603629268.1e65add73222ea8693554c2844a0a10bf4e3e463","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.16.0","assert-helpers":"^7.2.0","eslint":"^7.8.1","eslint-config-bevry":"^3.22.0","eslint-config-prettier":"^6.11.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.12.0","prettier":"^2.1.1","projectz":"^2.16.0","rimraf":"^3.0.2","valid-directory":"^3.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"1e65add73222ea8693554c2844a0a10bf4e3e463","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.13.0-next.1603629268.1e65add73222ea8693554c2844a0a10bf4e3e463","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-LxpRgMXbwuCCW5l3SLVUVGPRkZEVYqT0VMo9R7eaq/dGxBTMNBM5BakByLZ6vby3/Sy6NbCddRXcpS/xv6eTZA==","shasum":"5df5af6a73431655915ccd642a7b44b39d305a99","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.13.0-next.1603629268.1e65add73222ea8693554c2844a0a10bf4e3e463.tgz","fileCount":6,"unpackedSize":26531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflXDWCRA9TVsSAnZWagAAHBoP/Ajq9ewWxzDuLxBfLVl1\n4VZNkCr8l30I66ajVRpMCzDihs73ow0XD8s1r6LdO0ajocPyv/HWC82H+0qo\nFYIZ8/jxOJcgMmXBKGKfrLbRn/PIDqE6HKk6nihHA23fpB35FfSxHmquq+XP\nwBzccOU6CN5sapmmDyNCckHYP8kQYckx5A6DwLI6JpmU4xrInHshPcdDXK0k\nWuRmXYsqhUo2NTVO3UVziYJFuqQuaeXirRP7EIdmCypWuzppbudBiJ9w+8xm\nNhBImy60FtR6JpcL+tJDok7Hd4Ogdvgcz6X9PxclisErs/GFMNrqH3GhOq6h\nvmmiDo5j5Ftcm9X4ymRiXdCWXIfH5WTZvUviT5ixmvNaO7GWkjV8xRlGAAoE\nfiv637TXydwZ4SGbBxDdLI1RqlU3eH54JRWHB2PmI5rfbb/LlCQlgIxXyIoM\n77dWXY8YksLagYgePWFsbuIOoZ8R4ao8Kg01/0udoTQ1EXUZebtI+lmrYerg\n+pn1Iqx7Vpx668RRvEaw7mjI8OXQBNHvjbuv04k3ygZjU57UkQI5fFCBN96g\nkCCtRx/82eJ3I9aWjcxDbeadj49xAtDeWjwAIauSVXeZMcSm19N83vPJrTWJ\nCap+CGAfELHj5EXHa1qrmOE04FUAv24bgbiuVhOBWUiVa/Ux8zni4JeM3KrR\npE92\r\n=NBAR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF3W+SvrsS8B9SoKwGgm+mZlvTEQkuqbA/piXYaCU/6yAiACw00/hjsck1SCsBDYqKdEV98dcrWqzVZp/rq0y9vA3Q=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.13.0-next.1603629268.1e65add73222ea8693554c2844a0a10bf4e3e463_1603629269630_0.7438443807387336"},"_hasShrinkwrap":false},"6.14.0-next.1603942046.5a1a0cbdd68a048a3645278a48d6b8df9ee46b34":{"title":"Safe FS","name":"safefs","version":"6.14.0-next.1603942046.5a1a0cbdd68a048a3645278a48d6b8df9ee46b34","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 14 || 15 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 14 || 15"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.17.0","assert-helpers":"^8.1.0","eslint":"^7.12.1","eslint-config-bevry":"^3.23.0","eslint-config-prettier":"^6.15.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.13.0","prettier":"^2.1.2","projectz":"^2.17.0","rimraf":"^3.0.2","valid-directory":"^3.4.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"5a1a0cbdd68a048a3645278a48d6b8df9ee46b34","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 14 || 15 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.14.0-next.1603942046.5a1a0cbdd68a048a3645278a48d6b8df9ee46b34","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-24kbmzuT5ifLRYSipyftv5LfYobJiqatVIWNKhp+9FWRwkc/XrtX/HRQX33Ub6/Qs9dD3cTIwdnelWnSFrQb6Q==","shasum":"1f3dd47325325e088147f26031e9edbf7be01340","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.14.0-next.1603942046.5a1a0cbdd68a048a3645278a48d6b8df9ee46b34.tgz","fileCount":6,"unpackedSize":26730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmjagCRA9TVsSAnZWagAAwh4P+waIjuL02Wh3/YNoyPRc\nHa8xt+NFzJ7SXKfGeenO1m/kvvW1O2sC2djk8UX6ZDNAozNL71ED4PDGskkY\nbzX4zQS747pg++KL6rwnihOBhsHtF9HtOHukXvBsJ/8KxRoH9HQjS7xBaoy5\nlVqwSIkBjjSD2bgXwB6pADy1HSml5T5HiVSJ91LC8QLLhHgurmatFDM5Ikdq\npSspoVcsaCU0X8t0wYXVBn5Tfv7y748GyqUh0estoAxmTgaoBDxM2MuRn+Pk\ne6qHvw73HvMQwoY8iVKzM6ef6H/pL6yBBkE263Xo4nHb4+ry5654F1A6GwIH\njd5HrLfNHOew8Tcg951dtAGj+RdJNaIQRgihkqsYHWssWJWULRXIhuHd2udu\nN4AjtRLsjMuZwa/iWoMqTMPLJLzX66VY7slWO5M6TaWg1s8/4worJRCfHG8q\nuBvPHfp9vbu15pV3kR3DqaixGsVI0Yv3leNPdQfJXxGSds6tvQmhG9dwR0mi\nUIT9lgxbp3mhp+wpN16Dh3GSh/C9d7gN2G+v+00XFGz78hMjCvCqpy1ujH58\n/jTt4VzvTzM4HMNlPYyCtXdD+s2UwQ+oF2CYBeNAeOfWrVbLDAtcEjUTrSbh\nXztgNtexnF7mAQuVaWuY03OT8DdFYQn5GYrXcNCmIcudHpu+7/d2nzQDHdQQ\neE6c\r\n=MV/i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGzSmhaZIgiz0yxBIbRNbpygAG9ldonB64n+hJIJL44QAiEAxKlunZh/ItROQBFZf2+TRAt2YmRwJSXIwCNq5smPW9c="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.14.0-next.1603942046.5a1a0cbdd68a048a3645278a48d6b8df9ee46b34_1603942048396_0.5576181886255787"},"_hasShrinkwrap":false},"6.14.0":{"title":"Safe FS","name":"safefs","version":"6.14.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 14 || 15 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 14 || 15"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.17.0","assert-helpers":"^8.1.0","eslint":"^7.12.1","eslint-config-bevry":"^3.23.0","eslint-config-prettier":"^6.15.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.13.0","prettier":"^2.1.2","projectz":"^2.17.0","rimraf":"^3.0.2","valid-directory":"^3.4.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"5a1a0cbdd68a048a3645278a48d6b8df9ee46b34","_id":"safefs@6.14.0","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-giMaaBcOFXBBOlzppPg3BQa1fi55HQoTeK/V1NNFGT3iT+FWtfcweEWeq7cRjnpneIZwjYNk1PGDL+9YvD95HA==","shasum":"edf11702c6696bf6b1dc6aee4753b465c5034a88","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.14.0.tgz","fileCount":6,"unpackedSize":26673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmja+CRA9TVsSAnZWagAASHcP/j8d/owFwArkvzhE7zhG\neckQP487dqEjSovBL8dEH259sIczriwrDEK21ohsHKARyceay+MbbqXd37C0\nGKgeambozCMOfCQGuMKF1wJuZOJPLNnS0zi1eOA12XyryjyoeZ6seCnVbXf3\nqVzFmL6HK0ajx4dQm9AxbKqPDeCR3IddXxIP0knIKSYq3xjZdwRZC+j1FB+9\nkc/+x0iAuhN0dUuJmEB/q43GV1LF9i2d3/vV4PBbhlYOzKlrPF+6ZQCskEZB\nnX6Q0Ep2anQ+8wsBPiMpPMTOygY9sRyRGej7ZyFaW14OnmEbcsSQjczgO39n\nTRUb83213VQnTo4eoOs/b/JAsYZpvRXSjpCdAWCpNOPqbSPfzh0r2XhHHiYj\nwK6JXcQnA900T2a7XHoy2bHyF5VlaCYqdxzuU9d2IFiSIH0zcKElbyczM+90\n37T7krlHNETbohvTiB2i62eIcTQfdbUfTpnYGgebh6AGIrUJimrkznlitk3A\nfOMxnHrdZ2QQD06Aftvt4n2P6SAmh08qI//+3CfO9ZavL1ucw97VdCF+DAg9\nXDCeJdc2SG1SbvKCEgM6i8lORZjMtIba6bcRTasAZ86+2loYf6/3OKXw7L9g\nZWG55fJ+ttHVZt30fURQnH3NdTubAW4+gIOx77784jrSvEQ1uqHZn616PN7d\nIiJa\r\n=iAmg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFAPK9+7t48AJxmGnq6k8XF4pIDCSL4K+wxOvaAQpjVGAiB8CXIXfOrMN1ROyuSL4OT6vamNpfynMyA5gxc4ZT1Vmg=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.14.0_1603942078297_0.34813649433880833"},"_hasShrinkwrap":false},"6.14.0-next.1604222254.95ef5efad11841e78243d5cc862a587aa45212a2":{"title":"Safe FS","name":"safefs","version":"6.14.0-next.1604222254.95ef5efad11841e78243d5cc862a587aa45212a2","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 14 || 15 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 14 || 15"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.17.0","assert-helpers":"^8.1.0","eslint":"^7.12.1","eslint-config-bevry":"^3.23.0","eslint-config-prettier":"^6.15.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.13.0","prettier":"^2.1.2","projectz":"^2.17.0","rimraf":"^3.0.2","valid-directory":"^3.4.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"95ef5efad11841e78243d5cc862a587aa45212a2","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 14 || 15 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.14.0-next.1604222254.95ef5efad11841e78243d5cc862a587aa45212a2","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-g9WJ04JBndA7w8GlYp2iL/Yq7qilw998QokFsX6pXSN/EWU6O0A1fEqDYuGYdp03E0y7dBnExc8JTguq/E1PIA==","shasum":"6950e17e506eee14067c1ffe935c0a5b184d1577","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.14.0-next.1604222254.95ef5efad11841e78243d5cc862a587aa45212a2.tgz","fileCount":6,"unpackedSize":26730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnn0wCRA9TVsSAnZWagAA9JoQAJfdaxFRVf6TmOOybRns\npCmt9Y70E1Yye7fylbGxq1uypYXfHa3+zX9skwqHPxAXDqQa5SAHz703pnUh\nTwYtddBywG74zzHZC+Okumw/M/33TxJBNwicjoBLiMjIIdSzFbdhFG1+iYe8\nj2w70xjA1zdp/j+RZAU/VaSI0iI04vjn1Do7V1NTLtObHj8uJt9OqDqRk/N4\nq7c3ts+lPCjiz17/fnxWmG+cgR55ScXsUAZkrxeFdZmdFawi2/aPkDZS0CP6\n+gXqKN51uLN/oDHtpBnLTgFP4XkxMOEHl1k5mDZwYezSmvT6fD14FkeVyDft\nwMaCopuuz7qiL2edD+/TiYQ1RNPpOKzqYB5n4KelFHksVMI3E8JiUhCU4SRK\nhzZ8Dxs3tWQkFRCy/t93c03gHwzqCedLjmE5hkd/4hJal31INcDogTKrODrv\nuARUDKUJlyQwokdSgk32nYFyJE1WJHaZqopgZSSrO4kNA4YQa2ZNvTXu3drm\ng9Dq6570sizwKQhhv8RGOM6InBXjuykv6jzh6C5qjeLLhYkxzSMY86bqJAgP\n4dy52aYqvUi/CDbiuXZXmnYXzkhsCeyDOavz+m2/0P4TVl2xe9NJLZBzj6ik\nhljWnvEy+SH/SeiMzJRDrwgJzQ8WBaHJPiY/vq4KuextpIRkcWPb0qJkC6yI\nWYI9\r\n=1oqB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAgfXr4NYCNierOYfAigN9xgO1tXH0QmeBM5Ut76GRuhAiBXxeDmlxJKHiKGP3TAxAZbFfgPkUB2br1BOqNDmHvM2w=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.14.0-next.1604222254.95ef5efad11841e78243d5cc862a587aa45212a2_1604222256014_0.8688702655180647"},"_hasShrinkwrap":false},"6.14.0-next.1604815542.8a866b1a4c509cb6c390f42102a60e422a788080":{"title":"Safe FS","name":"safefs","version":"6.14.0-next.1604815542.8a866b1a4c509cb6c390f42102a60e422a788080","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 14 || 15 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 14 || 15"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.4"},"devDependencies":{"@bevry/update-contributors":"^1.17.0","assert-helpers":"^8.1.0","eslint":"^7.12.1","eslint-config-bevry":"^3.23.0","eslint-config-prettier":"^6.15.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.1.4","kava":"^5.13.0","prettier":"^2.1.2","projectz":"^2.17.0","rimraf":"^3.0.2","valid-directory":"^3.4.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"8a866b1a4c509cb6c390f42102a60e422a788080","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/safefs\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/safefs/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 14 || 15 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"safefs@6.14.0-next.1604815542.8a866b1a4c509cb6c390f42102a60e422a788080","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-J0ljUHETgrKDq5VjgdsCP8vFM4Qxt0dtWna37OXJayB+bjI730NfnES4E6aZzfXt83ZwA86YJ8gbGGiGMzsvbw==","shasum":"a4eec808169f032abea1ba8a785d2804650c9c0c","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.14.0-next.1604815542.8a866b1a4c509cb6c390f42102a60e422a788080.tgz","fileCount":6,"unpackedSize":26730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp4q3CRA9TVsSAnZWagAAS8UP/i8jPANRagLpo7dyBwmP\nrGPTELZZEC7U/TkF5D2FYvjInw2/Gkbulcgsq3Dcx6j1+AeWAxNbrijUcQ3a\n+QrqEnCQjXAIR1ZJi7UWk0xx8vFJ7n7JTZIYWVPwpjbVM3jjvvMf0PdOmrkh\ne5UF6vFsUNXkFe/T9eQ9J5NVICU5XtVLnqiPyG6533U23Oc7HwZjr+DXCRmz\npTTX9kQwODm7ibu77ncmKmx4DgDEnbJeexJGTcO6JlC3eyu9y5waZELBuxID\nriM6UC71pDr6/OGyKUPDO/Rr4soVBg+Yi6Q1KsAEuT8Viq4RNpDaJh7cZxjD\nVyyq0wJy5MFT3HT6UW/qEKfVuuMbeZg7XHRMUWsJgoFhY98Mt378nLpg7xCc\n//xzGxP/HQOWNZVnoeq5YbG8aF7UkrxwF745ui/+Y3Wf0tnwF3CesbbEIu+v\ndKWt+dnWMh17SIFpqcH6+3k/g2Imya/oT8ITFQ5sMe2l0HhlU02aMs0vF7WN\ncUoweLtQon5MKdHfSkrcDOMFe9lsSvX6LlkosRZmuNJzln1a5el/K17n/cz2\nmS72Optav5q2/h0pfRiQAoFX1pqB9+HOq47UAJHHuln7rnpyIzLg3CO3s4La\nKdtdgBDAs13QazQhEUl7N7d2pxVYfOlU/eBRAhP9yNPklgtfpIeGGK8XMhuV\nGV/2\r\n=B0LW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFynAXy1AzJrURq6b+PbpUF/H3aGW8kLUIABf5Q/iSycAiBpILFFPkzYU19f/aVja3/dZFKESSBiKuqjtZQfo+X1RQ=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.14.0-next.1604815542.8a866b1a4c509cb6c390f42102a60e422a788080_1604815543399_0.3684173318652457"},"_hasShrinkwrap":false},"6.15.0-next.1627430530.3142162155ca187f63b56b4192488d6bebad2355":{"title":"Safe FS","name":"safefs","version":"6.15.0-next.1627430530.3142162155ca187f63b56b4192488d6bebad2355","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.6"},"devDependencies":{"@bevry/update-contributors":"^1.18.0","assert-helpers":"^8.2.0","eslint":"^7.31.0","eslint-config-bevry":"^3.23.0","eslint-config-prettier":"^8.3.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.4.0","kava":"^5.14.0","prettier":"^2.3.2","projectz":"^2.18.0","rimraf":"^3.0.2","valid-directory":"^3.7.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"3142162155ca187f63b56b4192488d6bebad2355","_id":"safefs@6.15.0-next.1627430530.3142162155ca187f63b56b4192488d6bebad2355","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-hIDFXGINg2TMMbB3r9Hvml0dKhcYj6i5AzefBkyVxwiz/YIIqeBNpRj8q6vozjEN73DZfEgu50WKCCxBWIgJOQ==","shasum":"01746eac417d3247956caf6a217166f07efc1a44","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.15.0-next.1627430530.3142162155ca187f63b56b4192488d6bebad2355.tgz","fileCount":5,"unpackedSize":26710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAJ6DCRA9TVsSAnZWagAATzgP/00Pc+lOirJaelmkLUtp\n8rb27ApU0JHZ8rYw0Jk7dLKF34/tYPj0ac2KYDshxpcXTmb56e2ouBFP0rsv\n8MRbd68Jk+30S1Nq1ElpN0ydALrLXgDdrG84G2SsMNpnA0MPWU/kjAYj69/1\nXcfUfkW8cow0PzGGXUmfpMKejUZAU/PGDs1KjqmRrapooKbQ4sNOhR/3wCde\nkZ/2ycGr8uj0/cYuksSsOGpWV37BrGYYzj97GhbpY0lwlNuI1gMU8AuHDfQ9\n/DDcgxMI2XFxDpQkwfhi0JnufbfHLhMChh90+QmJ/6MYYO9PTEGIoh7eaSgW\nBSx9vSI6EKGyPLKj8qzCTHwashrSuuVMOI4OwCIRDE7GB9xAXc0RYpeQGnXh\nwL0fwfAylovz0a3eKF4Ed9aHyuDvnhviAx+o1+U6NveIidr8oAHIEFPtXX3E\nz/+iAXl1LUR0mz7JRUWWDd4fhW7ZTfGTSbH4J98CdInFlPMO0no49dj+lISn\ndpAF7/fTojnDLu4oaTe2zbBaUNbNJ1I7/T+YxF6SbZyrwZtj8Zz3w3GtXf7m\n+6IVWHtv1nkEQeOCiQXjbTBcQ+X3bbiZwzOfq5ekbc3NJxnimnTWCLRuFJkc\neHP6dnTPLOavPwFiNru7sXrPh6EICMSZUhb2lSc3HkrOfKTmwcnHqW0ONPyF\nbAFg\r\n=ofa0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnkLuEorfLheZ63Qx/Mwtv3XuUCrKtker76obE1bi4hwIhANXo5u5vlE4LAsngQ/2nQNziBFDy3W1eYEJo87WDn+IR"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.15.0-next.1627430530.3142162155ca187f63b56b4192488d6bebad2355_1627430531841_0.9383285139387805"},"_hasShrinkwrap":false},"6.15.0":{"title":"Safe FS","name":"safefs","version":"6.15.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 14 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 14"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.6"},"devDependencies":{"@bevry/update-contributors":"^1.18.0","assert-helpers":"^8.2.0","eslint":"^7.31.0","eslint-config-bevry":"^3.23.0","eslint-config-prettier":"^8.3.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.4.0","kava":"^5.14.0","prettier":"^2.3.2","projectz":"^2.18.0","rimraf":"^3.0.2","valid-directory":"^3.7.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"3142162155ca187f63b56b4192488d6bebad2355","_id":"safefs@6.15.0","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-Gi2CBuLjfPsAn9ahPB4N+7Xpxc45suXTzdVnSiTovAK1b64R3ch2omtVifXhyyRu0+gWTYpa15AFLmKuOiWtVg==","shasum":"6bd477e435a37999f38c06a5244dd4cc6d59e52b","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.15.0.tgz","fileCount":5,"unpackedSize":26653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAJ+pCRA9TVsSAnZWagAAvqEP/3y6Ba6xU8n48n047rDN\nrlgdUCN/hC1E3bLMHezMuxTapF5Igs/Hn1YBL6Edfq1BNd+Fq/hY5DiZgW2x\nF0UKdi6H1t0J1hQeRt9WQT87EETFdPfSN4T4HqVH6baUF+/TxYAaQva4pgn8\nKdHypgWbfu6VeQa7DtW3CWnTYUhXeGZbGWThDrnypr4JDtIH6Fq1ReL//fji\n6mM5qJ2oALQetg9fSLQPYCGXxYTus8Em0LwoCuL9oMZAwKaIXX00EGkyo368\nG+NTkAfs0g5cTYb+JL6MJ0N0G9O19ah081ZGNGOmoBdtreu9Af5U1HKryAVs\n+JYNCwrwYjsTFusTsZjLOIDXrhC7IDzCfZ0+Z0+z2ATJdHTQisPP9GSTpDM1\nh7Oi19zHVSE83Qd/WEw34yRz49gnOah+fTIO5QJbzq4M+3kNemvM8I830XAr\n9EuD+Ep89Cy5JDaYYvcPKfhpTwFBN0QRIBUCvorkHQDEobmJ/VbKJy6/7YUA\nMhb3JkhhfKDEI9pEtweqyL3yJxTXSpBJ5lTypy61F9DSNjLHt5Ma2GzgIR70\nM6zeFsXlRFdSih0KD66On/AfppRvyufftQz2sL+X1ELV9I2HFV5rSjjKuLVb\nEqtEdGZHtsVmIQbDXTX5WlhxKJQdmQa/sY3mWABTg1la+EXgZdbeikLf/mFv\nqGSm\r\n=w28R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtd9tTAVd8KPJq+5HqAUiQkP3/n6PL3i1sIQHVb6JwRwIhANp8G1+62PwV8wbuxh2L4YvGjwGSTr6zsMdUcfE2KMEq"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.15.0_1627430825146_0.42767527134569483"},"_hasShrinkwrap":false},"6.16.0-next.1627672070.44c22c37ea1f2102dcb2f98605fe0512835740d3":{"title":"Safe FS","name":"safefs","version":"6.16.0-next.1627672070.44c22c37ea1f2102dcb2f98605fe0512835740d3","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 14 || 16 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 14 || 16"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.6"},"devDependencies":{"@bevry/update-contributors":"^1.19.0","assert-helpers":"^8.4.0","eslint":"^7.31.0","eslint-config-bevry":"^3.27.0","eslint-config-prettier":"^8.3.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.4.0","kava":"^5.15.0","prettier":"^2.3.2","projectz":"^2.22.0","rimraf":"^3.0.2","valid-directory":"^3.7.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/safefs\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/safefs.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/safefs#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/safefs.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 14 || 16 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"44c22c37ea1f2102dcb2f98605fe0512835740d3","_id":"safefs@6.16.0-next.1627672070.44c22c37ea1f2102dcb2f98605fe0512835740d3","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-EUDXCC/bk/3q4VUZF7SYXGdasVlSVnn3py9BqpgnstiNgqV6E4QJjwmx1DvI1ZOw0fwLRYJBn14vPwgD1cIDVQ==","shasum":"5745597f69e7166f8ffd7697e276831eb93d7d46","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.16.0-next.1627672070.44c22c37ea1f2102dcb2f98605fe0512835740d3.tgz","fileCount":5,"unpackedSize":26923,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBE4KCRA9TVsSAnZWagAAWFUP+QB81z5JcenIuqP+5wCt\nQu9rl4dl+CvZ61hv+5AluJwtIQHczNGJLQGWJCz3F5E0Kk+opJhOjUy4dqS7\nqclOo0W0ZIPY81w9Wia0UrLsDaxmAFXCeIiw8pZswr2h2Z/HLWqxHrdqV9W5\nd3KDsTeobC1k88DRdnh1rCsMx4ot8TNj4Qm2gz4sBI93MeMlcHfpoG8cEQXJ\ny95CK+aNo7UIoOfsVwTAICB/AWGnPPcC0PUB7WTk+SF4vwolOsXx7wqz6j33\njxEfGABzxLPao4qK2qPUF9uxGTbTkIkvcPDORU32sZ8llMZqpr08vHA1FUr4\npVEMByNWwxfqqC0iGREdUx8B5TBDbe4o0YBMnKQ83Ca4nW0zxiGdi5z3k83e\nbMpp5SvpxqTpl4zL8Ep8/UYb75B5Xm67LGQMR0Ev0ZlKx4MXeqAF1YESEOyV\nuUgEVtIoCjZkhBtmiz9MXnSUoxDEVBPiVAVMSecFleeA6QuHzsgIU/s0dK8R\nR9AbNZ8flwMlz0glidJ6ReGOw/ZXLVnGdEuxtNS5PazTjXuv673AfWjnrwFO\nMGpJ6aInAbMXivMoYSOuf2AqbYBla3n+GKfG42g8yFKl4H5CPLE10BbYLfAU\nwfVoZKw5EcK3fEzduC7S+vW1fXORopEbW+JQ+IoCo8x97ay5x2t37PHbeeY6\n0SSQ\r\n=HQ1x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUWq78VjUwu7H8x1FgO4xEKjmMSa5iNg44iGVRPW+r8AiAqIHbNq/5bZ3oJ15W/3q25Z5T6Ik/hYPgJKtFH7n7Z5g=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.16.0-next.1627672070.44c22c37ea1f2102dcb2f98605fe0512835740d3_1627672074499_0.6741099723063251"},"_hasShrinkwrap":false},"6.16.0":{"title":"Safe FS","name":"safefs","version":"6.16.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"MIT","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=10"},"editions":[{"description":"ESNext source code for Node.js 10 || 12 || 14 || 16 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"10 || 12 || 14 || 16"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.6"},"devDependencies":{"@bevry/update-contributors":"^1.19.0","assert-helpers":"^8.4.0","eslint":"^7.31.0","eslint-config-bevry":"^3.27.0","eslint-config-prettier":"^8.3.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^3.4.0","kava":"^5.15.0","prettier":"^2.3.2","projectz":"^2.22.0","rimraf":"^3.0.2","valid-directory":"^3.7.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"echo no need for this project","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"44c22c37ea1f2102dcb2f98605fe0512835740d3","_id":"safefs@6.16.0","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-IUIN5h+r2acNVkbsM5VoBUsRnaSFwQFZnzyvQsiLlgFsncLi7rrtmM4FsEgwv+xDTJzsrp79rd+/GJu2zWcR9w==","shasum":"e1901c0ea1e8926289bd8d5383a65ce21bb44d2f","tarball":"https://registry.npmjs.org/safefs/-/safefs-6.16.0.tgz","fileCount":5,"unpackedSize":26865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBE8MCRA9TVsSAnZWagAAR+oP/1MhAnX0oo5qI9tEjdHm\nnnL32bD9iiD+ml6t4/+qaQ4NJ5diHVwxfAdRz0EZY3Kui5E5EGBSPAWWDLVC\nEP74964lfoXuh4m36ctK/wbGagruJMAgSiNjP53qLLH9BSgcDNYA1r4HTKlS\n5JxqvFvWae3iKCygg7SNZU78bsXlDJsozEfnT/js79Ii93fUXO2qbpEOZ0Lg\neTY6OChSDklwhwP7RFdXwFftWCjKp5scWvf14norehdf9Gv6N4R958FpqrbJ\n5Ps6ab0xzU6hoI5OPF8DahUvMCC2aTuHl+owo5RNypjfEp0EfHhX15RLEima\nh13H2ZkLFhlP5RPlx4sWoY/CmBgcU2W7l8lXkEe/i8IHkw4XNLAdijgUYaTC\nVrxJqlNlsYY2tGj4djb42BUvvio0lt8So2D5/9HzRIaHkrqwj5/W03KTx63N\ngMDq+95yWcHXBoQ8bS8gE8A4P26sQN7Hir7SJXj86ObdgFxot2cX3Ey9mHSV\nSYnu1vKofD+GIXoQ3AQLXSYVu7r/WaIgTpBM85usRx0OwSUbD3Op4Bg7YX/V\nOsA3zA/cw2KzRC5Kxc7A2kz0a9riCf5jFUNwjJUmfIVAHZE6PE9xODv9DWsy\nS1wqfxxvtQL4kWe84ubaQ2ZAER4rkLhYfCYvR7z5S2UZyRhA4OCZZ0B7RNcY\nfifa\r\n=GtyX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1iBNxmemJwis4u6HXWHOWrgTlZntNEoaslDYcgrYg1AIhALjkrAxnCS4CTV1vl3AY2GY6L9ykxPwE+JvQ9nfTmjoe"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_6.16.0_1627672332519_0.5928664842124955"},"_hasShrinkwrap":false},"7.0.0-next.1698927729.5177d5ac4a3edb7d0e0e3264566edd9556a00df9":{"title":"Safe FS","name":"safefs","version":"7.0.0-next.1698927729.5177d5ac4a3edb7d0e0e3264566edd9556a00df9","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=14"},"editions":[{"description":"ESNext source code for Node.js 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11"},"devDependencies":{"@bevry/update-contributors":"^1.22.0","assert-helpers":"^8.4.0","eslint":"^8.52.0","eslint-config-bevry":"^3.28.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","kava":"^5.17.0","prettier":"^3.0.3","projectz":"^2.23.0","valid-directory":"^4.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"_id":"safefs@7.0.0-next.1698927729.5177d5ac4a3edb7d0e0e3264566edd9556a00df9","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"5177d5ac4a3edb7d0e0e3264566edd9556a00df9","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-qzIhztdIazDExl4trbhCPQlxRkQ785dvzGVtiAe+ca0KpUgs0R8w0zaXUjoInNoz8B6cpxluxsNDRrFoak974w==","shasum":"e028dc536ac2d6f2b90774a79a951055bb492c4f","tarball":"https://registry.npmjs.org/safefs/-/safefs-7.0.0-next.1698927729.5177d5ac4a3edb7d0e0e3264566edd9556a00df9.tgz","fileCount":5,"unpackedSize":27928,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEWxpyg6ntqMzAgCpj9eHd4papbG68x5NMXIFRjIaBBDAiBmZCtNnVICWCmvgRCiOe7yhjVwJKx6uPkRtx50kq7v3g=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_7.0.0-next.1698927729.5177d5ac4a3edb7d0e0e3264566edd9556a00df9_1698927732172_0.7427830974925553"},"_hasShrinkwrap":false},"8.0.0":{"title":"Safe FS","name":"safefs","version":"8.0.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.0.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.1.0","eslint":"^8.53.0","eslint-config-bevry":"^3.29.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"3.2.0","prettier":"^3.1.0","projectz":"^2.23.0","surge":"^0.23.1","valid-directory":"^4.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -Rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -Rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.0.0","gitHead":"399448cc2578fca105003a24fd7d22883f7552e9","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-gmTW9uZ6FU/YOFYtSIUwfl1Xlu+tOdnk2QoTXkqKelc7TaLXSEqF4eI6ZOa++OMyAIZucecMr83IDyUA1sfQ/g==","shasum":"59b0725b15e7163c0bf52ae0e2cb40e3a79d5cf1","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.0.0.tgz","fileCount":5,"unpackedSize":31242,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICWgr6I2B/QYCXcp5bsV+QwQCUrvjj8+s+XRKdY5mCZfAiAc0qVBVtGvUKK31FVPio73jpmnkuAATbwJG11lf7Ts7A=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.0.0_1699858275433_0.515333347620127"},"_hasShrinkwrap":false},"8.0.0-next.1699858303.399448cc2578fca105003a24fd7d22883f7552e9":{"title":"Safe FS","name":"safefs","version":"8.0.0-next.1699858303.399448cc2578fca105003a24fd7d22883f7552e9","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.0.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.1.0","eslint":"^8.53.0","eslint-config-bevry":"^3.29.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"3.2.0","prettier":"^3.1.0","projectz":"^2.23.0","surge":"^0.23.1","valid-directory":"^4.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -Rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -Rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.0.0-next.1699858303.399448cc2578fca105003a24fd7d22883f7552e9","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<h3><a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a></h3>\n\nThis project provides its type information via inline <a href=\"http://usejsdoc.org\" title=\"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\">JSDoc Comments</a>. To make use of this in <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a>, set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomlish this via your `tsconfig.json` file like so:\n\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"399448cc2578fca105003a24fd7d22883f7552e9","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-4DIqzo3UTNO00kQVyBpjiszE7HewIhGyXmlWSM3r1jMa3KFdv1M0lHiLFebBa+ANkPVSuDGoBnXBw9mhz+yfQw==","shasum":"6a102c959b16a7a256c54d0b543a6f500bc35f60","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.0.0-next.1699858303.399448cc2578fca105003a24fd7d22883f7552e9.tgz","fileCount":5,"unpackedSize":31300,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEKbV5gH/NZtaRoIE3FlgnhU30A2TtKx1q9GUMskYXCwAiAnTFL3iurIrMIE+ni9lvV9TaFn2J8X9Ne6KvqXJWO1bQ=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.0.0-next.1699858303.399448cc2578fca105003a24fd7d22883f7552e9_1699858305590_0.7241282319482147"},"_hasShrinkwrap":false},"8.1.0":{"title":"Safe FS","name":"safefs","version":"8.1.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.0.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.1.0","eslint":"^8.53.0","eslint-config-bevry":"^3.29.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"3.2.0","prettier":"^3.1.0","projectz":"^2.23.0","surge":"^0.23.1","valid-directory":"^4.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -Rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -Rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.1.0","gitHead":"970b7261c2ca0b1da36bfc78e79fbf8206bf1e42","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-daC2GNhhG/6FnVopgiAhlnYOtDDFrfUUL+gEtSGdWtZ5qS/Cw4ASRu9HPvifvMh0tPBzT3G9WoLZofDpHnUadg==","shasum":"11d5167447724026f565855943b33de60e3b56a0","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.1.0.tgz","fileCount":5,"unpackedSize":31243,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXueVJb7dHkSuShuBv3F0DyIHq2xo/Cbv82+ichdS3uQIgbKOpN2BV1pVwA2ig0SzWO+eDkCcjIy50u4qSfVHB0Io="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.1.0_1699858545718_0.6007542914719284"},"_hasShrinkwrap":false},"8.1.0-next.1699858550.970b7261c2ca0b1da36bfc78e79fbf8206bf1e42":{"title":"Safe FS","name":"safefs","version":"8.1.0-next.1699858550.970b7261c2ca0b1da36bfc78e79fbf8206bf1e42","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.0.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.1.0","eslint":"^8.53.0","eslint-config-bevry":"^3.29.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"3.2.0","prettier":"^3.1.0","projectz":"^2.23.0","surge":"^0.23.1","valid-directory":"^4.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -Rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -Rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.1.0-next.1699858550.970b7261c2ca0b1da36bfc78e79fbf8206bf1e42","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<h3><a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a></h3>\n\nThis project provides its type information via inline <a href=\"http://usejsdoc.org\" title=\"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\">JSDoc Comments</a>. To make use of this in <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a>, set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomlish this via your `tsconfig.json` file like so:\n\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"970b7261c2ca0b1da36bfc78e79fbf8206bf1e42","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-m+jERfRi7d31SrhctMNKiepXjuuYGAHN/yY3RcKuGmev65vVphxnzwGL1w5HlzXnqYCQxozSY7QvzdBBQNfsNw==","shasum":"547576daf1fda581df9fff44ffd921f3684479e5","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.1.0-next.1699858550.970b7261c2ca0b1da36bfc78e79fbf8206bf1e42.tgz","fileCount":5,"unpackedSize":31301,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE4Q3epcZH137TMJ5DWugJ+TtPEjyIfT/qy+ePmcXIgjAiBKgb/nEnB7/Zqe19SHsdBO0U/1f31tOn23wShqMQ2f6g=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.1.0-next.1699858550.970b7261c2ca0b1da36bfc78e79fbf8206bf1e42_1699858551667_0.18891191620080017"},"_hasShrinkwrap":false},"8.1.0-next.1699869485.b2890db0294bb1184110e1b0787eda715baee029":{"title":"Safe FS","name":"safefs","version":"8.1.0-next.1699869485.b2890db0294bb1184110e1b0787eda715baee029","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.0.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.1.0","eslint":"^8.53.0","eslint-config-bevry":"^3.29.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"3.2.0","prettier":"^3.1.0","projectz":"^2.23.0","surge":"^0.23.1","valid-directory":"^4.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -Rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -Rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.1.0-next.1699869485.b2890db0294bb1184110e1b0787eda715baee029","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\nIf you want promises and a non-conflicting API, use [@bevry/file](https://github.com/bevry/file).\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<h3><a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a></h3>\n\nThis project provides its type information via inline <a href=\"http://usejsdoc.org\" title=\"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\">JSDoc Comments</a>. To make use of this in <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a>, set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomlish this via your `tsconfig.json` file like so:\n\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"b2890db0294bb1184110e1b0787eda715baee029","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-Dun2vvNL1VoV4cBiyD7iPGfeZD4iS3ZI8+WpP3ylEJ7er2NuFqFZpKcUJvy8122xr6G0lYz51Zj/6S2uN8oVFw==","shasum":"f78cf640ac0e868abfa5730f9cd04b7136ad9e0b","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.1.0-next.1699869485.b2890db0294bb1184110e1b0787eda715baee029.tgz","fileCount":5,"unpackedSize":31400,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZOYk0Otz7rDEYuQZrAltcPQ6L84HWYUFET0lBGkv5+gIgefIIjvH7wB/G/BmOkOux0/XTHNnoO8K7mDsnR++nQ9k="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.1.0-next.1699869485.b2890db0294bb1184110e1b0787eda715baee029_1699869487139_0.14413457756047032"},"_hasShrinkwrap":false},"8.2.0-next.1699877194.e0d337f448cfbbbb74a4669c5fcc993b08ec6c15":{"title":"Safe FS","name":"safefs","version":"8.2.0-next.1699877194.e0d337f448cfbbbb74a4669c5fcc993b08ec6c15","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.1.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.2.0","eslint":"^8.53.0","eslint-config-bevry":"^3.29.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.0.0","prettier":"^3.1.0","projectz":"^2.23.0","surge":"^0.23.1","valid-directory":"^4.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -Rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -Rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.2.0-next.1699877194.e0d337f448cfbbbb74a4669c5fcc993b08ec6c15","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\nIf you want promises and a non-conflicting API, use [@bevry/file](https://github.com/bevry/file).\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<h3><a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a></h3>\n\nThis project provides its type information via inline <a href=\"http://usejsdoc.org\" title=\"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\">JSDoc Comments</a>. To make use of this in <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a>, set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomlish this via your `tsconfig.json` file like so:\n\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"e0d337f448cfbbbb74a4669c5fcc993b08ec6c15","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-3/fR+n1NiKXvBGlo+G0IgYvvMeoOY6Q9QxqClBxD9C2XRMVziyvcItylf+WkH43nXMZbu9PdawJsnpMMMBAZiQ==","shasum":"34b0ad2a7ec7fc033422a9a66ebada1c10e47e1c","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.2.0-next.1699877194.e0d337f448cfbbbb74a4669c5fcc993b08ec6c15.tgz","fileCount":5,"unpackedSize":31401,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9yBjF9fKYww9TNR3yXvJedWaXT1P/FPuo0XgTF/Q/qAIhAK8fTidBF3vKSe/a1bu6FUqyhwZZaud3yrOynYGhl5y1"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.2.0-next.1699877194.e0d337f448cfbbbb74a4669c5fcc993b08ec6c15_1699877196080_0.034773486244019436"},"_hasShrinkwrap":false},"8.2.0":{"title":"Safe FS","name":"safefs","version":"8.2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.1.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.2.0","eslint":"^8.53.0","eslint-config-bevry":"^3.29.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.0.0","prettier":"^3.1.0","projectz":"^2.23.0","surge":"^0.23.1","valid-directory":"^4.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -Rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -Rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.2.0","gitHead":"e0d337f448cfbbbb74a4669c5fcc993b08ec6c15","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-27IzS391FR9s20OlZXzB2wSi/uTxtaDSQMo+TnmxBxfvpC5YTNRCK8WlNajivXrsFZ8tjYi00/zPRubuHGctYQ==","shasum":"c2efb3dc27cfb95d4211d7f2be227ee4e72ba679","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.2.0.tgz","fileCount":5,"unpackedSize":31343,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBChYhXroXPkQxoCERBkfCkmhxQg6PeQAUKaRFhfBfvAAiAxpcgCyBRH2uO6YhXsnj5wA5JfB9J/Q13zTDqBnb9yZA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.2.0_1699877202591_0.7788147840127722"},"_hasShrinkwrap":false},"8.3.0":{"title":"Safe FS","name":"safefs","version":"8.3.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.2.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.4.0","eslint":"^8.53.0","eslint-config-bevry":"^4.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.1.0","prettier":"^3.1.0","projectz":"^3.0.0","surge":"^0.23.1","valid-directory":"^4.2.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.3.0","gitHead":"c1df6da1b836637e3b652cee581580fff387b1b9","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-IS/Q+IZ4FLSHUHVEKgLA+8SD5LPB5LoN0gDbeMcqW4W+PUoXVV2/7HJ7iLfi7XXw7qQE/A6g64+k89VhcrEkWQ==","shasum":"92faee0b9699790a61709dd77daf466dfc3a274c","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.3.0.tgz","fileCount":6,"unpackedSize":33032,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdwPhROzG4+kbJDNWzxsDyVifuSEmJnQMfsxP6a2mEjAIgK4JJtkYoiivwKoLuhKBh8VO3DV8jrZf1tilKRkXRFYo="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.3.0_1699978800708_0.9493647453489831"},"_hasShrinkwrap":false},"8.3.0-next.1700120101.40737ec3aeb4ea010ffa815ba5f2f47b31ee8c88":{"title":"Safe FS","name":"safefs","version":"8.3.0-next.1700120101.40737ec3aeb4ea010ffa815ba5f2f47b31ee8c88","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.2.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.4.0","eslint":"^8.53.0","eslint-config-bevry":"^4.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.1.0","prettier":"^3.1.0","projectz":"^3.0.0","surge":"^0.23.1","valid-directory":"^4.2.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.3.0-next.1700120101.40737ec3aeb4ea010ffa815ba5f2f47b31ee8c88","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\nIf you want promises and a non-conflicting API, use these instead:\n\n- [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)\n- [@bevry/fs-executable](https://github.com/bevry/fs-executable)\n- [@bevry/fs-list](https://github.com/bevry/fs-list)\n- [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)\n- [@bevry/fs-read](https://github.com/bevry/fs-read)\n- [@bevry/fs-readable](https://github.com/bevry/fs-readable)\n- [@bevry/fs-remove](https://github.com/bevry/fs-remove)\n- [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)\n- [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)\n- [@bevry/fs-write](https://github.com/bevry/fs-write)\n- [@bevry/fs-writable](https://github.com/bevry/fs-writable)\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<h3><a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a></h3>\n\nThis project provides its type information via inline <a href=\"http://usejsdoc.org\" title=\"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\">JSDoc Comments</a>. To make use of this in <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a>, set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomlish this via your `tsconfig.json` file like so:\n\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"40737ec3aeb4ea010ffa815ba5f2f47b31ee8c88","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-f1TAzKxhQaZajQl3RAdd/quAMJ6Ob5WdCK85cby+cHwRsT5qbseRtVZdq/NdudDXHMIdGFmDkOmIHYOfieDmJg==","shasum":"12f26171b25e84e455972d11eab8bc3c333d7490","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.3.0-next.1700120101.40737ec3aeb4ea010ffa815ba5f2f47b31ee8c88.tgz","fileCount":6,"unpackedSize":33699,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeeAAFB0H25P/XdrIf9/9vDxem8Oiy2ZO0yp5Uqxq05QIhAOvHaZCTaU8mWDODKCpCNO/+5d6scsTrbx1ur5GnkFpC"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.3.0-next.1700120101.40737ec3aeb4ea010ffa815ba5f2f47b31ee8c88_1700120103031_0.9894324943635624"},"_hasShrinkwrap":false},"8.3.0-next.1700200404.c2480d4f2f9509a3942d1d9dd52ce0390fc3591d":{"title":"Safe FS","name":"safefs","version":"8.3.0-next.1700200404.c2480d4f2f9509a3942d1d9dd52ce0390fc3591d","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.2.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.4.0","eslint":"^8.53.0","eslint-config-bevry":"^4.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.1.0","prettier":"^3.1.0","projectz":"^3.0.0","surge":"^0.23.1","valid-directory":"^4.2.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.3.0-next.1700200404.c2480d4f2f9509a3942d1d9dd52ce0390fc3591d","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n## Alternatives\n\nYou should use these instead, which use and provide modern APIs while providing brilliant ecosystem support:\n\n- [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)\n- [@bevry/fs-executable](https://github.com/bevry/fs-executable)\n- [@bevry/fs-list](https://github.com/bevry/fs-list)\n- [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)\n- [@bevry/fs-read](https://github.com/bevry/fs-read)\n- [@bevry/fs-readable](https://github.com/bevry/fs-readable)\n- [@bevry/fs-remove](https://github.com/bevry/fs-remove)\n- [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)\n- [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)\n- [@bevry/fs-write](https://github.com/bevry/fs-write)\n- [@bevry/fs-writable](https://github.com/bevry/fs-writable)\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<h3><a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a></h3>\n\nThis project provides its type information via inline <a href=\"http://usejsdoc.org\" title=\"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\">JSDoc Comments</a>. To make use of this in <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a>, set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomlish this via your `tsconfig.json` file like so:\n\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/balupton\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"c2480d4f2f9509a3942d1d9dd52ce0390fc3591d","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-7tO9ny0Bd/z2OEjKnX7mYizXlSpnAldHVwK76QDLFCyXkz7hVxTYV5hcW3WzB3a0dWeFTUG2Czpbp+XnaqGj4g==","shasum":"e31b5a28080647471e9d21ff7526ccc2d7702f87","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.3.0-next.1700200404.c2480d4f2f9509a3942d1d9dd52ce0390fc3591d.tgz","fileCount":6,"unpackedSize":33758,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGX6H8kcQeXSi7+xdSc8knKme/bAZQ7g07DwprzM2b7wIgdLZtXV10gYPajd7dPqfoFwDMaAf1aCrZiLhjXd8QYdQ="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.3.0-next.1700200404.c2480d4f2f9509a3942d1d9dd52ce0390fc3591d_1700200406364_0.9915840437778489"},"_hasShrinkwrap":false},"8.4.0-next.1700543880.4768e8e461753b7c9c8f16f11aab9c7e3900fdbb":{"title":"Safe FS","name":"safefs","version":"8.4.0-next.1700543880.4768e8e461753b7c9c8f16f11aab9c7e3900fdbb","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.3.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.5.0","eslint":"^8.54.0","eslint-config-bevry":"^5.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.2.0","prettier":"^3.1.0","projectz":"^3.2.0","surge":"^0.23.1","valid-directory":"^4.4.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.4.0-next.1700543880.4768e8e461753b7c9c8f16f11aab9c7e3900fdbb","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n## Alternatives\n\nYou should use these instead, which use and provide modern APIs while providing brilliant ecosystem support:\n\n-   [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)\n-   [@bevry/fs-executable](https://github.com/bevry/fs-executable)\n-   [@bevry/fs-list](https://github.com/bevry/fs-list)\n-   [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)\n-   [@bevry/fs-read](https://github.com/bevry/fs-read)\n-   [@bevry/fs-readable](https://github.com/bevry/fs-readable)\n-   [@bevry/fs-remove](https://github.com/bevry/fs-remove)\n-   [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)\n-   [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)\n-   [@bevry/fs-write](https://github.com/bevry/fs-write)\n-   [@bevry/fs-writable](https://github.com/bevry/fs-writable)\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<h3><a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a></h3>\n\nThis project provides its type information via inline <a href=\"http://usejsdoc.org\" title=\"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\">JSDoc Comments</a>. To make use of this in <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a>, set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomlish this via your `tsconfig.json` file like so:\n\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"4768e8e461753b7c9c8f16f11aab9c7e3900fdbb","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-A52CvSrSKPjjysFINezJXDOqdVxX9y4yBiz9Li01dOOLuZnYNCPN93JIB25M80QeMBGcy5eWSTHeO62Uv0mXgw==","shasum":"9538ef25c3b39b8c0a9e84c6d37bd62954e423ba","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.4.0-next.1700543880.4768e8e461753b7c9c8f16f11aab9c7e3900fdbb.tgz","fileCount":6,"unpackedSize":33531,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDldh86wrM8J6pPEqvxEIerhnTXwkuwMzCh4ViOlhyM8wIgSLW0lnGfgPIVcl4nJnsLWySGzQQ0TFByDcSgAycvBIM="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.4.0-next.1700543880.4768e8e461753b7c9c8f16f11aab9c7e3900fdbb_1700543882060_0.15652787804930313"},"_hasShrinkwrap":false},"8.4.0":{"title":"Safe FS","name":"safefs","version":"8.4.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.3.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.5.0","eslint":"^8.54.0","eslint-config-bevry":"^5.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.2.0","prettier":"^3.1.0","projectz":"^3.2.0","surge":"^0.23.1","valid-directory":"^4.4.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.4.0","gitHead":"4768e8e461753b7c9c8f16f11aab9c7e3900fdbb","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-dIi839HGNWD/AwozKXp/bR04h+SbIlOnnyYcOnGmiMOHunHEWn4UpI8t9Sfw5gq5upXVLcUIFjxZPQtlcoAXMg==","shasum":"7d6990fbb3fac691133f7466fc5cee9c4b651023","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.4.0.tgz","fileCount":6,"unpackedSize":33473,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEaLkjangJPlN1X8yxxly9m3j9nv6TWNDQvIe/HkAt9QIgB5LB2gKrMd9MIinU8hRLlQkcCd8CubbOjfrQNKh7XII="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.4.0_1700543885319_0.9267403826017984"},"_hasShrinkwrap":false},"8.5.0":{"title":"Safe FS","name":"safefs","version":"8.5.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.4.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.6.0","eslint":"^8.54.0","eslint-config-bevry":"^5.2.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.4.0","prettier":"^3.1.0","projectz":"^3.4.0","surge":"^0.23.1","valid-directory":"^4.5.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.5.0","gitHead":"f992366331001e6a87c31ab50ef9525ba93a8de9","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-XznfgtxlEd2lrO3vFu81cdzeSRcq5NPD1IRBwRSYhLrIblAJx230iYQ4spmlgU7Onp7gaXtYtuwv2xlpV+LhBQ==","shasum":"9d4917e16989724cfff1c875642285167455be1d","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.5.0.tgz","fileCount":6,"unpackedSize":33473,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8FHBTNt6ytZuibzqvrefywK2O7qU3VF3OHpqSz7aJgwIhALM3ot4tZwk6qnHX5d3wDmcHMMdXvrRgOuIbGE02XAWe"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.5.0_1700860210299_0.5798746598621125"},"_hasShrinkwrap":false},"8.5.0-next.1700860216.f992366331001e6a87c31ab50ef9525ba93a8de9":{"title":"Safe FS","name":"safefs","version":"8.5.0-next.1700860216.f992366331001e6a87c31ab50ef9525ba93a8de9","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.4.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.6.0","eslint":"^8.54.0","eslint-config-bevry":"^5.2.0","eslint-config-prettier":"^9.0.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.4.0","prettier":"^3.1.0","projectz":"^3.4.0","surge":"^0.23.1","valid-directory":"^4.5.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"_id":"safefs@8.5.0-next.1700860216.f992366331001e6a87c31ab50ef9525ba93a8de9","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n## Alternatives\n\nYou should use these instead, which use and provide modern APIs while providing brilliant ecosystem support:\n\n-   [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)\n-   [@bevry/fs-executable](https://github.com/bevry/fs-executable)\n-   [@bevry/fs-list](https://github.com/bevry/fs-list)\n-   [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)\n-   [@bevry/fs-read](https://github.com/bevry/fs-read)\n-   [@bevry/fs-readable](https://github.com/bevry/fs-readable)\n-   [@bevry/fs-remove](https://github.com/bevry/fs-remove)\n-   [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)\n-   [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)\n-   [@bevry/fs-write](https://github.com/bevry/fs-write)\n-   [@bevry/fs-writable](https://github.com/bevry/fs-writable)\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<h3><a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a></h3>\n\nThis project provides its type information via inline <a href=\"http://usejsdoc.org\" title=\"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\">JSDoc Comments</a>. To make use of this in <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a>, set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomlish this via your `tsconfig.json` file like so:\n\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"f992366331001e6a87c31ab50ef9525ba93a8de9","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-EZ1GD3jg+RWaSIybyOZZ9sU3k2uDEcx50VzBI7PXGJeplCXbGUUqdV1be3ZX4yzp7DdmmwGt+1p+W6drxn5zMg==","shasum":"2c57b1296bae42c8cc55998bf9db3a5af60d1c71","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.5.0-next.1700860216.f992366331001e6a87c31ab50ef9525ba93a8de9.tgz","fileCount":6,"unpackedSize":33531,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrSqlfwNatvPdT980C7yvUXVmdEvjh6n9RX0e/MxAJlAIgfpxwfjDe6Rm4ZfL8oUiW8ijJp/Goi3ynuyX0Gyh89q4="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.5.0-next.1700860216.f992366331001e6a87c31ab50ef9525ba93a8de9_1700860217626_0.6308852541848562"},"_hasShrinkwrap":false},"8.6.0":{"title":"Safe FS","name":"safefs","version":"8.6.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.8.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.9.0","eslint":"^8.55.0","eslint-config-bevry":"^5.2.0","eslint-config-prettier":"^9.1.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.4.0","prettier":"^3.1.0","projectz":"^3.4.0","valid-directory":"^4.6.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"_id":"safefs@8.6.0","gitHead":"d969f4abd238f2523d7966f431a465bd0d457e83","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-CfelnCnGgCHWylnMTG68qYgFxu6mrnamaiCBQe6YDpnzrooLFfROMrkJBkQGlTU83GUcn+VBkYfZyEMt4ygPVA==","shasum":"896118549c29e587b15ad45eaf0501a9c66c18a0","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.6.0.tgz","fileCount":6,"unpackedSize":33473,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEXR3JQWvw/BKga261hRmZQYgQYaeUu+V7oJNY053gyEAiAvcaTxC8sQ1nAUqHDSr+WuN1atGHOiW6sFIyf3N2+luw=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.6.0_1701794240765_0.9503602351078122"},"_hasShrinkwrap":false},"8.6.0-next.1701794253.d969f4abd238f2523d7966f431a465bd0d457e83":{"title":"Safe FS","name":"safefs","version":"8.6.0-next.1701794253.d969f4abd238f2523d7966f431a465bd0d457e83","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","license":"Artistic-2.0","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"funding":"https://bevry.me/fund","author":{"name":"2013+ Bevry Pty Ltd","email":"us@bevry.me","url":"http://bevry.me"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"},{"name":"James Gill","url":"https://github.com/jagill"},{"name":"Kyle Robinson Young","url":"https://github.com/shama"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://github.com/sfrdmn"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.8.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","assert-helpers":"^11.9.0","eslint":"^8.55.0","eslint-config-bevry":"^5.2.0","eslint-config-prettier":"^9.1.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.0.1","jsdoc":"^4.0.2","kava":"^7.4.0","prettier":"^3.1.0","projectz":"^3.4.0","valid-directory":"^4.6.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"_id":"safefs@8.6.0-next.1701794253.d969f4abd238f2523d7966f431a465bd0d457e83","readme":"<!-- TITLE/ -->\n\n<h1>Safe FS</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n## Alternatives\n\nYou should use these instead, which use and provide modern APIs while providing brilliant ecosystem support:\n\n-   [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)\n-   [@bevry/fs-executable](https://github.com/bevry/fs-executable)\n-   [@bevry/fs-list](https://github.com/bevry/fs-list)\n-   [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)\n-   [@bevry/fs-read](https://github.com/bevry/fs-read)\n-   [@bevry/fs-readable](https://github.com/bevry/fs-readable)\n-   [@bevry/fs-remove](https://github.com/bevry/fs-remove)\n-   [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)\n-   [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)\n-   [@bevry/fs-write](https://github.com/bevry/fs-write)\n-   [@bevry/fs-writable](https://github.com/bevry/fs-writable)\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save safefs</code></li>\n<li>Import: <code>import * as pkg from ('safefs')</code></li>\n<li>Require: <code>const pkg = require('safefs')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>safefs</code> aliases <code>safefs/source/index.js</code></li>\n<li><code>safefs/source/index.js</code> is <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> source code for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<h3><a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a></h3>\n\nThis project provides its type information via inline <a href=\"http://usejsdoc.org\" title=\"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\">JSDoc Comments</a>. To make use of this in <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a>, set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomlish this via your `tsconfig.json` file like so:\n\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/safefs/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/jagill\">James Gill</a> — <a href=\"https://github.com/bevry/safefs/commits?author=jagill\" title=\"View the GitHub contributions of James Gill on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/shama\">Kyle Robinson Young</a> — <a href=\"https://github.com/bevry/safefs/commits?author=shama\" title=\"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\">view contributions</a></li>\n<li><a href=\"https://github.com/sfrdmn\">Sean Fridman</a> — <a href=\"https://github.com/bevry/safefs/commits?author=sfrdmn\" title=\"View the GitHub contributions of Sean Fridman on repository bevry/safefs\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/safefs/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2013+ <a href=\"http://bevry.me\">Bevry Pty Ltd</a></li>\n<li>Copyright &copy; 2011-2012 <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"d969f4abd238f2523d7966f431a465bd0d457e83","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-9m4xWoeh6wdVi0qlRMyPx5YS3Vx8VQrqUUDqa5LuoDafSdT7sFzCy/khWgGuNOCA2Gxhetrtb0GAyAFsdMwDog==","shasum":"f438cf346f9ca39b1c8b515b86695bd558852619","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.6.0-next.1701794253.d969f4abd238f2523d7966f431a465bd0d457e83.tgz","fileCount":6,"unpackedSize":33531,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDiEyTZumbyucxXyH4/Mm0ihjqZlz4+o+sqIKt5lRLvJAiEA0KbgUs6yznPkuaOggIUKJyLtxLX/R8JYqR45qW3rtdM="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.6.0-next.1701794253.d969f4abd238f2523d7966f431a465bd0d457e83_1701794254312_0.07638327333917672"},"_hasShrinkwrap":false},"8.7.0":{"title":"Safe FS","name":"safefs","version":"8.7.0","license":"Artistic-2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"bugs":{"url":"https://github.com/bevry/safefs/issues"},"keywords":["closeFile","emfile","es2015","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},{"name":"James Gill","url":"https://www.linkedin.com/in/jagill/"},{"name":"Kyle Robinson Young","url":"https://dontkry.com"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://seanfridman.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io/) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io/) (https://github.com/codecov)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://bevry.me) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)"],"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}},{"description":"ESNext compiled for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-node-6","entry":"index.js","tags":["compiled","javascript","es2015","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}}],"type":"commonjs","main":"index.cjs","dependencies":{"editions":"^6.20.0","graceful-fs":"^4.2.11","version-compare":"^3.9.0"},"devDependencies":{"@babel/cli":"^7.23.4","@babel/core":"^7.23.6","@babel/plugin-proposal-object-rest-spread":"^7.20.7","@babel/preset-env":"^7.23.6","assert-helpers":"^11.11.0","eslint":"^8.56.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.1.2","jsdoc":"^4.0.2","kava":"^7.5.0","prettier":"^3.1.1","projectz":"^4.0.0","valid-directory":"^4.7.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-6","our:compile:edition-node-6":"env BABEL_ENV=edition-node-6 babel --out-dir ./edition-node-6 ./source && printf '%s' '{\"type\": \"commonjs\"}' > edition-node-6/package.json","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"babel":{"env":{"edition-node-6":{"sourceType":"script","presets":[["@babel/preset-env",{"targets":{"node":"6"},"modules":"commonjs"}]],"plugins":["@babel/proposal-object-rest-spread"]}}},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5","endOfLine":"lf"},"_id":"safefs@8.7.0","gitHead":"157a4aa29bbf10fabd02119c89fd81e83fbecb7e","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-GgC+JboJa5QIx/94JJk+5a3kYT69+m4ZG9GD86mpuJmG87hiGyPo/hK8CY9CPifD59Zejn8t8dy+FFMPnKnJrg==","shasum":"ced8e858f07cdd67ef7e6a9ef7c22bea1199f6d5","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.7.0.tgz","fileCount":9,"unpackedSize":43107,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcAU+KwD74yv+d9Ws7Xdr4rSSp7HQwGI/6u81OGcAvmgIgG/xK3qH6lIbknyd2u0Gkdi9QT5JD14apIKTbWilOAzs="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.7.0_1703665324557_0.9423953297078784"},"_hasShrinkwrap":false},"8.7.0-next.1703665346.157a4aa29bbf10fabd02119c89fd81e83fbecb7e":{"title":"Safe FS","name":"safefs","version":"8.7.0-next.1703665346.157a4aa29bbf10fabd02119c89fd81e83fbecb7e","license":"Artistic-2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"bugs":{"url":"https://github.com/bevry/safefs/issues"},"keywords":["closeFile","emfile","es2015","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},{"name":"James Gill","url":"https://www.linkedin.com/in/jagill/"},{"name":"Kyle Robinson Young","url":"https://dontkry.com"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://seanfridman.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io/) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io/) (https://github.com/codecov)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://bevry.me) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)"],"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}},{"description":"ESNext compiled for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-node-6","entry":"index.js","tags":["compiled","javascript","es2015","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}}],"type":"commonjs","main":"index.cjs","dependencies":{"editions":"^6.20.0","graceful-fs":"^4.2.11","version-compare":"^3.9.0"},"devDependencies":{"@babel/cli":"^7.23.4","@babel/core":"^7.23.6","@babel/plugin-proposal-object-rest-spread":"^7.20.7","@babel/preset-env":"^7.23.6","assert-helpers":"^11.11.0","eslint":"^8.56.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.1.2","jsdoc":"^4.0.2","kava":"^7.5.0","prettier":"^3.1.1","projectz":"^4.0.0","valid-directory":"^4.7.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-6","our:compile:edition-node-6":"env BABEL_ENV=edition-node-6 babel --out-dir ./edition-node-6 ./source && printf '%s' '{\"type\": \"commonjs\"}' > edition-node-6/package.json","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"babel":{"env":{"edition-node-6":{"sourceType":"script","presets":[["@babel/preset-env",{"targets":{"node":"6"},"modules":"commonjs"}]],"plugins":["@babel/proposal-object-rest-spread"]}}},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5","endOfLine":"lf"},"_id":"safefs@8.7.0-next.1703665346.157a4aa29bbf10fabd02119c89fd81e83fbecb7e","readme":"<!-- TITLE/ -->\n\n# Safe FS\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n## Alternatives\n\nYou should use these instead, which use and provide modern APIs while providing brilliant ecosystem support:\n\n-   [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)\n-   [@bevry/fs-executable](https://github.com/bevry/fs-executable)\n-   [@bevry/fs-list](https://github.com/bevry/fs-list)\n-   [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)\n-   [@bevry/fs-read](https://github.com/bevry/fs-read)\n-   [@bevry/fs-readable](https://github.com/bevry/fs-readable)\n-   [@bevry/fs-remove](https://github.com/bevry/fs-remove)\n-   [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)\n-   [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)\n-   [@bevry/fs-write](https://github.com/bevry/fs-write)\n-   [@bevry/fs-writable](https://github.com/bevry/fs-writable)\n\n<!-- INSTALL/ -->\n\n## Install\n\n### [npm](https://npmjs.com \"npm is a package manager for javascript\")\n\n-   Install: `npm install --save safefs`\n-   Import: `import * as pkg from ('safefs')`\n-   Require: `const pkg = require('safefs')`\n\n### [Editions](https://editions.bevry.me \"Editions are the best way to produce and consume packages you care about.\")\n\nThis package is published with the following editions:\n-   `safefs` aliases `safefs/index.cjs` which uses the [Editions Autoloader](https://github.com/bevry/editions \"You can use the Editions Autoloader to autoload the appropriate edition for your consumers environment\") to automatically select the correct edition for the consumer's environment\n-   `safefs/source/index.js` is [ESNext](https://en.wikipedia.org/wiki/ECMAScript#ES.Next \"ECMAScript Next\") source code for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n-   `safefs/edition-node-6/index.js` is [ESNext](https://en.wikipedia.org/wiki/ECMAScript#ES.Next \"ECMAScript Next\") compiled for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n\n### [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\")\n\nThis project provides its type information via inline [JSDoc Comments](http://usejsdoc.org \"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\"). To make use of this in [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\"), set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomplish this via your `tsconfig.json` file like so:\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n## History\n\n[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/safefs/blob/HEAD/HISTORY.md#files)\n\n<!-- /HISTORY -->\n\n<!-- BACKERS/ -->\n\n## Backers\n\n### Code\n\n[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/safefs/blob/HEAD/CONTRIBUTING.md#files)\n\n#### Authors\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Maintainers\n\n-   [Benjamin Lupton](https://github.com/balupton) — Accelerating collaborative wisdom.\n\n#### Contributors\n\n-   [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/safefs/commits?author=balupton \"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\")\n-   [James Gill](https://github.com/jagill) — [view contributions](https://github.com/bevry/safefs/commits?author=jagill \"View the GitHub contributions of James Gill on repository bevry/safefs\")\n-   [Kyle Robinson Young](https://github.com/shama) — [view contributions](https://github.com/bevry/safefs/commits?author=shama \"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\")\n-   [Sean Fridman](https://github.com/sfrdmn) — [view contributions](https://github.com/bevry/safefs/commits?author=sfrdmn \"View the GitHub contributions of Sean Fridman on repository bevry/safefs\")\n\n### Finances\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n#### Sponsors\n\n-   [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher\n-   [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders.\n-   [Codecov](https://codecov.io/) — Empower developers with tools to improve code quality and testing.\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games.\n-   [Syntax](https://syntax.fm) — Syntax Podcast\n\n#### Donors\n\n-   [Andrew Nesbitt](https://nesbitt.io)\n-   [Balsa](https://balsa.com)\n-   [Chad](https://opencollective.com/chad8)\n-   [Codecov](https://codecov.io/)\n-   [entroniq](https://gitlab.com/entroniq)\n-   [Jean-Luc Geering](https://github.com/jlgeering)\n-   [Michael Duane Mooring](https://bevry.me)\n-   [Mohammed Shah](https://github.com/smashah)\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Sentry](https://sentry.io)\n-   [ServieJS](https://github.com/serviejs)\n-   [Skunk Team](https://skunk.team)\n-   [Syntax](https://syntax.fm)\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n## License\n\nUnless stated otherwise all works are:\n\n-   Copyright &copy; [Benjamin Lupton](https://balupton.com)\n\nand licensed under:\n\n-   [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"157a4aa29bbf10fabd02119c89fd81e83fbecb7e","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-AeaZkr/cetCdddCWkGdLrWf100qWVGadQjdjLz1rlOVrs5sMS1ht9omNT9cak8ydrS6U3PpFgSKXnNTDKLJ8bg==","shasum":"efaa95fa9280bc2612bacf74e9d9655a0f193ef8","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.7.0-next.1703665346.157a4aa29bbf10fabd02119c89fd81e83fbecb7e.tgz","fileCount":9,"unpackedSize":43164,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFU8y/i7T3K8uSmb9tbrhqh4FJaAjQhB90O4iJ6CZoaVAiEA0OI9GUyjLWtDFJAK6hgA7OC5B7BXC5ydyftK5BReX1Y="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.7.0-next.1703665346.157a4aa29bbf10fabd02119c89fd81e83fbecb7e_1703665347830_0.7131993190357144"},"_hasShrinkwrap":false},"8.8.0-next.1703781037.dae80393701cdbb6eedf404a3e5f40d6cf214f74":{"title":"Safe FS","name":"safefs","version":"8.8.0-next.1703781037.dae80393701cdbb6eedf404a3e5f40d6cf214f74","license":"Artistic-2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"bugs":{"url":"https://github.com/bevry/safefs/issues"},"keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},{"name":"James Gill","url":"https://www.linkedin.com/in/jagill"},{"name":"Kyle Robinson Young","url":"https://dontkry.com"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://seanfridman.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Armen Mkrtchian (https://mogoni.dev) (https://github.com/Armenm)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov)","dr.dimitru (https://veliovgroup.com) (https://github.com/dr-dimitru)","Elliott Ditman (https://elliottditman.com) (https://github.com/elliottditman)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","GitHub (https://github.com/about) (https://github.com/github)","Hunter Beast (https://cryptoquick.com) (https://github.com/cryptoquick)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Michael Harry Scepaniak <mhs1.sys@gmail.com> (https://michaelscepaniak.com) (https://github.com/hispanic)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Mr. Henry <hello@mrhenry.be> (https://mrhenry.be) (https://github.com/mrhenry)","Nermal <nermalcat69@skiff.com> (https://arjunaditya.vercel.app) (https://github.com/nermalcat69)","Pleo (https://www.pleo.io) (https://github.com/pleo-io)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Robert de Forest <guitar.robot@gmail.com> (https://github.com/rdeforest)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)","WriterJohnBuck (https://github.com/WriterJohnBuck)"],"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.10.0"},"devDependencies":{"assert-helpers":"^11.12.0","eslint":"^8.56.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.1.2","jsdoc":"^4.0.2","kava":"^7.6.0","prettier":"^3.1.1","projectz":"^4.1.1","valid-directory":"^4.8.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz --offline","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"_id":"safefs@8.8.0-next.1703781037.dae80393701cdbb6eedf404a3e5f40d6cf214f74","readme":"<!-- TITLE/ -->\n\n# Safe FS\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n## Alternatives\n\nYou should use these instead, which use and provide modern APIs while providing brilliant ecosystem support:\n\n-   [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)\n-   [@bevry/fs-executable](https://github.com/bevry/fs-executable)\n-   [@bevry/fs-list](https://github.com/bevry/fs-list)\n-   [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)\n-   [@bevry/fs-read](https://github.com/bevry/fs-read)\n-   [@bevry/fs-readable](https://github.com/bevry/fs-readable)\n-   [@bevry/fs-remove](https://github.com/bevry/fs-remove)\n-   [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)\n-   [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)\n-   [@bevry/fs-write](https://github.com/bevry/fs-write)\n-   [@bevry/fs-writable](https://github.com/bevry/fs-writable)\n\n<!-- INSTALL/ -->\n\n## Install\n\n### [npm](https://npmjs.com \"npm is a package manager for javascript\")\n\n-   Install: `npm install --save safefs`\n-   Import: `import * as pkg from ('safefs')`\n-   Require: `const pkg = require('safefs')`\n\n### [Editions](https://editions.bevry.me \"Editions are the best way to produce and consume packages you care about.\")\n\nThis package is published with the following editions:\n-   `safefs` aliases `safefs/source/index.js`\n-   `safefs/source/index.js` is [ESNext](https://en.wikipedia.org/wiki/ECMAScript#ES.Next \"ECMAScript Next\") source code for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n\n### [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\")\n\nThis project provides its type information via inline [JSDoc Comments](http://usejsdoc.org \"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\"). To make use of this in [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\"), set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomplish this via your `tsconfig.json` file like so:\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n## History\n\n[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/safefs/blob/HEAD/HISTORY.md#files)\n\n<!-- /HISTORY -->\n\n<!-- BACKERS/ -->\n\n## Backers\n\n### Code\n\n[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/safefs/blob/HEAD/CONTRIBUTING.md#files)\n\n#### Authors\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Maintainers\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Contributors\n\n-   [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/safefs/commits?author=balupton \"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\")\n-   [James Gill](https://github.com/jagill) — [view contributions](https://github.com/bevry/safefs/commits?author=jagill \"View the GitHub contributions of James Gill on repository bevry/safefs\")\n-   [Kyle Robinson Young](https://github.com/shama) — [view contributions](https://github.com/bevry/safefs/commits?author=shama \"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\")\n-   [Sean Fridman](https://github.com/sfrdmn) — [view contributions](https://github.com/bevry/safefs/commits?author=sfrdmn \"View the GitHub contributions of Sean Fridman on repository bevry/safefs\")\n\n### Finances\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n#### Sponsors\n\n-   [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher\n-   [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders.\n-   [Codecov](https://codecov.io) — Empower developers with tools to improve code quality and testing.\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games.\n-   [Syntax](https://syntax.fm) — Syntax Podcast\n\n#### Donors\n\n-   [Andrew Nesbitt](https://nesbitt.io)\n-   [Armen Mkrtchian](https://mogoni.dev)\n-   [Balsa](https://balsa.com)\n-   [Chad](https://opencollective.com/chad8)\n-   [Codecov](https://codecov.io)\n-   [dr.dimitru](https://veliovgroup.com)\n-   [Elliott Ditman](https://elliottditman.com)\n-   [entroniq](https://gitlab.com/entroniq)\n-   [GitHub](https://github.com/about)\n-   [Hunter Beast](https://cryptoquick.com)\n-   [Jean-Luc Geering](https://github.com/jlgeering)\n-   [Michael Duane Mooring](https://mdm.cc)\n-   [Michael Harry Scepaniak](https://michaelscepaniak.com)\n-   [Mohammed Shah](https://github.com/smashah)\n-   [Mr. Henry](https://mrhenry.be)\n-   [Nermal](https://arjunaditya.vercel.app)\n-   [Pleo](https://www.pleo.io)\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Robert de Forest](https://github.com/rdeforest)\n-   [Sentry](https://sentry.io)\n-   [ServieJS](https://github.com/serviejs)\n-   [Skunk Team](https://skunk.team)\n-   [Syntax](https://syntax.fm)\n-   [WriterJohnBuck](https://github.com/WriterJohnBuck)\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n## License\n\nUnless stated otherwise all works are:\n\n-   Copyright &copy; [Benjamin Lupton](https://balupton.com)\n\nand licensed under:\n\n-   [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"dae80393701cdbb6eedf404a3e5f40d6cf214f74","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-FaxXYR2FGXBFAZDu/0RYADct0WAEiqfI5GuJBLGjMhS5RLV4V1wPC34kTOQzm1Aajz/FPu9C9y9CY7HFZtrl9w==","shasum":"fb865836f50fa8e43830835785042f44560b89ac","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.8.0-next.1703781037.dae80393701cdbb6eedf404a3e5f40d6cf214f74.tgz","fileCount":6,"unpackedSize":36925,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDkk8Z/Sm3tPkybOmn98sqqBlBhRd3lFzqG2wMv2px3pAiEAsVMGiJK42QY/uZu2ge1MbBKVg5pTeNyrtDWSSww+uIg="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.8.0-next.1703781037.dae80393701cdbb6eedf404a3e5f40d6cf214f74_1703781052356_0.21509941266361698"},"_hasShrinkwrap":false},"8.8.0":{"title":"Safe FS","name":"safefs","version":"8.8.0","license":"Artistic-2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"bugs":{"url":"https://github.com/bevry/safefs/issues"},"keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},{"name":"James Gill","url":"https://www.linkedin.com/in/jagill"},{"name":"Kyle Robinson Young","url":"https://dontkry.com"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://seanfridman.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Armen Mkrtchian (https://mogoni.dev) (https://github.com/Armenm)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov)","dr.dimitru (https://veliovgroup.com) (https://github.com/dr-dimitru)","Elliott Ditman (https://elliottditman.com) (https://github.com/elliottditman)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","GitHub (https://github.com/about) (https://github.com/github)","Hunter Beast (https://cryptoquick.com) (https://github.com/cryptoquick)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Michael Harry Scepaniak <mhs1.sys@gmail.com> (https://michaelscepaniak.com) (https://github.com/hispanic)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Mr. Henry <hello@mrhenry.be> (https://mrhenry.be) (https://github.com/mrhenry)","Nermal <nermalcat69@skiff.com> (https://arjunaditya.vercel.app) (https://github.com/nermalcat69)","Pleo (https://www.pleo.io) (https://github.com/pleo-io)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Robert de Forest <guitar.robot@gmail.com> (https://github.com/rdeforest)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)","WriterJohnBuck (https://github.com/WriterJohnBuck)"],"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.10.0"},"devDependencies":{"assert-helpers":"^11.12.0","eslint":"^8.56.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.1.2","jsdoc":"^4.0.2","kava":"^7.6.0","prettier":"^3.1.1","projectz":"^4.1.1","valid-directory":"^4.8.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz --offline","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"_id":"safefs@8.8.0","gitHead":"dae80393701cdbb6eedf404a3e5f40d6cf214f74","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-VF3pMUE4xOZyW75Gh0u6rfWqNXGzTNNcIyxgXccBiV4/7wweJX/Y8BBHb7UPvZdK/Ajv7M6Nr/LPzJ9z8YUcxw==","shasum":"575b8e3d05dfa677964754913b9439703757563f","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.8.0.tgz","fileCount":6,"unpackedSize":36868,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDcpAVhnVmdGBXpSrWrAR5dCJ0s8DPJF/7SzjCDxuFdJAiBLZ1E2KL3NInQJJSyB7d9yIpBm8SX+bDZPph/JDF08fQ=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.8.0_1703781110879_0.882433771512076"},"_hasShrinkwrap":false},"8.9.0":{"title":"Safe FS","name":"safefs","version":"8.9.0","license":"Artistic-2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"bugs":{"url":"https://github.com/bevry/safefs/issues"},"keywords":["closeFile","emfile","es2015","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},{"name":"James Gill","url":"https://www.linkedin.com/in/jagill"},{"name":"Kyle Robinson Young","url":"https://dontkry.com"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://seanfridman.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Armen Mkrtchian (https://mogoni.dev) (https://github.com/Armenm)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov)","dr.dimitru (https://veliovgroup.com) (https://github.com/dr-dimitru)","Elliott Ditman (https://elliottditman.com) (https://github.com/elliottditman)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","GitHub (https://github.com/about) (https://github.com/github)","Hunter Beast (https://cryptoquick.com) (https://github.com/cryptoquick)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Michael Harry Scepaniak <mhs1.sys@gmail.com> (https://michaelscepaniak.com) (https://github.com/hispanic)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Mr. Henry <hello@mrhenry.be> (https://mrhenry.be) (https://github.com/mrhenry)","Nermal <nermalcat69@skiff.com> (https://arjunaditya.vercel.app) (https://github.com/nermalcat69)","Pleo (https://www.pleo.io) (https://github.com/pleo-io)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Robert de Forest <guitar.robot@gmail.com> (https://github.com/rdeforest)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)","WriterJohnBuck (https://github.com/WriterJohnBuck)"],"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}},{"description":"ESNext compiled for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-node-6","entry":"index.js","tags":["compiled","javascript","es2015","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}}],"type":"commonjs","main":"index.cjs","dependencies":{"editions":"^6.21.0","graceful-fs":"^4.2.11","version-compare":"^3.10.0"},"devDependencies":{"@babel/cli":"^7.23.4","@babel/core":"^7.23.6","@babel/plugin-proposal-object-rest-spread":"^7.20.7","@babel/preset-env":"^7.23.6","assert-helpers":"^11.12.0","eslint":"^8.56.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.1.2","jsdoc":"^4.0.2","kava":"^7.7.0","prettier":"^3.1.1","projectz":"^4.1.1","valid-directory":"^4.8.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-6","our:compile:edition-node-6":"env BABEL_ENV=edition-node-6 babel --out-dir ./edition-node-6 ./source && printf '%s' '{\"type\": \"commonjs\"}' > edition-node-6/package.json","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz --offline","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"babel":{"env":{"edition-node-6":{"sourceType":"script","presets":[["@babel/preset-env",{"targets":{"node":"6"},"modules":"commonjs"}]],"plugins":["@babel/proposal-object-rest-spread"]}}},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5","endOfLine":"lf"},"_id":"safefs@8.9.0","gitHead":"a9769fe98b09802abd99bbc01ff4a55552d5b919","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-kFEWbz7Uty9cmAZpb7caucQWQG/6XhTWLQyamwxjYqLXqx+EUDHcGmsxbIC2dotbTh97sAXYuYBD1mWNV5WG9Q==","shasum":"2481fcbe4c6688d8251adb920fed2e61a6688cae","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.9.0.tgz","fileCount":9,"unpackedSize":44488,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAMVhwyMjvrfpywOAbh/oJnI0nkGoiNverTvoXw4CgvxAiEAjLNe4BDlaWHXaSAHOSwnUR+UsgUzYxwSqWhzeqi9/00="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.9.0_1703832369331_0.8536558326335948"},"_hasShrinkwrap":false},"8.9.0-next.1703832328.a9769fe98b09802abd99bbc01ff4a55552d5b919":{"title":"Safe FS","name":"safefs","version":"8.9.0-next.1703832328.a9769fe98b09802abd99bbc01ff4a55552d5b919","license":"Artistic-2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"bugs":{"url":"https://github.com/bevry/safefs/issues"},"keywords":["closeFile","emfile","es2015","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},{"name":"James Gill","url":"https://www.linkedin.com/in/jagill"},{"name":"Kyle Robinson Young","url":"https://dontkry.com"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://seanfridman.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Armen Mkrtchian (https://mogoni.dev) (https://github.com/Armenm)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov)","dr.dimitru (https://veliovgroup.com) (https://github.com/dr-dimitru)","Elliott Ditman (https://elliottditman.com) (https://github.com/elliottditman)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","GitHub (https://github.com/about) (https://github.com/github)","Hunter Beast (https://cryptoquick.com) (https://github.com/cryptoquick)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Michael Harry Scepaniak <mhs1.sys@gmail.com> (https://michaelscepaniak.com) (https://github.com/hispanic)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Mr. Henry <hello@mrhenry.be> (https://mrhenry.be) (https://github.com/mrhenry)","Nermal <nermalcat69@skiff.com> (https://arjunaditya.vercel.app) (https://github.com/nermalcat69)","Pleo (https://www.pleo.io) (https://github.com/pleo-io)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Robert de Forest <guitar.robot@gmail.com> (https://github.com/rdeforest)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)","WriterJohnBuck (https://github.com/WriterJohnBuck)"],"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}},{"description":"ESNext compiled for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-node-6","entry":"index.js","tags":["compiled","javascript","es2015","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}}],"type":"commonjs","main":"index.cjs","dependencies":{"editions":"^6.21.0","graceful-fs":"^4.2.11","version-compare":"^3.10.0"},"devDependencies":{"@babel/cli":"^7.23.4","@babel/core":"^7.23.6","@babel/plugin-proposal-object-rest-spread":"^7.20.7","@babel/preset-env":"^7.23.6","assert-helpers":"^11.12.0","eslint":"^8.56.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.1.2","jsdoc":"^4.0.2","kava":"^7.7.0","prettier":"^3.1.1","projectz":"^4.1.1","valid-directory":"^4.8.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-6","our:compile:edition-node-6":"env BABEL_ENV=edition-node-6 babel --out-dir ./edition-node-6 ./source && printf '%s' '{\"type\": \"commonjs\"}' > edition-node-6/package.json","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz --offline","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"babel":{"env":{"edition-node-6":{"sourceType":"script","presets":[["@babel/preset-env",{"targets":{"node":"6"},"modules":"commonjs"}]],"plugins":["@babel/proposal-object-rest-spread"]}}},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5","endOfLine":"lf"},"_id":"safefs@8.9.0-next.1703832328.a9769fe98b09802abd99bbc01ff4a55552d5b919","readme":"<!-- TITLE/ -->\n\n# Safe FS\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n## Alternatives\n\nYou should use these instead, which use and provide modern APIs while providing brilliant ecosystem support:\n\n-   [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)\n-   [@bevry/fs-executable](https://github.com/bevry/fs-executable)\n-   [@bevry/fs-list](https://github.com/bevry/fs-list)\n-   [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)\n-   [@bevry/fs-read](https://github.com/bevry/fs-read)\n-   [@bevry/fs-readable](https://github.com/bevry/fs-readable)\n-   [@bevry/fs-remove](https://github.com/bevry/fs-remove)\n-   [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)\n-   [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)\n-   [@bevry/fs-write](https://github.com/bevry/fs-write)\n-   [@bevry/fs-writable](https://github.com/bevry/fs-writable)\n\n<!-- INSTALL/ -->\n\n## Install\n\n### [npm](https://npmjs.com \"npm is a package manager for javascript\")\n\n-   Install: `npm install --save safefs`\n-   Import: `import * as pkg from ('safefs')`\n-   Require: `const pkg = require('safefs')`\n\n### [Editions](https://editions.bevry.me \"Editions are the best way to produce and consume packages you care about.\")\n\nThis package is published with the following editions:\n-   `safefs` aliases `safefs/index.cjs` which uses the [Editions Autoloader](https://github.com/bevry/editions \"You can use the Editions Autoloader to autoload the appropriate edition for your consumers environment\") to automatically select the correct edition for the consumer's environment\n-   `safefs/source/index.js` is [ESNext](https://en.wikipedia.org/wiki/ECMAScript#ES.Next \"ECMAScript Next\") source code for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n-   `safefs/edition-node-6/index.js` is [ESNext](https://en.wikipedia.org/wiki/ECMAScript#ES.Next \"ECMAScript Next\") compiled for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n\n### [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\")\n\nThis project provides its type information via inline [JSDoc Comments](http://usejsdoc.org \"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\"). To make use of this in [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\"), set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomplish this via your `tsconfig.json` file like so:\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n## History\n\n[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/safefs/blob/HEAD/HISTORY.md#files)\n\n<!-- /HISTORY -->\n\n<!-- BACKERS/ -->\n\n## Backers\n\n### Code\n\n[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/safefs/blob/HEAD/CONTRIBUTING.md#files)\n\n#### Authors\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Maintainers\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Contributors\n\n-   [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/safefs/commits?author=balupton \"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\")\n-   [James Gill](https://github.com/jagill) — [view contributions](https://github.com/bevry/safefs/commits?author=jagill \"View the GitHub contributions of James Gill on repository bevry/safefs\")\n-   [Kyle Robinson Young](https://github.com/shama) — [view contributions](https://github.com/bevry/safefs/commits?author=shama \"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\")\n-   [Sean Fridman](https://github.com/sfrdmn) — [view contributions](https://github.com/bevry/safefs/commits?author=sfrdmn \"View the GitHub contributions of Sean Fridman on repository bevry/safefs\")\n\n### Finances\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n#### Sponsors\n\n-   [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher\n-   [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders.\n-   [Codecov](https://codecov.io) — Empower developers with tools to improve code quality and testing.\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games.\n-   [Syntax](https://syntax.fm) — Syntax Podcast\n\n#### Donors\n\n-   [Andrew Nesbitt](https://nesbitt.io)\n-   [Armen Mkrtchian](https://mogoni.dev)\n-   [Balsa](https://balsa.com)\n-   [Chad](https://opencollective.com/chad8)\n-   [Codecov](https://codecov.io)\n-   [dr.dimitru](https://veliovgroup.com)\n-   [Elliott Ditman](https://elliottditman.com)\n-   [entroniq](https://gitlab.com/entroniq)\n-   [GitHub](https://github.com/about)\n-   [Hunter Beast](https://cryptoquick.com)\n-   [Jean-Luc Geering](https://github.com/jlgeering)\n-   [Michael Duane Mooring](https://mdm.cc)\n-   [Michael Harry Scepaniak](https://michaelscepaniak.com)\n-   [Mohammed Shah](https://github.com/smashah)\n-   [Mr. Henry](https://mrhenry.be)\n-   [Nermal](https://arjunaditya.vercel.app)\n-   [Pleo](https://www.pleo.io)\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Robert de Forest](https://github.com/rdeforest)\n-   [Sentry](https://sentry.io)\n-   [ServieJS](https://github.com/serviejs)\n-   [Skunk Team](https://skunk.team)\n-   [Syntax](https://syntax.fm)\n-   [WriterJohnBuck](https://github.com/WriterJohnBuck)\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n## License\n\nUnless stated otherwise all works are:\n\n-   Copyright &copy; [Benjamin Lupton](https://balupton.com)\n\nand licensed under:\n\n-   [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"a9769fe98b09802abd99bbc01ff4a55552d5b919","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-g1m92J2W70fZOu29D6xCMWzDyaQZj43yOni+FKz6shzx9zt/kkt/ckd76VmgMcmR5RfMCEuv2XCnV2TEowEkAA==","shasum":"457b457de5232940e0b0b066daf62af358484c1f","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.9.0-next.1703832328.a9769fe98b09802abd99bbc01ff4a55552d5b919.tgz","fileCount":9,"unpackedSize":44545,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBa1YVHENDQqSNa8O9hOxR2jLfGD+D31YteiZ822lEB3AiANpIzLzTcmV8RyPs2cH3MRfsjJnPVCWM2duTfqYTjdyw=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.9.0-next.1703832328.a9769fe98b09802abd99bbc01ff4a55552d5b919_1703832380091_0.2125748022522962"},"_hasShrinkwrap":false},"8.10.0-next.1704169742.613c6d0e59a478223a12aebafd1863c414026a48":{"title":"Safe FS","name":"safefs","version":"8.10.0-next.1704169742.613c6d0e59a478223a12aebafd1863c414026a48","license":"Artistic-2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"bugs":{"url":"https://github.com/bevry/safefs/issues"},"keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},{"name":"James Gill","url":"https://linkedin.com/in/jagill"},{"name":"Kyle Robinson Young","url":"https://dontkry.com"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://seanfridman.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Armen Mkrtchian (https://mogoni.dev) (https://github.com/Armenm)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov)","dr.dimitru (https://veliovgroup.com) (https://github.com/dr-dimitru)","Elliott Ditman (https://elliottditman.com) (https://github.com/elliottditman)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","GitHub (https://github.com/about) (https://github.com/github)","Hunter Beast (https://cryptoquick.com) (https://github.com/cryptoquick)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Michael Harry Scepaniak <mhs1.sys@gmail.com> (https://michaelscepaniak.com) (https://github.com/hispanic)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Mr. Henry <hello@mrhenry.be> (https://mrhenry.be) (https://github.com/mrhenry)","Nermal <nermalcat69@skiff.com> (https://arjunaditya.vercel.app) (https://github.com/nermalcat69)","Pleo (https://pleo.io) (https://github.com/pleo-io)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Robert de Forest <guitar.robot@gmail.com> (https://github.com/rdeforest)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)","WriterJohnBuck (https://github.com/WriterJohnBuck)"],"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.10.0"},"devDependencies":{"assert-helpers":"^11.12.0","eslint":"^8.56.0","eslint-config-bevry":"^5.5.0","eslint-config-prettier":"^9.1.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.1.2","jsdoc":"^4.0.2","kava":"^7.9.0","prettier":"^3.1.1","projectz":"^4.2.0","valid-directory":"^4.9.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz --offline","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"_id":"safefs@8.10.0-next.1704169742.613c6d0e59a478223a12aebafd1863c414026a48","readme":"<!-- TITLE/ -->\n\n# Safe FS\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n## Alternatives\n\nYou should use these instead, which use and provide modern APIs while providing brilliant ecosystem support:\n\n-   [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)\n-   [@bevry/fs-executable](https://github.com/bevry/fs-executable)\n-   [@bevry/fs-list](https://github.com/bevry/fs-list)\n-   [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)\n-   [@bevry/fs-read](https://github.com/bevry/fs-read)\n-   [@bevry/fs-readable](https://github.com/bevry/fs-readable)\n-   [@bevry/fs-remove](https://github.com/bevry/fs-remove)\n-   [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)\n-   [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)\n-   [@bevry/fs-write](https://github.com/bevry/fs-write)\n-   [@bevry/fs-writable](https://github.com/bevry/fs-writable)\n\n<!-- INSTALL/ -->\n\n## Install\n\n### [npm](https://npmjs.com \"npm is a package manager for javascript\")\n\n-   Install: `npm install --save safefs`\n-   Import: `import * as pkg from ('safefs')`\n-   Require: `const pkg = require('safefs')`\n\n### [Editions](https://editions.bevry.me \"Editions are the best way to produce and consume packages you care about.\")\n\nThis package is published with the following editions:\n-   `safefs` aliases `safefs/source/index.js`\n-   `safefs/source/index.js` is [ESNext](https://en.wikipedia.org/wiki/ECMAScript#ES.Next \"ECMAScript Next\") source code for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n\n### [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\")\n\nThis project provides its type information via inline [JSDoc Comments](http://usejsdoc.org \"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\"). To make use of this in [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\"), set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomplish this via your `tsconfig.json` file like so:\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n## History\n\n[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/safefs/blob/HEAD/HISTORY.md#files)\n\n<!-- /HISTORY -->\n\n<!-- BACKERS/ -->\n\n## Backers\n\n### Code\n\n[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/safefs/blob/HEAD/CONTRIBUTING.md#files)\n\n#### Authors\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Maintainers\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Contributors\n\n-   [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/safefs/commits?author=balupton \"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\")\n-   [James Gill](https://github.com/jagill) — [view contributions](https://github.com/bevry/safefs/commits?author=jagill \"View the GitHub contributions of James Gill on repository bevry/safefs\")\n-   [Kyle Robinson Young](https://github.com/shama) — [view contributions](https://github.com/bevry/safefs/commits?author=shama \"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\")\n-   [Sean Fridman](https://github.com/sfrdmn) — [view contributions](https://github.com/bevry/safefs/commits?author=sfrdmn \"View the GitHub contributions of Sean Fridman on repository bevry/safefs\")\n\n### Finances\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n#### Sponsors\n\n-   [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher\n-   [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders.\n-   [Codecov](https://codecov.io) — Empower developers with tools to improve code quality and testing.\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games.\n-   [Syntax](https://syntax.fm) — Syntax Podcast\n\n#### Donors\n\n-   [Andrew Nesbitt](https://nesbitt.io)\n-   [Armen Mkrtchian](https://mogoni.dev)\n-   [Balsa](https://balsa.com)\n-   [Chad](https://opencollective.com/chad8)\n-   [Codecov](https://codecov.io)\n-   [dr.dimitru](https://veliovgroup.com)\n-   [Elliott Ditman](https://elliottditman.com)\n-   [entroniq](https://gitlab.com/entroniq)\n-   [GitHub](https://github.com/about)\n-   [Hunter Beast](https://cryptoquick.com)\n-   [Jean-Luc Geering](https://github.com/jlgeering)\n-   [Michael Duane Mooring](https://mdm.cc)\n-   [Michael Harry Scepaniak](https://michaelscepaniak.com)\n-   [Mohammed Shah](https://github.com/smashah)\n-   [Mr. Henry](https://mrhenry.be)\n-   [Nermal](https://arjunaditya.vercel.app)\n-   [Pleo](https://pleo.io)\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Robert de Forest](https://github.com/rdeforest)\n-   [Sentry](https://sentry.io)\n-   [ServieJS](https://github.com/serviejs)\n-   [Skunk Team](https://skunk.team)\n-   [Syntax](https://syntax.fm)\n-   [WriterJohnBuck](https://github.com/WriterJohnBuck)\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n## License\n\nUnless stated otherwise all works are:\n\n-   Copyright &copy; [Benjamin Lupton](https://balupton.com)\n\nand licensed under:\n\n-   [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"613c6d0e59a478223a12aebafd1863c414026a48","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-CaFOJdIDUiujgSOA6aOPvSYECTTD85x8abT/kmqzqmv6XVDtitg/d85mjvSjAJ8mfpfUqyTV/qWTAox3MUAULQ==","shasum":"da6ca3d3594579f3010518113ebbd6aeacc7e028","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.10.0-next.1704169742.613c6d0e59a478223a12aebafd1863c414026a48.tgz","fileCount":6,"unpackedSize":36914,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDGDtf/QzkhuoOXP7TUkl4hSdFceIywuPApZuMfsipryAiEAxzpjphocqrCqXI+8B5chzvNRwysa0FTioRZSiKOCwdA="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.10.0-next.1704169742.613c6d0e59a478223a12aebafd1863c414026a48_1704169762065_0.739591485678089"},"_hasShrinkwrap":false},"8.10.0":{"title":"Safe FS","name":"safefs","version":"8.10.0","license":"Artistic-2.0","description":"Stop getting EMFILE errors! Open only as many files as the operating system supports.","homepage":"https://github.com/bevry/safefs","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"bugs":{"url":"https://github.com/bevry/safefs/issues"},"keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"safefs","githubSlug":"bevry/safefs","npmPackageName":"safefs"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},{"name":"James Gill","url":"https://linkedin.com/in/jagill"},{"name":"Kyle Robinson Young","url":"https://dontkry.com"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://seanfridman.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Armen Mkrtchian (https://mogoni.dev) (https://github.com/Armenm)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov)","dr.dimitru (https://veliovgroup.com) (https://github.com/dr-dimitru)","Elliott Ditman (https://elliottditman.com) (https://github.com/elliottditman)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","GitHub (https://github.com/about) (https://github.com/github)","Hunter Beast (https://cryptoquick.com) (https://github.com/cryptoquick)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Michael Harry Scepaniak <mhs1.sys@gmail.com> (https://michaelscepaniak.com) (https://github.com/hispanic)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Mr. Henry <hello@mrhenry.be> (https://mrhenry.be) (https://github.com/mrhenry)","Nermal <nermalcat69@skiff.com> (https://arjunaditya.vercel.app) (https://github.com/nermalcat69)","Pleo (https://pleo.io) (https://github.com/pleo-io)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Robert de Forest <guitar.robot@gmail.com> (https://github.com/rdeforest)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)","WriterJohnBuck (https://github.com/WriterJohnBuck)"],"engines":{"node":">=4"},"editions":[{"description":"ESNext source code for Node.js 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"source","entry":"index.js","tags":["source","javascript","esnext","require"],"engines":{"node":"4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21"}}],"type":"commonjs","main":"source/index.js","dependencies":{"graceful-fs":"^4.2.11","version-compare":"^3.10.0"},"devDependencies":{"assert-helpers":"^11.12.0","eslint":"^8.56.0","eslint-config-bevry":"^5.5.0","eslint-config-prettier":"^9.1.0","eslint-plugin-babel":"^5.3.1","eslint-plugin-prettier":"^5.1.2","jsdoc":"^4.0.2","kava":"^7.9.0","prettier":"^3.1.1","projectz":"^4.2.0","valid-directory":"^4.9.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"printf '%s\n' 'no need for this project'","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:jsdoc","our:meta:docs:jsdoc":"rm -rf ./docs && jsdoc --recurse --pedantic --access all --destination ./docs --package ./package.json --readme ./README.md ./source && mv ./docs/$npm_package_name/$npm_package_version/* ./docs/ && rm -rf ./docs/$npm_package_name/$npm_package_version","our:meta:projectz":"projectz --offline","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./source/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"_id":"safefs@8.10.0","gitHead":"613c6d0e59a478223a12aebafd1863c414026a48","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-ZHnuws4iLc5vB6kxU/MpGEZO7Fz80zIEOJw6VgRAroa/PeJB/jcc2KEXxWA0Izpx+W728j398DxQRx1RU+KXIg==","shasum":"63400de6a630ebb6d1e42a517b15e3a17ab9180a","tarball":"https://registry.npmjs.org/safefs/-/safefs-8.10.0.tgz","fileCount":6,"unpackedSize":36857,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE8V6R5HxKHBZ2cxt46z6oxazSt0QrIecUou8arCZIHLAiEAzD4hhTKGFqSh3JgvMlc+lnUibWisuX43cFIncMYaVOk="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/safefs_8.10.0_1704169773877_0.7288600391118043"},"_hasShrinkwrap":false}},"readme":"<!-- TITLE/ -->\n\n# Safe FS\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/safefs/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/safefs/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/safefs.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/safefs\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/safefs.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nStop getting EMFILE errors! Open only as many files as the operating system supports.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)\n\n```javascript\nvar safefs = require('safefs')\n```\n\nSafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.\n\nOn-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:\n\n-   `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it\n-   `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`\n-   `unlink(path, next)` - checks if the file exists before removing it\n\nSafeFS also define these additional methods:\n\n-   `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`\n-   `getParentPathSync(path)` - returns the parent directory of the path\n\n## Alternatives\n\nYou should use these instead, which use and provide modern APIs while providing brilliant ecosystem support:\n\n-   [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)\n-   [@bevry/fs-executable](https://github.com/bevry/fs-executable)\n-   [@bevry/fs-list](https://github.com/bevry/fs-list)\n-   [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)\n-   [@bevry/fs-read](https://github.com/bevry/fs-read)\n-   [@bevry/fs-readable](https://github.com/bevry/fs-readable)\n-   [@bevry/fs-remove](https://github.com/bevry/fs-remove)\n-   [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)\n-   [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)\n-   [@bevry/fs-write](https://github.com/bevry/fs-write)\n-   [@bevry/fs-writable](https://github.com/bevry/fs-writable)\n\n<!-- INSTALL/ -->\n\n## Install\n\n### [npm](https://npmjs.com \"npm is a package manager for javascript\")\n\n-   Install: `npm install --save safefs`\n-   Import: `import * as pkg from ('safefs')`\n-   Require: `const pkg = require('safefs')`\n\n### [Editions](https://editions.bevry.me \"Editions are the best way to produce and consume packages you care about.\")\n\nThis package is published with the following editions:\n-   `safefs` aliases `safefs/source/index.js`\n-   `safefs/source/index.js` is [ESNext](https://en.wikipedia.org/wiki/ECMAScript#ES.Next \"ECMAScript Next\") source code for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n\n### [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\")\n\nThis project provides its type information via inline [JSDoc Comments](http://usejsdoc.org \"JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor\"). To make use of this in [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\"), set your <code>maxNodeModuleJsDepth</code> compiler option to `5` or thereabouts. You can accomplish this via your `tsconfig.json` file like so:\n``` json\n{\n  \"compilerOptions\": {\n    \"maxNodeModuleJsDepth\": 5\n  }\n}\n```\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n## History\n\n[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/safefs/blob/HEAD/HISTORY.md#files)\n\n<!-- /HISTORY -->\n\n<!-- BACKERS/ -->\n\n## Backers\n\n### Code\n\n[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/safefs/blob/HEAD/CONTRIBUTING.md#files)\n\n#### Authors\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Maintainers\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Contributors\n\n-   [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/safefs/commits?author=balupton \"View the GitHub contributions of Benjamin Lupton on repository bevry/safefs\")\n-   [James Gill](https://github.com/jagill) — [view contributions](https://github.com/bevry/safefs/commits?author=jagill \"View the GitHub contributions of James Gill on repository bevry/safefs\")\n-   [Kyle Robinson Young](https://github.com/shama) — [view contributions](https://github.com/bevry/safefs/commits?author=shama \"View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs\")\n-   [Sean Fridman](https://github.com/sfrdmn) — [view contributions](https://github.com/bevry/safefs/commits?author=sfrdmn \"View the GitHub contributions of Sean Fridman on repository bevry/safefs\")\n\n### Finances\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n#### Sponsors\n\n-   [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher\n-   [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders.\n-   [Codecov](https://codecov.io) — Empower developers with tools to improve code quality and testing.\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games.\n-   [Syntax](https://syntax.fm) — Syntax Podcast\n\n#### Donors\n\n-   [Andrew Nesbitt](https://nesbitt.io)\n-   [Armen Mkrtchian](https://mogoni.dev)\n-   [Balsa](https://balsa.com)\n-   [Chad](https://opencollective.com/chad8)\n-   [Codecov](https://codecov.io)\n-   [dr.dimitru](https://veliovgroup.com)\n-   [Elliott Ditman](https://elliottditman.com)\n-   [entroniq](https://gitlab.com/entroniq)\n-   [GitHub](https://github.com/about)\n-   [Hunter Beast](https://cryptoquick.com)\n-   [Jean-Luc Geering](https://github.com/jlgeering)\n-   [Michael Duane Mooring](https://mdm.cc)\n-   [Michael Harry Scepaniak](https://michaelscepaniak.com)\n-   [Mohammed Shah](https://github.com/smashah)\n-   [Mr. Henry](https://mrhenry.be)\n-   [Nermal](https://arjunaditya.vercel.app)\n-   [Pleo](https://pleo.io)\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Robert de Forest](https://github.com/rdeforest)\n-   [Sentry](https://sentry.io)\n-   [ServieJS](https://github.com/serviejs)\n-   [Skunk Team](https://skunk.team)\n-   [Syntax](https://syntax.fm)\n-   [WriterJohnBuck](https://github.com/WriterJohnBuck)\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n## License\n\nUnless stated otherwise all works are:\n\n-   Copyright &copy; [Benjamin Lupton](https://balupton.com)\n\nand licensed under:\n\n-   [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)\n\n<!-- /LICENSE -->\n","maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"time":{"modified":"2024-01-02T04:29:34.232Z","created":"2013-03-29T05:21:13.429Z","2.0.0":"2013-03-29T05:21:23.855Z","2.0.1":"2013-03-29T05:31:16.406Z","2.0.2":"2013-04-01T07:13:55.349Z","2.0.3":"2013-04-01T07:25:28.178Z","3.0.0":"2013-04-04T18:44:24.518Z","3.0.1":"2013-04-05T00:12:34.528Z","3.0.2":"2013-08-29T06:03:16.306Z","3.0.3":"2013-08-29T06:07:29.794Z","3.0.4":"2013-11-06T12:23:49.172Z","3.0.5":"2013-11-17T15:35:12.015Z","3.0.6":"2013-11-25T13:52:25.841Z","3.1.0":"2013-12-18T07:22:37.203Z","3.1.1":"2014-02-04T21:49:18.419Z","3.1.2":"2014-12-12T01:46:31.563Z","3.1.3":"2015-03-17T16:50:54.813Z","3.2.0":"2015-09-05T14:59:22.035Z","3.2.1":"2015-09-05T15:23:27.811Z","3.2.2":"2015-09-05T15:26:18.556Z","4.0.0":"2015-09-05T15:37:55.606Z","4.0.1":"2015-12-10T01:28:25.327Z","4.1.0":"2016-05-27T16:22:58.777Z","4.2.0-next.1573581968.f57353e1353147252e8c306eb5f06321631ea46a":"2019-11-12T18:06:10.454Z","4.2.0":"2019-11-12T18:06:27.659Z","5.0.0-next.1573587875.b7585a0222f45d7da1de03afe82a62e8feaadde7":"2019-11-12T19:44:36.525Z","5.0.0":"2019-11-12T19:45:02.392Z","5.1.0-next.1573602873.3aaa2c33bdd7b81b659c002542c3420d4787e547":"2019-11-12T23:54:35.545Z","5.1.0":"2019-11-12T23:56:02.850Z","5.1.0-next.1573685258.e896dec01a3dba92500d17047e5566683d82b4c4":"2019-11-13T22:47:39.757Z","5.1.0-next.1573739753.2045d6106f825ecdf6bdf798c30af54f2a6cb727":"2019-11-14T13:55:55.204Z","5.2.0-next.1574057506.8a8f8a2cbbf9576f8abbba58cf52acb2b8be3c08":"2019-11-18T06:11:48.666Z","5.2.0":"2019-11-18T06:12:52.597Z","5.2.0-next.1574633707.9cddc12afc23d538d1ac8756e24c9e96a3e3be04":"2019-11-24T22:15:08.857Z","5.2.0-next.1574654240.1459cd64923d56a05cd683906f5edb902f065fbc":"2019-11-25T03:57:27.042Z","5.3.0-next.1575154183.c64fb9fdb4c8d0329e549bcf55097ca3267c7366":"2019-11-30T22:49:45.357Z","5.3.0":"2019-11-30T22:50:53.865Z","5.4.0-next.1575218787.6a7dd47c160a9588cdb05bf65a88b3d2dfecec19":"2019-12-01T16:46:29.300Z","5.4.0":"2019-12-01T16:46:58.707Z","5.5.0-next.1575918587.08414f820d713e7033963a17b6d90d84740e276b":"2019-12-09T19:09:48.704Z","5.5.0":"2019-12-09T19:10:39.344Z","5.5.0-next.1584138081.0ff57bda4005b1e8f702a7e50b8f9114fe3f70c5":"2020-03-13T22:21:22.733Z","6.0.0-next.1589186247.0d4291354de51adc4abae6ebbf34c6e4104b12e2":"2020-05-11T08:37:28.943Z","6.0.0":"2020-05-11T08:38:38.305Z","6.1.0-next.1590008467.4f65c6e5bc3f80ae216e63dffacfd5b061558b4b":"2020-05-20T21:01:08.503Z","6.1.0":"2020-05-20T21:02:03.488Z","6.2.0-next.1590064065.336549bb5a49b01eb6bfae65e0ab27928c6b6c14":"2020-05-21T12:27:47.175Z","6.2.0":"2020-05-21T12:28:44.864Z","6.3.0-next.1590081175.7af8cbff01d472aea0afce8b2f832e6c62307cf9":"2020-05-21T17:12:57.388Z","6.3.0":"2020-05-21T17:13:52.019Z","6.4.0-next.1591785786.b5ed9934425d4d1d66de3d8eadd40f199d9ad19a":"2020-06-10T10:43:07.913Z","6.4.0":"2020-06-10T10:44:07.396Z","6.5.0-next.1591801732.beb3464ecf780a45211c950975fd597142182410":"2020-06-10T15:08:53.274Z","6.5.0":"2020-06-10T15:09:51.900Z","6.6.0-next.1592641161.83ae2243ad11eca51a55e57602a96f5fb47a4e67":"2020-06-20T08:19:22.378Z","6.6.0":"2020-06-20T08:26:55.053Z","6.7.0-next.1592728511.eac5c543041c364b3a1b2a95cd259fba7a3f2f13":"2020-06-21T08:35:12.305Z","6.7.0":"2020-06-21T08:36:06.618Z","6.8.0-next.1592764124.9017681ef46d96ef48330f178f108fb2737a82d0":"2020-06-21T18:28:45.420Z","6.8.0":"2020-06-21T18:29:47.191Z","6.9.0-next.1593059904.694d53073ce64fbeb5ae9aded6b6726b68382bc7":"2020-06-25T04:38:25.643Z","6.9.0":"2020-06-25T04:39:25.102Z","6.9.0-next.1593742702.4969d107d499b75686658b9e79e43720adde9c05":"2020-07-03T02:18:23.710Z","6.10.0-next.1595450801.a66d06f76cb6853fd11fb5690a4666a68ba59dc6":"2020-07-22T20:46:42.461Z","6.10.0":"2020-07-22T20:47:33.905Z","6.11.0":"2020-08-04T06:38:02.586Z","6.11.0-next.1596523086.92288f125c8c20edf7371dc9433371e4507c7541":"2020-08-04T06:38:07.605Z","6.12.0":"2020-08-17T21:56:03.850Z","6.12.0-next.1597701390.685a9b3e5487f7f2a0b11c2c75993f2eb66694a1":"2020-08-17T21:56:31.518Z","6.12.0-next.1598183321.7616aedd6951232f5c315d474990ac6bdee7a176":"2020-08-23T11:48:42.910Z","6.12.0-next.1598772366.967710869cb72e371e023af9396023ca7dbabf75":"2020-08-30T07:26:07.834Z","6.13.0-next.1599280300.5f9e23ad285bdfc82abf4a45beb2845a1161b9de":"2020-09-05T04:31:42.579Z","6.13.0":"2020-09-05T04:32:07.232Z","6.13.0-next.1599392887.b693405c13180836bc1c20940f8cadc7c9b7bb6f":"2020-09-06T11:48:08.682Z","6.13.0-next.1599991002.9f51f998df542f0bf8205d76935a0641d684c356":"2020-09-13T09:56:43.570Z","6.13.0-next.1600588992.38562b63048565c795104dc84c178ca90d4d6d42":"2020-09-20T08:03:13.985Z","6.13.0-next.1601202681.9a259ffc66644b488abd6f017914ba9bdd113956":"2020-09-27T10:31:22.687Z","6.13.0-next.1601213152.53eeafbf594e13721712b04ac96aab87448e6085":"2020-09-27T13:25:53.634Z","6.13.0-next.1602405103.302840dd530bb6d28dfbafe570f7601ac0157222":"2020-10-11T08:31:44.411Z","6.13.0-next.1603012749.d715df7c9d738ca10d8fd5868132808bf2d79374":"2020-10-18T09:19:11.405Z","6.13.0-next.1603618318.7258274dc6510e88b72cfbde2c84b1d616662181":"2020-10-25T09:31:59.492Z","6.13.0-next.1603629268.1e65add73222ea8693554c2844a0a10bf4e3e463":"2020-10-25T12:34:29.795Z","6.14.0-next.1603942046.5a1a0cbdd68a048a3645278a48d6b8df9ee46b34":"2020-10-29T03:27:28.537Z","6.14.0":"2020-10-29T03:27:58.396Z","6.14.0-next.1604222254.95ef5efad11841e78243d5cc862a587aa45212a2":"2020-11-01T09:17:36.146Z","6.14.0-next.1604815542.8a866b1a4c509cb6c390f42102a60e422a788080":"2020-11-08T06:05:43.514Z","6.15.0-next.1627430530.3142162155ca187f63b56b4192488d6bebad2355":"2021-07-28T00:02:11.966Z","6.15.0":"2021-07-28T00:07:05.332Z","6.16.0-next.1627672070.44c22c37ea1f2102dcb2f98605fe0512835740d3":"2021-07-30T19:07:54.649Z","6.16.0":"2021-07-30T19:12:12.673Z","7.0.0-next.1698927729.5177d5ac4a3edb7d0e0e3264566edd9556a00df9":"2023-11-02T12:22:12.438Z","8.0.0":"2023-11-13T06:51:15.582Z","8.0.0-next.1699858303.399448cc2578fca105003a24fd7d22883f7552e9":"2023-11-13T06:51:45.786Z","8.1.0":"2023-11-13T06:55:45.906Z","8.1.0-next.1699858550.970b7261c2ca0b1da36bfc78e79fbf8206bf1e42":"2023-11-13T06:55:51.857Z","8.1.0-next.1699869485.b2890db0294bb1184110e1b0787eda715baee029":"2023-11-13T09:58:07.313Z","8.2.0-next.1699877194.e0d337f448cfbbbb74a4669c5fcc993b08ec6c15":"2023-11-13T12:06:36.293Z","8.2.0":"2023-11-13T12:06:42.764Z","8.3.0":"2023-11-14T16:20:00.871Z","8.3.0-next.1700120101.40737ec3aeb4ea010ffa815ba5f2f47b31ee8c88":"2023-11-16T07:35:03.263Z","8.3.0-next.1700200404.c2480d4f2f9509a3942d1d9dd52ce0390fc3591d":"2023-11-17T05:53:26.591Z","8.4.0-next.1700543880.4768e8e461753b7c9c8f16f11aab9c7e3900fdbb":"2023-11-21T05:18:02.248Z","8.4.0":"2023-11-21T05:18:05.537Z","8.5.0":"2023-11-24T21:10:10.495Z","8.5.0-next.1700860216.f992366331001e6a87c31ab50ef9525ba93a8de9":"2023-11-24T21:10:17.766Z","8.6.0":"2023-12-05T16:37:21.188Z","8.6.0-next.1701794253.d969f4abd238f2523d7966f431a465bd0d457e83":"2023-12-05T16:37:34.505Z","8.7.0":"2023-12-27T08:22:04.744Z","8.7.0-next.1703665346.157a4aa29bbf10fabd02119c89fd81e83fbecb7e":"2023-12-27T08:22:28.015Z","8.8.0-next.1703781037.dae80393701cdbb6eedf404a3e5f40d6cf214f74":"2023-12-28T16:30:52.510Z","8.8.0":"2023-12-28T16:31:51.075Z","8.9.0":"2023-12-29T06:46:09.548Z","8.9.0-next.1703832328.a9769fe98b09802abd99bbc01ff4a55552d5b919":"2023-12-29T06:46:20.274Z","8.10.0-next.1704169742.613c6d0e59a478223a12aebafd1863c414026a48":"2024-01-02T04:29:22.254Z","8.10.0":"2024-01-02T04:29:34.039Z"},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"repository":{"type":"git","url":"git+https://github.com/bevry/safefs.git"},"readmeFilename":"README.md","homepage":"https://github.com/bevry/safefs","keywords":["closeFile","emfile","esnext","fs","node","openFile","path","typed","types"],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},{"name":"James Gill","url":"https://linkedin.com/in/jagill"},{"name":"Kyle Robinson Young","url":"https://dontkry.com"},{"name":"Sean Fridman","email":"mail@seanfridman.com","url":"https://seanfridman.com"}],"bugs":{"url":"https://github.com/bevry/safefs/issues"},"license":"Artistic-2.0"}