Innmind\Filesystem\Recover
- Requires PHP
8.4 - Links are not silently ignored when listing files/directories. An error is still returned when trying to remove a link.
Innmind\Filesystem\Adapter\Filesystem::mount()now returns anInnmind\Immutable\AttemptInnmind\Filesystem\Directory::removed()is now flagged as internalInnmind\Filesystem\Adapteris now a final classInnmind\Filesystem\Adapter\Filesystemis now flagged as internalInnmind\Filesystem\Adapter\InMemoryis now flagged as internalInnmind\Filesystem\Adapter\Loggeris now flagged as internalInnmind\Filesystem\Adapter::mount()no longer automatically create the directory if it doesn't exist
Innmind\Filesystem\Adapter\InMemory::new()Innmind\Filesystem\Adapter\Filesystem::withCaseSensitivity(), case sensitivity can be specified as the second argument of::mount()Innmind\Filesystem\Exception\*Innmind\Filesystem\File\Content::atPath(), useContent::io()instead
Innmind\Filesystem\File\Content::io()now accepts an instance ofInnmind\IO\Files\Read
Innmind\Filesystem\File::mapContent()Innmind\Filesystem\Directory::named()now accepts aSequenceof files/directories as second argument
- Require
innmind/io3 Innmind\Filesystem\File\Content::size()now returnsInnmind\Immutable\Maybe<Innmind\IO\Stream\Size>- Require
innmind/black-box6 Innmind\Filesystem\Adapter::remove()now returnsInnmind\Immutable\Attempt<Innmind\Immutable\SideEffect>Innmind\Filesystem\Adapter::add()now returnsInnmind\Immutable\Attempt<Innmind\Immutable\SideEffect>
Innmind\Filesystem\Adapter\InMemory::new(), until removal this is a shortcut to::emulateFilesystem()
Innmind\Filesystem\Exception\FailedToLoadFileInnmind\Filesystem\Exception\FailedToWriteFile
- Support for
innmind/black-box6
Innmind\Filesystem\File\Content::ofChunks()->size()no longer load more than one chunk size in memory
- Special ASCII characters are no longer used in genarated names via
Fixtures\Innmind\Filesystem\Name::any() - Emoticon characters are now used in genarated names via
Fixtures\Innmind\Filesystem\Name::any()
- Support for
symfony/filesystem:~7.0
- Watch the streams before reading from them (allows for an easy integration in
Fibers)
Properties\Innmind\Filesystem\Adapter\AddDirectory::directory()Properties\Innmind\Filesystem\Adapter\RemoveAddRemoveModificationsDoesntAddTheFile::directory()
Innmind\Filesystem\File\Content::io()
Innmind\Filesystem\File\Content::chunks()
Innmind\Filesystem\Nameconstructor is now private, use::of()named constructor insteadInnmind\Filesystem\File\Fileconstructor is now private, use::of()named constructor insteadInnmind\Filesystem\File\Contentis now a final class and its different implementations are declared internal, use theContentnamed constructors insteadInnmind\Filesystem\Directoryno longer extendsFile, all previous function typed againstFileare now typedFile|DirectoryInnmind\Filesystem\Fileis now a final class instead of an interfaceInnmind\Filesystem\Directoryis now a final class instead of an interfaceInnmind\Filesystem\Directory::files()has been renamed to::all()
- An inconsistency in
File\Contentthat must contain at least one line but it wasn't applied after aContent::filter()
Innmind\Filesystem\Adapter\HashedNameInnmind\Filesystem\Adapter::all()Innmind\Filesystem\ChunkInnmind\Filesystem\File\Content\Chunkable- Possibility to use a
Innmind\Immutable\Setof files inside aDirectory Innmind\Filesystem\Stream\LazyStream
- Support for
innmind/immutable5
Innmind\Filesystem\Adapter\HashedName
- Deleting a file in a directory for the adapter
InMemory::emulateFilesystem()wasn't applied
- Require
innmind/black-box5
- Support for PHP
8.1
Innmind\Filesystem\Adapter\InMemory::emulateFilesystem()it will merge directories (instead of the overwriting done by::new())
- Accessing the media type of a file no longer raise an error when it's unavailable, instead it defaults to
application/octet-stream - When adding a
Directoryloaded viaAdapter\Filesystemthe sub directories are no longer loaded if not modified - Throw an exception when failing to load a file
Innmind\Filesystem\File\Content\ChunkableandInnmind\Filesystem\Chunkare declared immutable (released as a bugfix since it should have been here since the start)
Innmind\Filesystem\Directoryis declared immutable (released as a bugfix since it should have been here since the start)
Innmind\Filesystem\File\Content\Chunks
Innmind\Filesystem\Adapter\Filesystem::mount()now acceptsInnmind\Stream\Capabilitiesas a second argumentInnmind\Filesystem\Stream\LazyStreamis now declared internal, future versions may introduce BC breaks
Innmind\Filesystem\CaseSensitivityenumInnmind\Filesystem\Adapter\Filesystem::withCaseSensitivity()
Innmind\Filesystem\Name::of()named constructorInnmind\Filesystem\Name::str(): Innmind\Immutable\StrInnmind\Filesystem\File::withContent(): Innmind\Filesystem\FileInnmind\Filesystem\File\File::of()named constructorInnmind\Filesystem\Directory::files(): Innmind\Immutable\Sequence<Innmind\Filesystem\File>Innmind\Filesystem\Adapter::root(): Innmind\Filesystem\DirectoryInnmind\Filesystem\Directory::map(): Innmind\Filesystem\DirectoryInnmind\Filesystem\Directory::flatMap(): Innmind\Filesystem\DirectoryInnmind\Filesystem\File::rename(): Innmind\Filesystem\FileInnmind\Filesystem\Directory\Directory::of()$filesparameter accepts anInnmind\Immutable\Sequence<Innmind\Filesystem\File>
Innmind\Filesystem\Directory\Directory::remove()no longer unwraps the whole directoryInnmind\Filesystem\Directory\Directory::filter()no longer erase the previous removals
Innmind\Filesystem\NameconstructorInnmind\Filesystem\File\FileconstructorInnmind\Filesystem\Adapter::all()
Innmind\Filesystem\Adapter\ChunkInnmind\Filesystem\File\Content\AtPath::stream()Innmind\Filesystem\File\Content\OfStream::stream()
Innmind\Filesystem\ChunkInnmind\Filesystem\File\Content\ChunkableInnmind\Filesystem\File\Content\Line::str(): Innmind\Immutable\Str
Innmind\Filesystem\Stream\LazyStream::end()is declared as mutation free
Innmind\Filesystem\File\ContentInnmind\Filesystem\File\Content\LineInnmind\Filesystem\File\Content\LinesInnmind\Filesystem\File\Content\AtPathInnmind\Filesystem\File\Content\OfStreamInnmind\Filesystem\File\Content\NoneInnmind\Filesystem\Exception\FailedToWriteFileInnmind\Filesystem\Exception\FailedToLoadFile
Innmind\Filesystem\File::content()now returnsInnmind\Filesystem\File\Content- Sets of loaded files are now lazy instead of deferred to avoid keeping in memory a whole directory tree
Innmind\Filesystem\Directory\Directoryconstructor is now private, useDirectory::of()insteadInnmind\Filesystem\Directory::get()now returnsInnmind\Immutable\Maybe<Innmind\Filesystem\File>instead of throwing an exceptionInnmind\Filesystem\Directory::foreach()now returnsInnmind\Immutable\SideEffectInnmind\Filesystem\Directory::filter()now returnsInnmind\Filesystem\DirectoryInnmind\Filesystem\Directory::modifications()has been replaced byInnmind\Filesystem\Directory::removed()Innmind\Filesystem\Directory::content()no longer contains the names of the files it containsInnmind\Filesystem\Adapter\Filesystemconstructor is now private, useFilesystem::mount()insteadInnmind\Filesystem\Adapter\HashedNameconstructor is now private, useHashedName::of()insteadInnmind\Filesystem\Adapter\InMemoryconstructor is now private, useInMemory::new()insteadInnmind\Filesystem\Adapter\Loggerconstructor is now private, useLogger::psr()insteadInnmind\Filesystem\Adapter::get()now returnsInnmind\Immutable\Maybe<Innmind\Filesystem\File>instead of throwing an exception
Innmind\Filesystem\Stream\NullStreamInnmind\Filesystem\File\File::withContent()Innmind\Filesystem\Exception\FileNotFoundInnmind\Filesystem\SourceInnmind\Filesystem\Directory\SourceInnmind\Filesystem\File\SourceInnmind\Filesystem\Event\FileWasAddedInnmind\Filesystem\Event\FileWasRemovedInnmind\Filesystem\Directory::replaceAt()Innmind\Filesystem\LazyAdapterInnmind\Filesystem\Adapter\LazyInnmind\Filesystem\Adapter\CacheOpenedFiles