{"_id":"appcache-nanny","_rev":"37-ecb7c61ebe3dbd79818e25484b3a95a4","name":"appcache-nanny","description":"Teaches the applicationCache douchebag some manners!","dist-tags":{"latest":"1.1.0"},"versions":{"0.0.1":{"name":"appcache-nanny","version":"0.0.1","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","_id":"appcache-nanny@0.0.1","dist":{"shasum":"e5e5b31fd615358ebad52b88f840e36537ef8a5d","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-0.0.1.tgz","integrity":"sha512-ETx51HXxymkJ16rVePk51qk977/HQfz4e0qmDsqG1QcNJergpticFsWU0lrdYzYgbo+Ux2PTuDkVpyV8Q+xOmQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHD4VO7a2l3kTBtkZ1Ta8U+kiJUYbZesurh/0SsJnO0/AiBYoeVmPGgnLfTMmw7JwugoOjJUznY1QMZixMgfnDrpPw=="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}]},"0.0.2":{"name":"appcache-nanny","version":"0.0.2","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","_id":"appcache-nanny@0.0.2","dist":{"shasum":"ba6e4d8c1383fc02b32aab767abd502d3c2c2f8b","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-0.0.2.tgz","integrity":"sha512-ua6wu8wPprgd2p0P0N75Id2MgkYFR7ZD2JenfjXLYMHcz5Im7kz+tMMKH8hCegOP/FuW5u+Tp2MofoeiUarNjw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDaYCbnM80SOWZ6NS/Oq30FPlRkYr+hM49rcaWBD+yuZAIhAJvi8qjqi4ACiyU/ngUJF3jiRqME16mvFo4DdsQhE5Ip"}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}]},"0.0.3":{"name":"appcache-nanny","version":"0.0.3","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","_id":"appcache-nanny@0.0.3","dist":{"shasum":"768cc963e3a3ada6f49522d80520d43fd22826c3","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-0.0.3.tgz","integrity":"sha512-lCHunO8NsekEIFgQ8e57W0OnwDVcULuEtSjl6g8/fFrmvwHnmkva90q+ywjgAVf0vfoJZej5ToPMisy/NPyZSw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbisEqaoTszB4UwM4iGiG2y+OLl1qhpBZE6YDBCNovKwIgc9bQAIg7Elz3a6sJnOOyATpKhNs0XcHuGwaH4Gp9K8I="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}]},"0.0.4":{"name":"appcache-nanny","version":"0.0.4","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","_id":"appcache-nanny@0.0.4","dist":{"shasum":"f9c0fac61a81cbc4e59312c26b310faa75e11019","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-0.0.4.tgz","integrity":"sha512-rN8lFQNUEr/ofFjGrR25pcwOQQ02S4QSxrYLVEP+7KQ7Xs2BxE3o9z+vdZFn6B5z+DnIU4SD0674qtagBsTxDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjnEf07yfo4EhpCzU+VOLuej9bJ92e8JaNRxbbHicjmgIgYxQ+skkPnOIKtBWN21bA0MKuSBPtLb0qVcZ+6UvCrbo="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}]},"0.0.5":{"name":"appcache-nanny","version":"0.0.5","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","_id":"appcache-nanny@0.0.5","dist":{"shasum":"f89a455af86ee84a19128071a0d4d53b099771ef","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-0.0.5.tgz","integrity":"sha512-pOCsEyk3PfqqiTz+g0wggML8OKb/3xRvr2tJ7CEXoUw/fWDNgkJLCNrcXgKdXJ7zNFzkn0dFBYco3IQaWgElIg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEfBIbFdpfbx1aJGnK0gyDy9gZfdRxOYo9B9JPPrE8otAiBg2Wn3Q+P9pOUIpgRI3yz77I3ykHAgO1SJagSIqTU58g=="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}]},"0.0.6":{"name":"appcache-nanny","version":"0.0.6","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","_id":"appcache-nanny@0.0.6","dist":{"shasum":"5365b4d8f2bdcba967f1fb8d9afb2f494915dda2","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-0.0.6.tgz","integrity":"sha512-xmSUqVru9h7r8nxkyahUwDthTdNmHmQNAXY1X64sSfk8Ley0TuFTJP2tK7ZLsygyyIMesxgJG0pEKiSnJzkKXg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCB7nD2NWxVo8pePtj91D66HMOGTFYSO4Rw01YFk661VgIgRwRT3X+ZE6T+TjSRhUAlWIp36r0TMP0qplJ56oeM1Ns="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}]},"1.0.0":{"name":"appcache-nanny","version":"1.0.0","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"node ./bin/test-browser.js","start":"node ./bin/dev-server.js"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","devDependencies":{"chai":"^1.10.0","chai-as-promised":"^4.1.1","colors":"^1.0.3","hapi":"^8.1.0","mocha":"^2.1.0","moment":"^2.9.0","sauce-connect-launcher":"^0.9.3","selenium-standalone":"^2.44.0-4","wd":"^0.3.11"},"dependencies":{},"gitHead":"052fcdc5b9cdd72f67421ee8bce2be94ccd95c34","_id":"appcache-nanny@1.0.0","_shasum":"25612c8955cdb0b5220c7e04546fcbc3f3194c8e","_from":".","_npmVersion":"2.1.11","_nodeVersion":"0.10.32","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}],"dist":{"shasum":"25612c8955cdb0b5220c7e04546fcbc3f3194c8e","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-1.0.0.tgz","integrity":"sha512-G0fGjRuiPnAqt+JKh8qlPUHGYCDO62Nhhll/H5hbLUKabuYHFXssQy1vUWsHEiL+5I+B6VPEViUeQwXw7Y6BbQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHBsL2Earw3Wz6R9ULPaKbv8yIy6PhmWWCy+kYr5u9UpAiA/9EWBxd/j9pnM0U/NGDops/oHLX01io91pod1Sjgk4g=="}]}},"1.0.1":{"name":"appcache-nanny","version":"1.0.1","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"node ./bin/test-browser.js","start":"node ./bin/dev-server.js","prepublish":"semantic-release pre","postpublish":"semantic-release post"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","devDependencies":{"chai":"^1.10.0","chai-as-promised":"^4.1.1","colors":"^1.0.3","hapi":"^8.1.0","mocha":"^2.1.0","moment":"^2.9.0","sauce-connect-launcher":"^0.9.3","selenium-standalone":"^2.44.0-4","semantic-release":"^3.0.2","wd":"^0.3.11"},"dependencies":{},"gitHead":"8e209364ddff3ce33ca6a6e598ac2f656bf11b3b","_id":"appcache-nanny@1.0.1","_shasum":"7282fd802473f8fb92889fc7984937ca3b557b60","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}],"dist":{"shasum":"7282fd802473f8fb92889fc7984937ca3b557b60","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-1.0.1.tgz","integrity":"sha512-W2LsMcQ37QUQ13jvuyigvDAPgF90nN5X+dtUK6ymCr2LwC7/0muqS+PKsg1BuI07IJGMSQXSUww+g9NfcGp33g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZ2LVDtDRcMDkBK5+erEJpxcOGZ2sw+zEZ2O0tKT/zCAIhAO+XZwaJysUPk72Ely4Dwvb+ihd/B0ImBunQ8T4NuER1"}]}},"0.0.0-semantically-released":{"name":"appcache-nanny","version":"0.0.0-semantically-released","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"node ./bin/test-browser.js","start":"node ./bin/dev-server.js","prepublish":"semantic-release pre","postpublish":"semantic-release post"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","devDependencies":{"chai":"^1.10.0","chai-as-promised":"^4.1.1","colors":"^1.0.3","hapi":"^8.1.0","mocha":"^2.1.0","moment":"^2.9.0","sauce-connect-launcher":"^0.9.3","selenium-standalone":"^2.44.0-4","semantic-release":"^3.0.2","wd":"^0.3.11"},"dependencies":{},"gitHead":"8e209364ddff3ce33ca6a6e598ac2f656bf11b3b","_id":"appcache-nanny@0.0.0-semantically-released","_shasum":"3e47af42a63cef1e9ec6147136f2af85932b3291","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}],"dist":{"shasum":"3e47af42a63cef1e9ec6147136f2af85932b3291","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-0.0.0-semantically-released.tgz","integrity":"sha512-r4J+MVVLXOZ4mvQYs8cAoly5tqGQ81u7//uCFgLkNVp3oCMBKnt87qSgeTTNYbIGrvB1Ts91nEJW5zJAC2FPJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDps512PqqasYU54Wy81qwJ1HMDimDICjpGpsf1Tl2XlwIhAJ3E+UzAs2qHl/WQWF5nFhWZGga0v0zkM5OEeb5xJRf1"}]}},"1.0.2":{"name":"appcache-nanny","version":"1.0.2","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"node ./bin/test-browser.js","start":"node ./bin/dev-server.js","prepublish":"semantic-release pre","postpublish":"semantic-release post"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","devDependencies":{"chai":"^1.10.0","chai-as-promised":"^4.1.1","colors":"^1.0.3","hapi":"^8.1.0","mocha":"^2.1.0","moment":"^2.9.0","sauce-connect-launcher":"^0.9.3","selenium-standalone":"^2.44.0-4","semantic-release":"^3.0.2","wd":"^0.3.11"},"dependencies":{},"gitHead":"8e209364ddff3ce33ca6a6e598ac2f656bf11b3b","_id":"appcache-nanny@1.0.2","_shasum":"3917740b8f3b4d7c372e2e4d0f778d2fc4d3c76c","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}],"dist":{"shasum":"3917740b8f3b4d7c372e2e4d0f778d2fc4d3c76c","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-1.0.2.tgz","integrity":"sha512-s2oKMqWIyKioYdXdCnA3/FYZEAexbFzSY02baxua3myWb6IqipD4A4pkJ450rC/DwlpwAN7Kq6n47tWpDwRBkw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUrhMhcmEkxzV6HIUX8ldIZMvO0R54z7nbz0gPo2nqcAIgfTBaGgqeCSmR6vpUUwtbe8CiVCQdYVYeDWNtGN3bIRU="}]}},"1.0.3":{"name":"appcache-nanny","version":"1.0.3","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"test":"node ./bin/test-browser.js","start":"node ./bin/dev-server.js","prepublish":"semantic-release pre","postpublish":"semantic-release post"},"repository":{"type":"git","url":"git://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","devDependencies":{"chai":"^1.10.0","chai-as-promised":"^4.1.1","colors":"^1.0.3","hapi":"^8.1.0","mocha":"^2.1.0","moment":"^2.9.0","sauce-connect-launcher":"^0.9.3","selenium-standalone":"^2.44.0-4","semantic-release":"^3.0.2","wd":"^0.3.11"},"dependencies":{},"gitHead":"8e209364ddff3ce33ca6a6e598ac2f656bf11b3b","_id":"appcache-nanny@1.0.3","_shasum":"95c0ddf6b2bb9744065d359f163633d0ae1618c9","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}],"dist":{"shasum":"95c0ddf6b2bb9744065d359f163633d0ae1618c9","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-1.0.3.tgz","integrity":"sha512-pQRGu+sF3OzQsAKtuPxMAGaseB/GS4xEsA25GPXQ692o3FWTPaEMB6vzujQppL3xmIpGmx6JI4YexleNGdwksw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBooQH0FbtD8XilAkXE0HK2gP1YITuLWUm/30r8U2b4yAiA6QcoP54R4bdG9MX0l817yUlNq+4fEdqJNa/AQNRucLw=="}]}},"1.1.0":{"name":"appcache-nanny","description":"Teaches the applicationCache douchebag some manners!","main":"appcache-nanny.js","scripts":{"pretest":"standard","test":"frontend-test-background mocha test/*.js","start":"node ./bin/dev-server.js","semantic-release":"semantic-release pre && npm publish && semantic-release post"},"repository":{"type":"git","url":"git+https://github.com/gr2m/appcache-nanny.git"},"keywords":["browser","appcache","offlinefirst"],"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"license":"MIT","bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"homepage":"https://github.com/gr2m/appcache-nanny","devDependencies":{"@gr2m/frontend-test-setup":"^1.2.1","chai":"^3.5.0","chai-as-promised":"^5.1.0","colors":"^1.1.2","hapi":"^13.4.2","inert":"^4.0.0","mocha":"^2.5.2","moment":"^2.10.3","semantic-release":"^6.3.0","standard":"^7.1.2"},"standard":{"ignore":["bower_components"]},"frontend-test-setup":{"server":{"cmd":"node ./bin/dev-server.js","host":"127.0.0.1","port":8888}},"version":"1.1.0","gitHead":"18a43a3c244c2a9a1c84444c597f6f31e3d610c9","_id":"appcache-nanny@1.1.0","_shasum":"a573ef5433e0dacfbe2e2d824a320925d23143a3","_from":".","_npmVersion":"3.10.3","_nodeVersion":"4.4.7","_npmUser":{"name":"gr2m","email":"gregor@martynus.net"},"dist":{"shasum":"a573ef5433e0dacfbe2e2d824a320925d23143a3","tarball":"https://registry.npmjs.org/appcache-nanny/-/appcache-nanny-1.1.0.tgz","integrity":"sha512-/eKS9g1E7xMf24JD7fcZxgl84Q8mt+fqbue8M6emZ/HmWBbJz+sX3q49209r5kaS5w5OZvOR9dRYXgxA7J6GNA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAGLII728bOQI+IMCNEXBTsnGYUP3EV6OYf1GBNSlSQ3AiEA06lXPAID257P0seoLxDOPJ11t4ReUbqefJ94ScWaB9Q="}]},"maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/appcache-nanny-1.1.0.tgz_1467646769884_0.7210623053833842"}}},"readme":"The appCache Nanny\n==================\n\n> Teaches the applicationCache douchebag some manners!\n\n[![Build Status](https://travis-ci.org/gr2m/appcache-nanny.svg)](https://travis-ci.org/gr2m/appcache-nanny)\n\nAs we all know, the [Application Cache is a Douchebag](http://alistapart.com/article/application-cache-is-a-douchebag).\nIt's time to teach it some manners – The appCache Nanny for Rescue!\n\nNo more manifest attributes on your HTML files. Whether you want to cache\nyour assets offline or not, when to start ... You Are In Control™\n\nHave a glance:\n\n```js\n// start to check for updates every 30s\nappCacheNanny.start()\n\n// optionally, pass intervals in ms\nappCacheNanny.start({checkInterval: 10000})\n\n// you can also check for updates at any time\nappCacheNanny.update()\n\n// The appCache nanny tells you if there is a new update available\nappCacheNanny.hasUpdate()\n\n// She tells you about all relevant applicationCache events\nappCacheNanny.on('update', handleUpdate)\nappCacheNanny.on('error', handleError)\nappCacheNanny.on('obsolete', handleObsolete)\nappCacheNanny.on('noupdate', handleNoupdate)\nappCacheNanny.on('downloading', handleDownloading)\nappCacheNanny.on('progress', handleProgress)\nappCacheNanny.on('cached', handleCached)\nappCacheNanny.on('updateready', handleUpdateready)\n\n// plus some extra ones\nappCacheNanny.on('init:downloading', handleInitDownloading)\nappCacheNanny.on('init:progress', handleInitProgress)\nappCacheNanny.on('init:cached', handleInitCached)\nappCacheNanny.on('start', handleStart)\nappCacheNanny.on('stop', handleStop)\n\n// options\nappCacheNanny.set('loaderPath', '/path/to/my-custom-loader.html')\nappCacheNanny.set({ 'loaderPath': '/path/to/my-custom-loader.html' })\nappCacheNanny.get('loaderPath')\nappCacheNanny.get() // returns all options\n```\n\nSetup\n-----\n\n1. Copy `appcache-loader.html` into the root directory of your app,\n   so that it's accessible at `/appcache-loader.html`.\n2. Create the `manifest.appcache` file and put it in the root directory\n   of your app, next to `/appcache-loader.html`. If you use a different\n   name, make sure to set it accordingly in `appcache-loader.html`.\n\nThen load the `appcache-nanny.js` on your HTML pages.\n\n```html\n<script src=\"appcache-nanny.js\" async></script>\n```\n\nIf you use [bower](http://bower.io/), you can install it using:\n\n```\nbower install --save appcache-nanny\n```\n\nOr install via [npm](https://www.npmjs.com/)\n\n```\nnpm install --save appcache-nanny\n```\n\nBackground\n----------\n\nI extracted `appcache-nanny.js` from [minutes.io](https://minutes.io), which is an [Offline First](http://offlinefirst.org/)\nweb application, anno 2011. It's battle tested by a ton of users, devices, internet environments.\n\nminutes.io checks every 30 seconds if an update is available. And whenever the user navigates\nfrom one view to another, it reloads the page in case there is. As the assets are all cached,\nthe user cannot tell that their page got just reloaded. It's silent, without any notification,\nor a prompt asking the user to reload the page. And it works very well so far.\n\nDemo\n----\n\n![appCacheNanny demo screencast](https://raw.github.com/gr2m/appcache-nanny/master/demo/demo.gif)\n\nThe appCache Nanny comes with a simple server for testing. Start it using Node:\n\n```js\nnpm start\n```\n\nIt will start a local server at http://localhost:8888.\n\nThis is a static server with a few hidden features:\n\n- `GET /bump-version` increases the app version, so an update gets triggered\n  on next check\n- `GET /remove-manifest` makes `GET /manifest.appcache` return 404, so it\n  becomes obsolete on next check\n- `GET /recreate-manifest` undoes the previous step.\n\n\nGotchas\n-------\n\n### Unlisted paths get loaded from the server, not from cache (via FALLBACK)\n\nThanks to the [iframe hack](http://labs.ft.com/category/tutorial/), your HTML pages do\nnot get added to the list of cached assets locally, and won't get checked for updates\neach time. Which is great especially for a Single Page Application with pushState enabled.\nBut if your app has paths like `/welcome`, `/Dashboard`, `Meeting/123` and your `manifest.appcache`\nlooks something like\n\n```\nCACHE MANIFEST\n\n/\n/app.js\n/styles.css\n\nFALLBACK:\n/ /\n```\n\nBeware that opening `http://yourapp.com` will always show the currently cached\nversion, as it is explicetly listed, while `http://yourapp.com/welcome` and\nother paths will load the page from the server, unless the user is offline.\n\nYou might have learned that assets that are not listed in the cache manifest\ncannot be loaded at all, even when online. But that's not the case if the\nloaded HTML page does not have the `manifest` property on the `html` tag.\n\n\nAcknowledgement\n---------------\n\nThe appCache Nanny is based on tremendeous amount of research others have done\non applicationCache. I'd like to highlight\n\n* **[Jake Archibald](https://twitter.com/jaffathecake)**: [Application Cache is a Douchebag](http://alistapart.com/article/application-cache-is-a-douchebag)\n  and for some great laughs: [Network connectivity: optional](http://www.youtube.com/watch?v=Z7sRMg0f5Hk)\n* **[Financial Times Lab Team](http://labs.ft.com)**: [Tutorial: How to make an offline HTML5 web app](http://labs.ft.com/category/tutorial/),\n  also recommended: [Andrew Betts – Offline rules](http://www.youtube.com/watch?v=Ut4R4udJ4Gw)\n* **[Eric Bidelman](https://twitter.com/ebidel)**: [A Beginner's Guide to Using the Application Cache](http://www.html5rocks.com/en/tutorials/appcache/beginner/)\n* [Appcache Facts](http://appcache.offline.technology/) by [Mark Christian](https://twitter.com/shinypb) & [Peter Lubbers](https://twitter.com/peterlubbers)\n\n\nTODOs / IDEAs\n-------------\n\n* on obsolete, remove the iframe, load it again to check if a new *.appcache path\n  has been set. If yes, update and trigger `updateready` event, otherwise trigger\n  `obsolete` event\n\nFine Print\n----------\n\nThe appCache Nanny has been authored by [Gregor Martynus](https://github.com/gr2m),\nproud member of the [Hoodie Community](http://hood.ie/).\n\nLicense: MIT\n","maintainers":[{"name":"gr2m","email":"gregor@martynus.net"}],"time":{"modified":"2022-06-13T03:17:13.050Z","created":"2014-06-18T18:13:10.292Z","0.0.1":"2014-06-18T18:13:15.758Z","0.0.2":"2014-07-02T14:57:05.145Z","0.0.3":"2014-07-02T15:42:14.688Z","0.0.4":"2014-07-13T21:06:59.885Z","0.0.5":"2014-07-23T15:52:22.727Z","0.0.6":"2014-08-21T10:10:18.878Z","1.0.0":"2015-01-12T14:35:41.498Z","1.0.1":"2015-02-26T13:47:56.040Z","0.0.0-semantically-released":"2015-02-26T13:48:21.969Z","1.0.2":"2015-02-26T13:49:10.946Z","1.0.3":"2015-02-26T13:57:33.234Z","1.1.0":"2016-07-04T15:39:32.201Z"},"readmeFilename":"README.md","homepage":"https://github.com/gr2m/appcache-nanny","keywords":["browser","appcache","offlinefirst"],"repository":{"type":"git","url":"git+https://github.com/gr2m/appcache-nanny.git"},"author":{"name":"Gregor Martynus","email":"gregor@martynus.net"},"bugs":{"url":"https://github.com/gr2m/appcache-nanny/issues"},"license":"MIT"}