Releases: zen-fs/core
Releases · zen-fs/core
2.4.4
- Fixed incorrect path resolution when inside a context with a non-root PWD (#263)
- Fixed
bindContextcopying from the created child context instead of assigning to it - Fixed
resolveMountnot resolving paths using the context's PWD normalizePathnow passes throughthistopath.resolve- Anti-regression tests now have the issue number in the test name instead of as a comment
- Contexts are now more secure at runtime, with
readonlymembers being made non-writable and non-configurable - Added internal
contextOfandcreateChildContext V_Contextis nowunknownfor better compatibility with Node.jsbindContextnow checks if the specified root is a directory and exists- Fixed incorrect example for
bindContextin documentation
2.4.3
2.4.2
- Changed path resolution to be more efficient and faster by internal functions (
resolveMount/resolve) instead ofrealpathfrom the Node.js compatibility layer - Fixed incorrect behavior in read when passing
0forposition - Fixed passthrough needing
__promisify__/native - Fixed incorrect
Dirent.parentPathreturned byreaddir - The VFS now compares file systems based on their UUID instead of the object identity
- For example if you create two instances of the same
SingleBufferbackend, the VFS treats them as equal and you won't getEXDEV
- For example if you create two instances of the same
- The Node.js compatibility code and the VFS code have been organized into two different source directories:
nodeandvfs. This is more readable and maintainable. - VFS <-> Backend error handling is now handled in one place (
withExceptionContext) and returned byresolveMountfor convience- For contributors: this means calling
FileSystemmethods likefs.touch(...)will automatically do all the path conversion. You no longer need to wrap these calls withwrapor atry/catch
- For contributors: this means calling
- Added missing contexts.ts export to internal/index.js
- Added a proper
NodeFStype for thenode:fsAPI without node-specific bits like__promisiy__ - Added VFS
Direntclass - Added exports from readline, constants
- Renamed
AsyncHandletoHandleand merged it with sync handle/methods [internal] - Deprecated
Inode.toStats()[internal]
Testing
- Added
-d/--debugflag to zenfs-test (dumps commands) - Added
--profiletozenfs-test - Added test for different working directory with context (#263, marked as todo to not cause failures)
- Fixed directory test
- Changed tests to import from
@zenfs/coreinstead of../dist,../../dist, etc.
Documentation
- Added dedicated documentation page for devices
- Fixed
fsfunctions not being listed under thefsnamespace in documentation - Fixed some outdated documentation
- Updated Memium since beforehand it broke Typedoc
- Switched to Typedoc's built-in
excludeReferencesinstead of a plugin - Updated readme: fixed typos and added backends from other
@zenfspackages - Added a note to contributing guidelines for issue vs discussion
- Removed Dirent-specific tests (i.e. ones that used
new Dirent()
Development
- Issues now use GitHub Issue forms, which should help maintainers (me) triage faster
- npm scripts are now type checked
- Changed to using the built-in
styleTextfor npm scripts - Updated license identifier in index.ts so it is included by bundlers
- Moved license guide to copying
- Improved the .gitignore file
2.4.1
2.4.0
- Added support for Node v24.7.0
- Added
autoCloseoption toFileHandle.readableWebStream - Made
Dirdisposers idempotent - Added
fs.mkdtempDisposableSyncandfs.promises.mkdtempDisposable
- Added
- Added "default" directories along with
Configuration.defaultDirectories.
When set,configurewill automatically create common directories from the Linux Filesystem Hierarchy.
This includes/tmp,/var, and/etc - Re-licensed under the LGPL. Most projects will not need to do anything, though any forks and patches (not dependents) of ZenFS must also use the LGPL in order to update. This does not extend to the rest of your code. Just like with the MIT license, distributing ZenFS requires inclusion of the license.
- Fixed incorrect iterator return result type for
fs.watch - Updated dependencies
2.3.11
- Fixed
IndexFS.renameandIndexFS.renameSyncnot behaving correctly.- Items are now correctly removed bottom up and re-created top down
- Fixed
mkdirin derived file systems not being compatible withAsync(IndexFS)- Added internal
IndexFS._mkdirand_mkdirSync, which are called byIndexFSwhen creating new directories and renaming existing ones
- Added internal
- Added
timeoutargument to_MutexedFS.lock() --test-force-exitis no longer used when testing, which means more bugs should be caught
2.3.10
- Added
syncconvenience function, which calls all currently mounted filesystems'syncmethod - Added
syncmethod toAsyncMixin - Fixed cache de-sync in
Async()by always running the sync operation first - Fixed race conditions in
Async()by changing_asyncto accept a thunk- Note you will need to
sync()after a synchronous write before you can reliably do a synchronous read
- Note you will need to
- Fixed RPC handlers for web workers not being attached due to identity discontinuity
- Fixed
checkOptionsnot working with regular functions - Fixed
IndexFS.rmdirusingreaddirSyncto check if empty - Fixed
configureSinglenot working with file system instances - Fixed
PortFS.syncnot callingsuper.sync() - Du-duplicated call loop detection in
Async()._patchAsync - Un-deprecated
AsyncMixin.ready - Increased RPC message ID length by 5 to reduce collision chance
- Unhandled rejections in tests are now logged
- Some async methods are no longer patched by
Async():read,readdir,stat,exists - Changed
EIO/RPC FailedtoETIMEDOUT/RPC request timed out, which is more descriptive sync()is now run before eachPorttest and in between specific read/writes