- Added support for symlinks
- Removed callback support in
configureandinitialize - Added support for
Backendinconfigure - Greatly simplified
FileSystem- Removed methods from Internal API:
access,open,truncate,readFile,writeFile,appendFile,chmod,chown,utimes,symlink,readlink, 'realpath' - Combined
BaseFileSystemintoFileSystem(removed default ENOTSUP implementations and marked them as abstract) - Changed from an
interfaceto anabstract class - Renamed
FileSystem.whenReadytoFileSystem.ready - Added
AsyncFileSystem(adds default ENOTSUP implementations for synch methods) - Removed
metadata.supportsLinks
- Removed methods from Internal API:
- Changes to
SyncStoreandAsyncStoreand their FSes- Added support for hard links
- Updated
SimpleSyncRWTransactionto useMapandSetinstead of normal objects and arrays - Removed "KeyValue" from Sync* and Async* names
- Renamed
deltoremoveon transaction classes
- Reworked backends
- Renamed
BackendContructortoBackend - Separated backends from FS classes
- Changed to using
createBackend(backend)instead of bindingcreateBackendto the backend - Added
isBackendandisBackendConfig - Renamed
getFileSystemtoresolveBackendConfig - Removed callback support
createBackend
- Renamed
- Changes to the emulation layer
- Fixed the options for many functions
- Added
FileHandle - Fixed
fs.promisesfunctions that use aFileHandleinstead of numeric descriptor - Removed some
fs.promisesfunctions that do not exist on the Node API - Added type checks with the Node API using
satisfieson each method instead of a single intersection type assignment - Added
writeFileSyncdata check
- Reworked
LRUCache - Fully and correctly implemented
encodeanddecode - Improved
File- Changed from an
interfaceto anabstract class - Combined
BaseFileintoFile(removed default ENOTSUP implementations and marked them as abstract) - Added
File.path - Changed
File.get*methods to getters - Fixed
File.readSync's behavior when reading past the end of the file
- Changed from an
- Added setters to
Stats.*time - Improved
Inode- Changed the data members to be accessors that modify the underlying buffer directly
- Removed
serializeandDeserialize - Changed
Inode.updateto acceptReadonly<Stats> - Added
datagetter which returns the buffer - Changed
Inodeto named instead of default export
- Changes to
ApiError- Renamed
ApiError.FileErrortoApiError.OnPath - Removed
ApiError.DeserializeandApiError.serialize
- Renamed
- Tests
- Restructured tests directory
- Changed tests to not use multiple backends since they would not work at all with the multi-backend setup.
- Fixed many of the tests
- Added tests for encoding