Protected
Optional
Internal
_disableWhether the sync cache should be disabled. Only affects async things.
Protected
_timeProtected
dataProtected
directoriesReadonly
eocdProtected
filesReadonly
nameAbstract
openAbstract
readdirAbstract
statProtected
Static
computeEOCDLocates the end of central directory record at the end of the file. Throws an exception if it cannot be found.
Unfortunately, the comment is variable size and up to 64K in size. We assume that the magic signature does not appear in the comment, and in the bytes between the comment and the signature. Other ZIP implementations make this same assumption, since the alternative is to read thread every entry in the file.
Offsets in this function are negative (i.e. from the end of the file).
There is no byte alignment on the comment
Zip file-backed filesystem Implemented according to the standard: http://pkware.com/documents/casestudies/APPNOTE.TXT
While there are a few zip libraries for JavaScript (e.g. JSZip and zip.js), they are not a good match for ZenFS. In particular, these libraries perform a lot of unneeded data copying, and eagerly decompress every file in the zip file upon loading to check the CRC32. They also eagerly decode strings. Furthermore, these libraries duplicate functionality already present in ZenFS (e.g. UTF-8 decoding and binary data manipulation).
When the filesystem is instantiated, we determine the directory structure of the zip file as quickly as possible. We lazily decompress and check the CRC32 of files. We do not cache decompressed files; if this is a desired feature, it is best implemented as a generic file system wrapper that can cache data from arbitrary file systems.
Current limitations: