{"_id":"yazl","_rev":"3819723","name":"yazl","description":"yet another zip library for node","dist-tags":{"latest":"3.3.1"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"time":{"modified":"2025-06-26T01:50:35.000Z","created":"2014-09-15T01:02:13.815Z","3.3.1":"2024-11-23T13:22:38.473Z","3.3.0":"2024-11-08T14:38:08.371Z","3.2.1":"2024-11-03T17:46:44.249Z","3.2.0":"2024-11-02T19:36:57.624Z","3.1.0":"2024-10-19T15:13:47.480Z","3.0.1":"2024-10-19T12:27:30.354Z","3.0.0":"2024-10-18T14:57:15.779Z","2.5.1":"2018-12-01T01:44:43.455Z","2.5.0":"2018-11-16T03:55:34.950Z","2.4.3":"2017-10-30T21:53:30.519Z","2.4.2":"2016-10-27T02:39:52.002Z","2.4.1":"2016-06-30T18:28:51.213Z","2.4.0":"2016-06-26T21:22:44.964Z","2.3.1":"2016-05-09T18:42:45.577Z","2.3.0":"2015-12-23T16:32:07.244Z","2.2.2":"2015-05-07T18:44:28.926Z","2.2.1":"2015-03-27T10:23:06.633Z","2.2.0":"2015-03-22T00:16:04.137Z","2.1.3":"2015-03-20T23:44:05.872Z","2.1.2":"2015-03-03T22:52:29.609Z","2.1.1":"2015-03-02T01:36:38.294Z","2.1.0":"2015-01-16T21:24:37.304Z","2.0.2":"2014-10-05T21:21:24.213Z","2.0.1":"2014-09-29T04:49:22.238Z","2.0.0":"2014-09-24T08:17:27.309Z","1.1.0":"2014-09-23T07:35:49.416Z","1.0.0":"2014-09-21T17:00:24.782Z","0.1.0":"2014-09-20T16:27:35.727Z","0.0.0":"2014-09-15T01:02:13.815Z"},"users":{"monolithed":true,"superjoe":true,"ghostcode521":true,"tomekf":true,"elisee":true,"drpaulbrewer":true,"strawhat":true,"shuoshubao":true,"r24y":true,"d-band":true},"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"versions":{"3.3.1":{"name":"yazl","version":"3.3.1","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"^1.0.0"},"devDependencies":{"yauzl":"^3.2.0"},"_id":"yazl@3.3.1","gitHead":"20584c378c654fc5b5ad141697ec539d7cb27c9e","_nodeVersion":"20.15.1","_npmVersion":"10.7.0","dist":{"shasum":"a69abad02d80739d3b1a7ffcca8434422477432c","size":16923,"noattachment":false,"key":"/yazl/-/yazl-3.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-3.3.1.tgz"},"_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"directories":{},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yazl_3.3.1_1732368158302_0.7331629647669113"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-11-23T13:22:38.473Z","publish_time":1732368158473,"_source_registry_name":"default","_cnpm_publish_time":1732368158473},"3.3.0":{"name":"yazl","version":"3.3.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"^1.0.0"},"devDependencies":{"yauzl":"^3.2.0"},"_id":"yazl@3.3.0","gitHead":"e4e0b2c29a21b4c0267112aaf2a9e56f99e3fc50","_nodeVersion":"20.15.1","_npmVersion":"10.7.0","dist":{"shasum":"5cc1d868cb7d0aab96ed11601111129b0cce2f4d","size":16856,"noattachment":false,"key":"/yazl/-/yazl-3.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-3.3.0.tgz"},"_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"directories":{},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yazl_3.3.0_1731076688127_0.42731328722247985"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-11-08T14:38:08.371Z","publish_time":1731076688371,"_source_registry_name":"default","_cnpm_publish_time":1731076688371},"3.2.1":{"name":"yazl","version":"3.2.1","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"^1.0.0"},"devDependencies":{"yauzl":"^3.1.3"},"_id":"yazl@3.2.1","gitHead":"09a1dfdae0125141a398705cfe0c196c92c00153","_nodeVersion":"20.15.1","_npmVersion":"10.7.0","dist":{"shasum":"2f820bb7776315657bb3e73e16cbf7e9036bde87","size":15291,"noattachment":false,"key":"/yazl/-/yazl-3.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-3.2.1.tgz"},"_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"directories":{},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yazl_3.2.1_1730656004057_0.16504049140661214"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-11-03T17:46:44.249Z","publish_time":1730656004249,"_source_registry_name":"default","_cnpm_publish_time":1730656004249},"3.2.0":{"name":"yazl","version":"3.2.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"^1.0.0"},"devDependencies":{"yauzl":"^3.1.3"},"_id":"yazl@3.2.0","gitHead":"69432083ba6fd0c7bf7302b8da20384e3f421bd8","_nodeVersion":"20.15.1","_npmVersion":"10.7.0","dist":{"shasum":"24a2b4c1e803666a39320b87ecbabf7701b8d25f","size":15260,"noattachment":false,"key":"/yazl/-/yazl-3.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-3.2.0.tgz"},"_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"directories":{},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yazl_3.2.0_1730576217416_0.26645745707054247"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-11-02T19:36:57.624Z","publish_time":1730576217624,"_source_registry_name":"default","_cnpm_publish_time":1730576217624},"3.1.0":{"name":"yazl","version":"3.1.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"^1.0.0"},"devDependencies":{"yauzl":"^3.1.3"},"_id":"yazl@3.1.0","gitHead":"9402bf2be8d0a043022f804600c735f6bd17741a","_nodeVersion":"20.15.1","_npmVersion":"10.7.0","dist":{"shasum":"92902cee0f04c9dce565573f3013405ac1c2b1a8","size":14973,"noattachment":false,"key":"/yazl/-/yazl-3.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-3.1.0.tgz"},"_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"directories":{},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yazl_3.1.0_1729350827267_0.19060211117121773"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-10-19T15:13:47.480Z","publish_time":1729350827480,"_source_registry_name":"default","_cnpm_publish_time":1729350827480},"3.0.1":{"name":"yazl","version":"3.0.1","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"^1.0.0"},"devDependencies":{"bl":"^6.0.11","yauzl":"^3.1.3"},"_id":"yazl@3.0.1","gitHead":"0f1ed3bf205c5f4f3edb96b0c68d7a28052c5d1b","_nodeVersion":"20.15.1","_npmVersion":"10.7.0","dist":{"shasum":"b16732bf6ec1cb6027263b7d28727b8710395d4b","size":14196,"noattachment":false,"key":"/yazl/-/yazl-3.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-3.0.1.tgz"},"_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"directories":{},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yazl_3.0.1_1729340850197_0.6946672443716149"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-10-19T12:27:30.354Z","publish_time":1729340850354,"_source_registry_name":"default","_cnpm_publish_time":1729340850354},"3.0.0":{"name":"yazl","version":"3.0.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"^1.0.0"},"devDependencies":{"bl":"^6.0.11","yauzl":"^3.1.3"},"_id":"yazl@3.0.0","gitHead":"a4b38d06f2e242bcbc891504ea9f1db718c1ea78","_nodeVersion":"20.15.1","_npmVersion":"10.7.0","dist":{"shasum":"6bf504630a42a1753164acc496f389375496dc43","size":14141,"noattachment":false,"key":"/yazl/-/yazl-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-3.0.0.tgz"},"_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"directories":{},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yazl_3.0.0_1729263435569_0.6664306683830235"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-10-18T14:57:15.779Z","publish_time":1729263435779,"_source_registry_name":"default","_cnpm_publish_time":1729263435779},"2.5.1":{"name":"yazl","version":"2.5.1","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js","test-cov":"istanbul cover test/test.js","test-travis":"istanbul cover --report lcovonly test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","istanbul":"^0.4.5","yauzl":"~2.3.1"},"gitHead":"36b2a6a31a32637dca19b34e7b3295378e78a644","_id":"yazl@2.5.1","_npmVersion":"5.8.0","_nodeVersion":"8.11.4","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"dist":{"shasum":"a3d65d3dd659a5b0937850e8609f22fffa2b5c35","size":14113,"noattachment":false,"key":"/yazl/-/yazl-2.5.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.5.1.tgz"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yazl_2.5.1_1543628683331_0.5197352298810529"},"_hasShrinkwrap":false,"publish_time":1543628683455,"_cnpm_publish_time":1543628683455},"2.5.0":{"name":"yazl","version":"2.5.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.3.1"},"gitHead":"cfab32fc430c752971fb5c83ee5c60f2f11bc5ad","_id":"yazl@2.5.0","_npmVersion":"5.8.0","_nodeVersion":"8.11.4","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"dist":{"shasum":"1ab8de8cd3c3c252986c7fa2f6562784d7288e49","size":13634,"noattachment":false,"key":"/yazl/-/yazl-2.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.5.0.tgz"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yazl_2.5.0_1542340534726_0.9387935598167603"},"_hasShrinkwrap":false,"publish_time":1542340534950,"_cnpm_publish_time":1542340534950},"2.4.3":{"name":"yazl","version":"2.4.3","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.3.1"},"files":["index.js"],"gitHead":"a088b55fd97f00e36e55cdc9f6e22dafa9535f10","_id":"yazl@2.4.3","_shasum":"ec26e5cc87d5601b9df8432dbdd3cd2e5173a071","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.10.1","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"dist":{"shasum":"ec26e5cc87d5601b9df8432dbdd3cd2e5173a071","size":11804,"noattachment":false,"key":"/yazl/-/yazl-2.4.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.4.3.tgz"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yazl-2.4.3.tgz_1509400410400_0.1986587296705693"},"directories":{},"publish_time":1509400410519,"_hasShrinkwrap":false,"_cnpm_publish_time":1509400410519},"2.4.2":{"name":"yazl","version":"2.4.2","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.3.1"},"files":["index.js"],"gitHead":"e38aac7ff20c3b404df6ff3c5793bfa62ff78a9e","_id":"yazl@2.4.2","_shasum":"14cb19083e1e25a70092c1588aabe0f4e4dd4d88","_from":".","_npmVersion":"3.5.2","_nodeVersion":"4.2.6","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"dist":{"shasum":"14cb19083e1e25a70092c1588aabe0f4e4dd4d88","size":11875,"noattachment":false,"key":"/yazl/-/yazl-2.4.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.4.2.tgz"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/yazl-2.4.2.tgz_1477535989414_0.7153630624525249"},"directories":{},"publish_time":1477535992002,"_cnpm_publish_time":1477535992002,"_hasShrinkwrap":false},"2.4.1":{"name":"yazl","version":"2.4.1","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.3.1"},"files":["index.js"],"gitHead":"8d25332df007a514b0b0d5c94a640984991d93e7","_id":"yazl@2.4.1","_shasum":"2bc98ebdfeccf0c2b47cc36f82214bcb6d54484c","_from":".","_npmVersion":"3.5.2","_nodeVersion":"4.2.6","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"dist":{"shasum":"2bc98ebdfeccf0c2b47cc36f82214bcb6d54484c","size":11723,"noattachment":false,"key":"/yazl/-/yazl-2.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.4.1.tgz"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/yazl-2.4.1.tgz_1467311328186_0.7062251013703644"},"directories":{},"publish_time":1467311331213,"_cnpm_publish_time":1467311331213,"_hasShrinkwrap":false},"2.4.0":{"name":"yazl","version":"2.4.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.3.1"},"files":["index.js"],"gitHead":"ad55990139156fefe494db1c036733e76af75210","_id":"yazl@2.4.0","_shasum":"768e8343c2e06bd1b6e32a56f04ea2d199519069","_from":".","_npmVersion":"3.5.2","_nodeVersion":"4.2.6","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"dist":{"shasum":"768e8343c2e06bd1b6e32a56f04ea2d199519069","size":11654,"noattachment":false,"key":"/yazl/-/yazl-2.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.4.0.tgz"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/yazl-2.4.0.tgz_1466976164387_0.8442777844611555"},"directories":{},"publish_time":1466976164964,"_cnpm_publish_time":1466976164964,"_hasShrinkwrap":false},"2.3.1":{"name":"yazl","version":"2.3.1","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.3.1"},"files":["index.js"],"gitHead":"956f3324c76fed2c4f80b86c131e543c168fa404","_id":"yazl@2.3.1","_shasum":"7866f275271ddac4985d4b69ffaa2f5472514ede","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"dist":{"shasum":"7866f275271ddac4985d4b69ffaa2f5472514ede","size":9620,"noattachment":false,"key":"/yazl/-/yazl-2.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.3.1.tgz"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/yazl-2.3.1.tgz_1462819363036_0.2015884811989963"},"directories":{},"publish_time":1462819365577,"_cnpm_publish_time":1462819365577,"_hasShrinkwrap":false},"2.3.0":{"name":"yazl","version":"2.3.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.3.1"},"gitHead":"6e5e4fb23d41c55128ad676f91f79a12f6e0ac3f","_id":"yazl@2.3.0","_shasum":"63a6f327b00d09ecdca347af4f3d422fcbca3557","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"dist":{"shasum":"63a6f327b00d09ecdca347af4f3d422fcbca3557","size":9512,"noattachment":false,"key":"/yazl/-/yazl-2.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.3.0.tgz"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"directories":{},"publish_time":1450888327244,"_cnpm_publish_time":1450888327244,"_hasShrinkwrap":false},"2.2.2":{"name":"yazl","version":"2.2.2","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"f52717ac79ea54f402a8bfce424a98e05c9d62eb","_id":"yazl@2.2.2","_shasum":"60187f4ce6df314e7501c3c0e40bcf1b58fda183","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"60187f4ce6df314e7501c3c0e40bcf1b58fda183","size":9438,"noattachment":false,"key":"/yazl/-/yazl-2.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.2.2.tgz"},"directories":{},"publish_time":1431024268926,"_cnpm_publish_time":1431024268926,"_hasShrinkwrap":false},"2.2.1":{"name":"yazl","version":"2.2.1","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"28497b7ed7116cd9086811f5190a8dd0a2196e6e","_id":"yazl@2.2.1","_shasum":"e5c1af39c9fc4bb5a74c17bb85b31bde347082c9","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"e5c1af39c9fc4bb5a74c17bb85b31bde347082c9","size":9396,"noattachment":false,"key":"/yazl/-/yazl-2.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.2.1.tgz"},"directories":{},"publish_time":1427451786633,"_cnpm_publish_time":1427451786633,"_hasShrinkwrap":false},"2.2.0":{"name":"yazl","version":"2.2.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"9b7937d65a433a0526a20d04d0edd3d44a1adfa8","_id":"yazl@2.2.0","_shasum":"7bc86628b010225d479503ae2af86d7be5561843","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"7bc86628b010225d479503ae2af86d7be5561843","size":9333,"noattachment":false,"key":"/yazl/-/yazl-2.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.2.0.tgz"},"directories":{},"publish_time":1426983364137,"_cnpm_publish_time":1426983364137,"_hasShrinkwrap":false},"2.1.3":{"name":"yazl","version":"2.1.3","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"a1deb1e9270f7ab1a0ea391aeedd3f4880732f0a","_id":"yazl@2.1.3","_shasum":"23fb8e1845f34723cd3e6d8d500ad2e1292ba434","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"23fb8e1845f34723cd3e6d8d500ad2e1292ba434","size":8933,"noattachment":false,"key":"/yazl/-/yazl-2.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.1.3.tgz"},"directories":{},"publish_time":1426895045872,"_cnpm_publish_time":1426895045872,"_hasShrinkwrap":false},"2.1.2":{"name":"yazl","version":"2.1.2","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"681dadcfc15958bf88c3e83b35f3bb855854d422","_id":"yazl@2.1.2","_shasum":"b7a5bee7ac850262927e3ab97054115dac5de5c5","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"b7a5bee7ac850262927e3ab97054115dac5de5c5","size":8852,"noattachment":false,"key":"/yazl/-/yazl-2.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.1.2.tgz"},"directories":{},"publish_time":1425423149609,"_cnpm_publish_time":1425423149609,"_hasShrinkwrap":false},"2.1.1":{"name":"yazl","version":"2.1.1","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"42a3cfc3d9e7e1e51bc14f34b07a4663a39dc8a4","_id":"yazl@2.1.1","_shasum":"55abc5d90b4c0e73f444adfbb2654fdcf10d5e4a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"55abc5d90b4c0e73f444adfbb2654fdcf10d5e4a","size":8829,"noattachment":false,"key":"/yazl/-/yazl-2.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.1.1.tgz"},"directories":{},"publish_time":1425260198294,"_cnpm_publish_time":1425260198294,"_hasShrinkwrap":false},"2.1.0":{"name":"yazl","version":"2.1.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip","stream","archive","file"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"3008eff15558b26753f3b472608198d7518a2833","_id":"yazl@2.1.0","_shasum":"c24f22a1d5c41084b8f71c7a96471482bb0a05b4","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"c24f22a1d5c41084b8f71c7a96471482bb0a05b4","size":8573,"noattachment":false,"key":"/yazl/-/yazl-2.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.1.0.tgz"},"directories":{},"publish_time":1421443477304,"_cnpm_publish_time":1421443477304,"_hasShrinkwrap":false},"2.0.2":{"name":"yazl","version":"2.0.2","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"3fd6cdd62b040c7f3c43d11ec01994a6db5ad826","_id":"yazl@2.0.2","_shasum":"c6abd5f134054235a144b8704a934817ce96edf3","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"c6abd5f134054235a144b8704a934817ce96edf3","size":8167,"noattachment":false,"key":"/yazl/-/yazl-2.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.0.2.tgz"},"directories":{},"publish_time":1412544084213,"_cnpm_publish_time":1412544084213,"_hasShrinkwrap":false},"2.0.1":{"name":"yazl","version":"2.0.1","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"667bee22e1ec296d26c5526dc15ce42abd642f65","_id":"yazl@2.0.1","_shasum":"4ef22addef707a1d818be66fefcb2cc4495abbce","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"4ef22addef707a1d818be66fefcb2cc4495abbce","size":8087,"noattachment":false,"key":"/yazl/-/yazl-2.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.0.1.tgz"},"directories":{},"publish_time":1411966162238,"_cnpm_publish_time":1411966162238,"_hasShrinkwrap":false},"2.0.0":{"name":"yazl","version":"2.0.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"91c1825e46644615a45e42f4e6e94f9bcf644711","_id":"yazl@2.0.0","_shasum":"dc45da77b10589244a2276443e65c8cba95b4353","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"dc45da77b10589244a2276443e65c8cba95b4353","size":8089,"noattachment":false,"key":"/yazl/-/yazl-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-2.0.0.tgz"},"directories":{},"publish_time":1411546647309,"_cnpm_publish_time":1411546647309,"_hasShrinkwrap":false},"1.1.0":{"name":"yazl","version":"1.1.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"19113d6da579d5378133f2833c8a3c442372e2bc","_id":"yazl@1.1.0","_shasum":"cac2ee65c0f9b1e79c46fc40786bb961b3df0420","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"cac2ee65c0f9b1e79c46fc40786bb961b3df0420","size":7370,"noattachment":false,"key":"/yazl/-/yazl-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-1.1.0.tgz"},"directories":{},"publish_time":1411457749416,"_cnpm_publish_time":1411457749416,"_hasShrinkwrap":false},"1.0.0":{"name":"yazl","version":"1.0.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"d91672cdfc19fbda35f7173d0e07558be1d8a282","_id":"yazl@1.0.0","_shasum":"af9d187f60e1fb18dced34cfe522feb5532355ff","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"af9d187f60e1fb18dced34cfe522feb5532355ff","size":7112,"noattachment":false,"key":"/yazl/-/yazl-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-1.0.0.tgz"},"directories":{},"publish_time":1411318824782,"_cnpm_publish_time":1411318824782,"_hasShrinkwrap":false},"0.1.0":{"name":"yazl","version":"0.1.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"devDependencies":{"bl":"~0.9.3","yauzl":"~2.0.0"},"gitHead":"3491adb785fcc7cb89e288b38466932a141de7eb","_id":"yazl@0.1.0","_shasum":"a310c4f89334540ed2a4fa26b4663aa11c4a0ba8","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"a310c4f89334540ed2a4fa26b4663aa11c4a0ba8","size":7064,"noattachment":false,"key":"/yazl/-/yazl-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-0.1.0.tgz"},"directories":{},"publish_time":1411230455727,"_cnpm_publish_time":1411230455727,"_hasShrinkwrap":false},"0.0.0":{"name":"yazl","version":"0.0.0","description":"yet another zip library for node","main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"https://github.com/thejoshwolfe/yazl.git"},"keywords":["zip"],"author":{"name":"Josh Wolfe","email":"thejoshwolfe@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"homepage":"https://github.com/thejoshwolfe/yazl","dependencies":{"buffer-crc32":"~0.2.3"},"gitHead":"75512194a6c2ed0d5d7eb2e71f49ddf87bcbdbbb","_id":"yazl@0.0.0","_shasum":"d59733fb692792c635a6812245352f6542c5f9d7","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"},"maintainers":[{"name":"thejoshwolfe","email":"thejoshwolfe@gmail.com"}],"dist":{"shasum":"d59733fb692792c635a6812245352f6542c5f9d7","size":6134,"noattachment":false,"key":"/yazl/-/yazl-0.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/yazl/download/yazl-0.0.0.tgz"},"directories":{},"publish_time":1410742933815,"_cnpm_publish_time":1410742933815,"_hasShrinkwrap":false}},"readme":"# yazl\n\nyet another zip library for node. For unzipping, see\n[yauzl](https://github.com/thejoshwolfe/yauzl).\n\nDesign principles:\n\n * Don't block the JavaScript thread.\n   Use and provide async APIs.\n * Keep memory usage under control.\n   Don't attempt to buffer entire files in RAM at once.\n * Prefer to open input files one at a time than all at once.\n   This is slightly suboptimal for time performance,\n   but avoids OS-imposed limits on the number of simultaneously open file handles.\n\n## Usage\n\n```js\nvar yazl = require(\"yazl\");\n\nvar zipfile = new yazl.ZipFile();\nzipfile.addFile(\"file1.txt\", \"file1.txt\");\n// (add only files, not directories)\nzipfile.addFile(\"path/to/file.txt\", \"path/in/zipfile.txt\");\n// pipe() can be called any time after the constructor\nzipfile.outputStream.pipe(fs.createWriteStream(\"output.zip\")).on(\"close\", function() {\n  console.log(\"done\");\n});\n// alternate apis for adding files:\nzipfile.addBuffer(Buffer.from(\"hello\"), \"hello.txt\");\nzipfile.addReadStreamLazy(\"stdin.txt\", cb => cb(null, process.stdin));\n// call end() after all the files have been added\nzipfile.end();\n```\n\n## API\n\n### Class: ZipFile\n\n#### new ZipFile()\n\nNo parameters.\nNothing can go wrong.\n\n#### addFile(realPath, metadataPath, [options])\n\nAdds a file from the file system at `realPath` into the zipfile as `metadataPath`.\nTypically `metadataPath` would be calculated as `path.relative(root, realPath)`.\nUnzip programs would extract the file from the zipfile as `metadataPath`.\n`realPath` is not stored in the zipfile.\n\nA valid `metadataPath` must not be blank.\nIf a `metadataPath` contains `\"\\\\\"` characters, they will be replaced by `\"/\"` characters.\nAfter this substitution, a valid `metadataPath` must not start with `\"/\"` or `/[A-Za-z]:\\//`,\nand must not contain `\"..\"` path segments.\nFile paths must not end with `\"/\"`, but see `addEmptyDirectory()`.\nAfter UTF-8 encoding, `metadataPath` must be at most `0xffff` bytes in length.\n\n`options` may be omitted or null and has the following structure and default values:\n\n```js\n{\n  mtime: stats.mtime,\n  mode: stats.mode,\n  compress: true,\n  compressionLevel: 6,\n  forceZip64Format: false,\n  forceDosTimestamp: false,\n  fileComment: \"\", // or a UTF-8 Buffer\n}\n```\n\nUse `mtime` and/or `mode` to override the values\nthat would normally be obtained by the `fs.Stats` for the `realPath`.\nThe mode is the unix permission bits and file type.\nThe mtime and mode are stored in the zip file in the fields \"last mod file time\",\n\"last mod file date\", and \"external file attributes\".\nyazl does not store group and user ids in the zip file.\n\nIf `compress` is `true`, the file data will be deflated (compression method 8).\nIf `compress` is `false`, the file data will be stored (compression method 0).\nIf `compressionLevel` is specified, it will be passed to [`zlib`](https://nodejs.org/api/zlib.html#class-options).\nSpecifying `compressionLevel: 0` is equivalent to `compress: false`.\nIf both `compress` and `compressionLevel` are given, asserts that they do not conflict, i.e. `!!compress === !!compressionLevel`.\n\nIf `forceZip64Format` is `true`, yazl will use ZIP64 format in this entry's Data Descriptor\nand Central Directory Record even if not needed (this may be useful for testing.).\nOtherwise, yazl will use ZIP64 format where necessary.\n\nSince yazl version 3.3.0, yazl includes the Info-ZIP \"universal timestamp\" extended field (`0x5455` aka `\"UT\"`) to encode the `mtime`.\nThe Info-ZIP timestamp is a more modern encoding for the mtime and is generally recommended.\nSet `forceDosTimestamp` to `true` to revert to the pre-3.3.0 behvior, disabling this extended field.\nThe DOS encoding is always included regardless of this option, because it is required in the fixed-size metadata of every archive entry.\nThe benefits of the Info-ZIP encoding include: timezone is specified as always UTC, which is better for cloud environments and any teams working in multiple timezones; capable of encoding \"time 0\", the unix epoch in 1970, which is better for some package managers; the precision is 1-second accurate rather than rounded to the nearest even second. The disadvantages of including this field are: it requires an extra 9 bytes of metadata per entry added to the archive.\n\nWhen attempting to encode an `mtime` outside the supported range for either format, such as the year 1970 in the DOS format or the year 2039 for the modern format, the time will clamped to the closest supported time.\n\nIf `fileComment` is a `string`, it will be encoded with UTF-8.\nIf `fileComment` is a `Buffer`, it should be a UTF-8 encoded string.\nIn UTF-8, `fileComment` must be at most `0xffff` bytes in length.\nThis becomes the \"file comment\" field in this entry's central directory file header.\n\nInternally, `fs.stat()` is called immediately in the `addFile` function,\nand `fs.createReadStream()` is used later when the file data is actually required.\nThroughout adding and encoding `n` files with `addFile()`,\nthe number of simultaneous open files is `O(1)`, probably just 1 at a time.\n\n#### addReadStream(readStream, metadataPath, [options])\n\nAdds a file to the zip file whose content is read from `readStream`.\nThis method is effectively implemented as `this.addReadStreamLazy(metadataPath, options, cb => cb(null, readStream))`.\n\nIn general, it is recommended to use `addReadStreamLazy` instead of this method\nto avoid holding a large number of system resources open for a long time.\nThis method is provided for backward compatibility,\nand for convenience in cases where the `readStream` doesn't require meaningful resources to hold open and waiting.\n\n#### addReadStreamLazy(metadataPath[, options], getReadStreamFunction)\n\nAdds a file to the zip file whose content is read from a read stream obtained by calling `getReadStreamFunction(cb)`.\n`getReadStreamFunction(cb)` is called with a single callback function.\nYour implementation of `getReadStreamFunction` should eventually call `cb(err, readStream)`\nand give the `readStream` that provides the contents of the file to add to the zip file.\nIf `err` is given (if it is truthy), it will be emitted from this `ZipFile` object.\nThe return value from `cb` is unspecified.\n\nSee `addFile()` for the meaning of the `metadataPath` parameter.\n`typeof getReadStreamFunction` must be `'function'`, which is used to determine when `options` has been omitted.\n`options` may be omitted or null and has the following structure and default values:\n\n```js\n{\n  mtime: new Date(),\n  mode: 0o100664,\n  compress: true,\n  compressionLevel: 6,\n  forceZip64Format: false,\n  forceDosTimestamp: false,\n  fileComment: \"\", // or a UTF-8 Buffer\n  size: 12345, // example value\n}\n```\n\nSee `addFile()` for the meaning of `mtime`, `mode`, `compress`, `compressionLevel`, `forceZip64Format`, `forceDosTimestamp`, and `fileComment`.\nIf `size` is given, it will be checked against the actual number of bytes in the `readStream`,\nand an error will be emitted if there is a mismatch.\nSee the documentation on `calculatedTotalSizeCallback` for why the `size` option exists.\n\nNote that yazl will `.pipe()` data from `readStream`, so be careful using `.on('data')`.\nIn certain versions of node, `.on('data')` makes `.pipe()` behave incorrectly.\n\nHere's an example call to this method to illustrate the function callbacks:\n\n```js\nzipfile.addReadStreamLazy(\"path/in/archive.txt\", function(cb) {\n  var readStream = getTheReadStreamSomehow();\n  cb(readStream);\n});\n```\n\n#### addBuffer(buffer, metadataPath, [options])\n\nAdds a file to the zip file whose content is `buffer`.\nSee below for info on the limitations on the size of `buffer`.\nSee `addFile()` for info about the `metadataPath` parameter.\n`options` may be omitted or null and has the following structure and default values:\n\n```js\n{\n  mtime: new Date(),\n  mode: 0o100664,\n  compress: true,\n  compressionLevel: 6,\n  forceZip64Format: false,\n  forceDosTimestamp: false,\n  fileComment: \"\", // or a UTF-8 Buffer\n}\n```\n\nSee `addFile()` for the meaning of `mtime`, `mode`, `compress`, `compressionLevel`, `forceZip64Format`, `forceDosTimestamp`, and `fileComment`.\n\nThis method has the unique property that General Purpose Bit `3` will not be used in the Local File Header.\nThis doesn't matter for unzip implementations that conform to the Zip File Spec.\nHowever, 7-Zip 9.20 has a known bug where General Purpose Bit `3` is declared an unsupported compression method\n(note that it really has nothing to do with the compression method.).\nSee [issue #11](https://github.com/thejoshwolfe/yazl/issues/11).\nIf you would like to create zip files that 7-Zip 9.20 can understand,\nyou must use `addBuffer()` instead of `addFile()`, `addReadStream()`, or `addReadStreamLazy()` for all entries in the zip file\n(and `addEmptyDirectory()` is fine too).\n\nNote that even when yazl provides the file sizes in the Local File Header,\nyazl never uses ZIP64 format for Local File Headers due to the size limit on `buffer` (see below).\n\n##### Size limitation on buffer\n\nIn order to require the ZIP64 format for a local file header,\nthe provided `buffer` parameter would need to exceed `0xfffffffe` in length.\nAlternatively, the `buffer` parameter might not exceed `0xfffffffe` in length,\nbut zlib compression fails to compress the buffer and actually inflates the data to more than `0xfffffffe` in length.\nBoth of these scenarios are not allowed by yazl, and those are enforced by a size limit on the `buffer` parameter.\n\nAccording to [this zlib documentation](http://www.zlib.net/zlib_tech.html),\nthe worst case compression results in \"an expansion of at most 13.5%, plus eleven bytes\".\nFurthermore, some configurations of Node.js impose a size limit of `0x3fffffff` on every `Buffer` object.\nRunning this size through the worst case compression of zlib still produces a size less than `0xfffffffe` bytes,\n\nTherefore, yazl enforces that the provided `buffer` parameter must be at most `0x3fffffff` bytes long.\n\n#### addEmptyDirectory(metadataPath, [options])\n\nAdds an entry to the zip file that indicates a directory should be created,\neven if no other items in the zip file are contained in the directory.\nThis method is only required if the zip file is intended to contain an empty directory.\n\nSee `addFile()` for info about the `metadataPath` parameter.\nIf `metadataPath` does not end with a `\"/\"`, a `\"/\"` will be appended.\n\n`options` may be omitted or null and has the following structure and default values:\n\n```js\n{\n  mtime: new Date(),\n  mode: 040775,\n  forceDosTimestamp: false,\n}\n```\n\nSee `addFile()` for the meaning of `mtime`, `mode`, and `forceDosTimestamp`.\n\n#### end([options], [calculatedTotalSizeCallback])\n\nIndicates that no more files will be added via `addFile()`, `addReadStream()`, `addReadStreamLazy()`, `addBuffer()`, or `addEmptyDirectory()`,\nand causes the eventual close of `outputStream`.\n\n`options` may be omitted or null and has the following structure and default values:\n\n```js\n{\n  forceZip64Format: false,\n  comment: \"\", // or a CP437 Buffer\n}\n```\n\nIf `forceZip64Format` is `true`, yazl will include the ZIP64 End of Central Directory Locator\nand ZIP64 End of Central Directory Record even if not needed (this may be useful for testing.).\nOtherwise, yazl will include these structures if necessary.\n\nIf `comment` is a `string`, it will be encoded with CP437.\nIf `comment` is a `Buffer`, it should be a CP437 encoded string.\n`comment` must be at most `0xffff` bytes in length and must not include the byte sequence `[0x50,0x4b,0x05,0x06]`.\nThis becomes the \".ZIP file comment\" field in the end of central directory record.\nNote that in practice, most zipfile readers interpret this field in UTF-8 instead of CP437.\nIf your string uses only codepoints in the range `0x20...0x7e`\n(printable ASCII, no whitespace except for single space `' '`),\nthen UTF-8 and CP437 (and ASCII) encodings are all identical.\nThis restriction is recommended for maxium compatibility.\nTo use UTF-8 encoding at your own risk, pass a `Buffer` into this function; it will not be validated.\n\nIf specified and non-null, `calculatedTotalSizeCallback` is given the parameters `(calculatedTotalSize)`\nsometime during or after the call to `end()`.\n`calculatedTotalSize` is of type `Number` and can either be `-1`\nor the guaranteed eventual size in bytes of the output data that can be read from `outputStream`.\n\nNote that `calculatedTotalSizeCallback` is usually called well before `outputStream` has piped all its data;\nthis callback does not mean that the stream is done.\n\n(The `calculatedTotalSizeCallback` feature was added to this library to support the use case of a web server constructing a zip file dynamically\nand serving it without buffering the contents on disk or in ram.\n`calculatedTotalSize` can become the `Content-Length` header before piping the `outputStream` as the response body.)\n\nIf `calculatedTotalSize` is `-1`, it means means the total size is too hard to guess before processing the input file data.\nTo ensure the final size is known, disable compression (set `compress: false` or `compressionLevel: 0`)\nin every call to `addFile()`, `addReadStream()`, `addReadStreamLazy()`, and `addBuffer()`,\nand additionally specify the optional `size` option in every call to `addReadStream()` and `addReadStreamLazy()`.\n\nThe call to `calculatedTotalSizeCallback` might be delayed if yazl is still waiting for `fs.Stats` for an `addFile()` entry.\nIf `addFile()` was never called, `calculatedTotalSizeCallback` will be called during the call to `end()`.\nIt is not required to start piping data from `outputStream` before `calculatedTotalSizeCallback` is called.\n`calculatedTotalSizeCallback` will be called only once, and only if this is the first call to `end()`.\n\n#### outputStream\n\nA readable stream that will produce the contents of the zip file.\nIt is typical to pipe this stream to a writable stream created from `fs.createWriteStream()`.\n\nInternally, large amounts of file data are piped to `outputStream` using `pipe()`,\nwhich means throttling happens appropriately when this stream is piped to a slow destination.\n\nData becomes available in this stream soon after calling one of `addFile()`, `addReadStream()`, `addReadStreamLazy()`, `addBuffer()`, or `addEmptyDirectory()`.\nClients can call `pipe()` on this stream at any time,\nsuch as immediately after getting a new `ZipFile` instance, or long after calling `end()`.\n\nThis stream will remain open while you add entries until you `end()` the zip file.\n\nAs a reminder, be careful using both `.on('data')` and `.pipe()` with this stream.\nIn certain versions of node, you cannot use both `.on('data')` and `.pipe()` successfully.\n\n### dateToDosDateTime(jsDate)\n\n*Deprecated* since yazl 3.3.0.\n\nThis function only remains exported in order to maintain compatibility with older versions of yazl.\nIt will be removed in yazl 4.0.0 unless someone asks for it to remain supported.\nIf you ever have a use case for calling this function directly please\n[open an issue against yazl](https://github.com/thejoshwolfe/yazl/issues/new)\nrequesting that this function be properly supported again.\n\n## Regarding ZIP64 Support\n\nyazl automatically uses ZIP64 format to support files and archives over `2^32 - 2` bytes (~4GB) in size\nand to support archives with more than `2^16 - 2` (65534) files.\n(See the `forceZip64Format` option in the API above for more control over this behavior.)\nZIP64 format is necessary to exceed the limits inherent in the original zip file format.\n\nZIP64 format is supported by most popular zipfile readers, but not by all of them.\nNotably, the Mac Archive Utility does not understand ZIP64 format (as of writing this),\nand will behave very strangely when presented with such an archive.\n\n## Output Structure\n\nThe Zip File Spec leaves a lot of flexibility up to the zip file creator.\nThis section explains and justifies yazl's interpretation and decisions regarding this flexibility.\n\nThis section is probably not useful to yazl clients,\nbut may be interesting to unzip implementors and zip file enthusiasts.\n\n### Disk Numbers\n\nAll values related to disk numbers are `0`,\nbecause yazl has no multi-disk archive support.\n(The exception being the Total Number of Disks field in\nthe ZIP64 End of Central Directory Locator, which is always `1`.)\n\n### Version Made By\n\nAlways `0x033f == (3 << 8) | 63`, which means UNIX (3)\nand made from the spec version 6.3 (63).\n\nNote that the \"UNIX\" has implications in the External File Attributes.\n\n### Version Needed to Extract\n\nUsually `20`, meaning 2.0. This allows filenames and file comments to be UTF-8 encoded.\n\nWhen ZIP64 format is used, some of the Version Needed to Extract values will be `45`, meaning 4.5.\nWhen this happens, there may be a mix of `20` and `45` values throughout the zipfile.\n\n### General Purpose Bit Flag\n\nBit `11` is always set.\nFilenames (and file comments) are always encoded in UTF-8, even if the result is indistinguishable from ascii.\n\nBit `3` is usually set in the Local File Header.\nTo support both a streaming input and streaming output api,\nit is impossible to know the crc32 before processing the file data.\nWhen bit `3` is set, data Descriptors are given after each file data with this information, as per the spec.\nBut remember a complete metadata listing is still always available in the central directory record,\nso if unzip implementations are relying on that, like they should,\nnone of this paragraph will matter.\nEven so, some popular unzip implementations do not follow the spec.\nThe Mac Archive Utility requires Data Descriptors to include the optional signature,\nso yazl includes the optional data descriptor signature.\nWhen bit `3` is not used, the Mac Archive Utility requires there to be no data descriptor, so yazl skips it in that case.\nAdditionally, 7-Zip 9.20 does not seem to support bit `3` at all\n(see [issue #11](https://github.com/thejoshwolfe/yazl/issues/11)).\n\nAll other bits are unset.\n\n### Internal File Attributes\n\nAlways `0`.\nThe \"apparently an ASCII or text file\" bit is always unset meaning \"apparently binary\".\nThis kind of determination is outside the scope of yazl,\nand is probably not significant in any modern unzip implementation.\n\n### External File Attributes\n\nAlways `stats.mode << 16`.\nThis is apparently the convention for \"version made by\" = `0x03xx` (UNIX).\n\nNote that for directory entries (see `addEmptyDirectory()`),\nit is conventional to use the lower 8 bits for the MS-DOS directory attribute byte.\nHowever, the spec says this is only required if the Version Made By is DOS,\nso this library does not do that.\n\n### Directory Entries\n\nWhen adding a `metadataPath` such as `\"parent/file.txt\"`, yazl does not add a directory entry for `\"parent/\"`,\nbecause file entries imply the need for their parent directories.\nUnzip clients seem to respect this style of pathing,\nand the zip file spec does not specify what is standard in this regard.\n\nIn order to create empty directories, use `addEmptyDirectory()`.\n\n### Size of Local File and Central Directory Entry Metadata\n\nThe spec recommends that \"The combined length of any directory record and [the file name,\nextra field, and comment fields] should not generally exceed 65,535 bytes\".\nyazl makes no attempt to respect this recommendation.\nInstead, each of the fields is limited to 65,535 bytes due to the length of each being encoded as an unsigned 16 bit integer.\n\n## Change History\n\n* 3.3.1 (2024-Nov-23)\n    * Fix bug in `addReadStreamLazy()` timing that could result in the given `getReadStreamFunction` being called too soon or being called more than once. [issue #87](https://github.com/thejoshwolfe/yazl/issues/87)\n* 3.3.0 (2024-Nov-08)\n    * Add support for encoding timestamps in the more modern Info-ZIP \"universal timestamp\" extended field (`0x5455` aka `\"UT\"`): supports years as old as 1901 instead of only 1980, notably including 1970; encodes timestamp in UTC rather than an unspecified system-dependent local timezone. [pull #86](https://github.com/thejoshwolfe/yazl/pull/86)\n    * Disable spending the extra 9 bytes of metadata per entry with `forceDosTimestamp:true`.\n    * Out-of-bounds timestamps are now clamped rather than overflowing/underflowing and wrapping around.\n    * Marked `dateToDosDateTime()` as deprecated.\n* 3.2.1 (2024-Nov-03)\n    * Fix typo in `addBuffer()` where `compressionLevel` wasn't being passed to zlib.\n* 3.2.0 (2024-Nov-02)\n    * Add `compressionLevel` option to `addFile()`, `addBuffer()`, `addReadStream()`, `addReadStreamLazy()`. [issue #84](https://github.com/thejoshwolfe/yazl/issues/84)\n    * Change wording around `calculatedTotalSizeCallback` again, and fix the documentation incorrectly claiming that `addEmptyDirectory()` was relevant in that context.\n* 3.1.0 (2024-Oct-19)\n    * Add `addReadStreamLazy()` as a replacement for `addReadStream()`. The latter is maintained for compatibility and situational convenience. [issue #74](https://github.com/thejoshwolfe/yazl/issues/74) [pull #80](https://github.com/thejoshwolfe/yazl/pull/80)\n    * The `add*()` methods will now throw an error if you call them after calling `end()`. The documented semantics have always regarded this as undefined behavior.\n    * Some subtle and undocumented changes to error handling. Error handling isn't very well tested.\n* 3.0.1 (2024-Oct-19)\n    * Change the documented name of `finalSizeCallback` to `calculatedTotalSizeCallback` to hopefully avoid confusion. [issue #71](https://github.com/thejoshwolfe/yazl/issues/71)\n* 3.0.0 (2024-Oct-18)\n    * Upgrade dependencies. This indirectly drops support for older versions of node.\n* 2.5.1 (2018-Nov-30)\n    * Fix support for old versions of Node and add official support for Node versions 0.10, 4, 6, 8, 10. [pull #49](https://github.com/thejoshwolfe/yazl/pull/49)\n* 2.5.0 (2018-Nov-15)\n    * Add support for `comment` and `fileComment`. [pull #44](https://github.com/thejoshwolfe/yazl/pull/44)\n    * Avoid `new Buffer()`. [pull #43](https://github.com/thejoshwolfe/yazl/pull/43)\n* 2.4.3 (2017-Oct-30)\n    * Clarify readme. [pull #33](https://github.com/thejoshwolfe/yazl/pull/33)\n* 2.4.2 (2016-Oct-26)\n    * Remove octal literals to make yazl compatible with strict mode. [pull #28](https://github.com/thejoshwolfe/yazl/pull/28)\n* 2.4.1 (2016-Jun-30)\n    * Fix Mac Archive Utility compatibility issue. [issue #24](https://github.com/thejoshwolfe/yazl/issues/24)\n* 2.4.0 (2016-Jun-26)\n    * Add ZIP64 support. [issue #6](https://github.com/thejoshwolfe/yazl/issues/6)\n* 2.3.1 (2016-May-09)\n    * Remove `.npmignore` from npm package. [pull #22](https://github.com/thejoshwolfe/yazl/pull/22)\n* 2.3.0 (2015-Dec-23)\n    * `metadataPath` can have `\\` characters now; they will be replaced with `/`. [issue #18](https://github.com/thejoshwolfe/yazl/issues/18)\n* 2.2.2 (2015-May-07)\n    * Fix 7-Zip compatibility issue. [pull request #17](https://github.com/thejoshwolfe/yazl/pull/17)\n* 2.2.1 (2015-Mar-27)\n    * Fix Mac Archive Utility compatibility issue. [issue #14](https://github.com/thejoshwolfe/yazl/issues/14)\n* 2.2.0 (2015-Mar-21)\n    * Avoid using general purpose bit 3 for `addBuffer()` calls. [issue #13](https://github.com/thejoshwolfe/yazl/issues/13)\n* 2.1.3 (2015-Mar-20)\n    * Fix bug when only addBuffer() and end() are called. [issue #12](https://github.com/thejoshwolfe/yazl/issues/12)\n* 2.1.2 (2015-Mar-03)\n    * Fixed typo in parameter validation. [pull request #10](https://github.com/thejoshwolfe/yazl/pull/10)\n* 2.1.1 (2015-Mar-01)\n    * Fixed stack overflow when using addBuffer() in certain ways. [issue #9](https://github.com/thejoshwolfe/yazl/issues/9)\n* 2.1.0 (2015-Jan-16)\n    * Added `addEmptyDirectory()`.\n    * `options` is now optional for `addReadStream()` and `addBuffer()`.\n* 2.0.0 (2014-Sep-24)\n    * Initial release.\n","_attachments":{},"homepage":"https://github.com/thejoshwolfe/yazl","bugs":{"url":"https://github.com/thejoshwolfe/yazl/issues"},"license":"MIT"}