OwlCore.Nomad.Storage.Kubo 0.14.0

dotnet add package OwlCore.Nomad.Storage.Kubo --version 0.14.0                
NuGet\Install-Package OwlCore.Nomad.Storage.Kubo -Version 0.14.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OwlCore.Nomad.Storage.Kubo" Version="0.14.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OwlCore.Nomad.Storage.Kubo --version 0.14.0                
#r "nuget: OwlCore.Nomad.Storage.Kubo, 0.14.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install OwlCore.Nomad.Storage.Kubo as a Cake Addin
#addin nuget:?package=OwlCore.Nomad.Storage.Kubo&version=0.14.0

// Install OwlCore.Nomad.Storage.Kubo as a Cake Tool
#tool nuget:?package=OwlCore.Nomad.Storage.Kubo&version=0.14.0                

A storage implementation powered by Nomad event sourcing on ipfs/Kubo.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.14.0 80 11/21/2024
0.12.0 123 9/14/2024
0.11.0 105 8/27/2024
0.10.0 126 8/24/2024
0.9.0 119 8/23/2024
0.8.0 124 8/23/2024
0.7.0 117 8/15/2024
0.6.2 130 8/12/2024
0.6.1 134 8/12/2024
0.6.0 129 8/12/2024
0.5.0 98 8/6/2024
0.4.0 87 8/3/2024
0.3.0 120 7/17/2024
0.2.0 114 7/1/2024
0.1.0 115 6/2/2024
0.0.0 131 4/28/2024

--- 0.14.0 ---
[Breaking]
Inherited and implemented breaking changes from OwlCore.Nomad 0.9.0 and OwlCore.Nomad.Storage 0.14.0.
All types that were using *KuboNomad* are now using *NomadKubo*. This reflects the namespace of the type and will be a consistent pattern moving forward.

[New]
Added a static StorageRepoFactory helper to create repos manage the lifecycle of owned root-level event stream handlers.
NomadKuboFolder now implements OwlCore.ComponentModel.IFlushable, allowing you to publish the event stream and roaming data without hassle.

--- 0.13.0 ---
[Breaking]
Removed static NomadStorageKeys helper, ported to OwlCore.Nomad.Kubo 0.13.0.

[Improvements]
Updated to / inherited changes from OwlCore.Nomad.Kubo 0.13.0.

--- 0.12.0 ---
[Breaking]
KuboNomadFolder.TempCacheFolder and KuboNomadFile.TempCacheFile are now required properties. Used for caching during read and persisting writes during flush.

[Fixes]
Inherits fixes from OwlCore.ComponentModel 0.9.1, addressing an issue where files larger than 2.1GB would fail to read or write.

[Improvements]
Additional tests and test fixes for large files.

--- 0.11.0 ---
[Breaking]
Inherited breaking changes from OwlCore.Nomad.Kubo 0.12.0. Implemented in unit tests.

--- 0.10.0 ---
[New]
Inherited new features from OwlCore.Nomad.Kubo 0.11.0.
Moved CreateStorageKeysAsync and GetOrCreateLocalStorageKeyAsyc from unit tests into new static NomadStorageKeys helper.

--- 0.9.0 ---
[Improvements]
Updated to / inherited changes from OwlCore.Nomad.Kubo 0.10.0.
KuboBasedNomadStorageExtensions.AppendEventStreamEntryAsync was moved into OwlCore.Nomad.Kubo 0.10.0.

--- 0.8.0 ---
[Breaking]
Inherited and implemented breaking changes from OwlCore.Nomad 0.8.0.
Inherited and implemented breaking changes from OwlCore.Nomad.Storage 0.8.0.
Inherited and implemented breaking changes from OwlCore.Nomad.Kubo 0.9.0.
KuboBasedNomadStorageExtensions.TryAdvanceEventStream now takes IModifiableKuboNomadFile or IModifiableKuboNomadFolder as the 'this' param.
KuboNomadFolder still uses the event stream handler from OwlCore.Noamd.Storage.NomadFolder, but ReadOnlyKuboNomadFolder uses roaming data directly and does not use an event stream handler.
KuboBasedNomadStorageExtensions.ApplyFolderUpdateAsync and KuboBasedNomadStorageExtensions.ApplyFileUpdateAsync were removed as they are now handled by the underlying NomadFolder implementation.

[Fixes]
Fixed an issue with WritableNomadFileStream where a race condition + bad stream seeking would cause empty content to be flushed to Kubo.

[Improvements]
Ported and refined prototype CLI code to build out a test suite for this implementation, which helped clear up most of the remaining inconsistencies around Nomad as a whole.
Generally, the library no longer auto-publishes to Kubo for you, instead holding the data in memory and sharing across instances. The constructor caller is expected to know when and why to flush roaming or local data to Kubo.

--- 0.7.0 ---
[Fixes]
Fixed an issue where calling AppendAndPublishNewEntryToEventStreamAsync with concurrency could have caused data to be lost.
Fixed an issue where an empty CID was applied to the file on pull, despite not appearing in the event stream. Folder and file creation now properly return existing data when overwrite is false.
Fixed an issue where some file streams weren't being consistently flushed. WritableNomadFileStream.Flush now properly waits for the underlying task to complete.

[Improvements]
KuboBasedNomadStorageExtensions.TryAdvanceEventStreamAsync now consistently throws when a mismatch event and storage id are provided.
KuboBasedNomadStorageExtensions.TryAdvanceEventStreamAsync now uses separate overloads instead of a single method with a type check.
KuboBasedNomadStorageExtensions.ApplyFolderUpdateAsync now uses separate overloads instead of a single method with a type check.
Flushing WritableNomadFileStream now hashes the data and compares the CID without pinning before deciding to copy/pin to ipfs.
Additional guards and check when flushing WritableNomadFileStream.

--- 0.6.2 ---
[Fixes]
Fixed an issue where KuboNomadFolder.CreateFileAsync wasn't returning an empty file when overwrite: true was provided and the file exists.

--- 0.6.1 ---
[Fixes]
IModifiableKuboBasedNomadFile now inherits IReadOnlyKuboBasedNomadFile, fixing an issue where KuboBasedNomadStorageExtensions.TryAdvanceEventStreamAsync wouldn't advance the stream for modifiable files.
IModifiableKuboBasedNomadFolder now inherits IReadOnlyKuboBasedNomadFolder, fixing an issue where KuboBasedNomadStorageExtensions.TryAdvanceEventStreamAsync wouldn't advance the stream for modifiable folders.

--- 0.6.0 ---
[Breaking]
Inherited and implemented breaking changes from OwlCore.Nomad.Kubo 0.8.0.
Inherited and implemented breaking changes from OwlCore.Nomad.Storage 0.7.0.
Removed IReadOnlyKuboBasedNomadStorage.  
Removed IModifiableKuboBasedNomadStorage.
Removed IReadOnlyKuboBasedNomadStorage.
Overloads for KuboBasedNomadStorageExtensions.ApplyEntryUpdateAsync were split into ApplyFileUpdateAsync and ApplyFolderUpdateAsync.
Parameters for KuboBasedNomadStorageExtensions.AppendAndPublishNewEntryToEventStreamAsync were updated. IModifiableNomadKuboEventStreamHandler{T} is used instead of IModifiableKuboBasedNomadStorage. updateEventContentCid is passed directly instead of serializing internally. eventId and targetId are passed directly instead of being pulled from the handler.

[New]
Added Models.FileUpdateEvent.
Added KuboNomadFile.EventStreamEntries.

[Improvements]
IModifiableKuboBasedNomadFolder now implements IModifiableNomadKuboEventStreamHandler{FolderUpdateEvent} directly, instead of using IModifiableKuboBasedNomadStorage and polymorphism.
IModifiableKuboBasedNomadFile now implements IModifiableNomadKuboEventStreamHandler{FileUpdateEvent} directly, instead of using IModifiableKuboBasedNomadStorage and polymorphism.
IReadOnlyKuboBasedNomadFolder now implements IReadOnlyNomadKuboEventStreamHandler{FolderUpdateEvent} directly, instead of using IReadOnlyKuboBasedNomadStorage and polymorphism.
IReadOnlyKuboBasedNomadFile now implements IReadOnlyNomadKuboEventStreamHandler{FileUpdateEvent} directly, instead of using IReadOnlyKuboBasedNomadStorage and polymorphism.
KuboBasedNomadStorageExtensions.TryAdvanceEventStreamAsync now uses IReadOnlyNomadKuboEventStreamHandler{T} instead of IReadOnlyKuboBasedNomadStorage.
Newly created files now internally use a null cid instead of getting a cid representing empty content.

[Fixes]
Flushing WriteableNomadFileStream now applies the appended event entry to the file.

--- 0.5.0 ---
[Breaking]
Inherited and implemented breaking changes from OwlCore.Nomad.Kubo 0.7.1.
Inherited and implemented breaking changes from OwlCore.Nomad.Storage 0.6.0.
KuboNomadFolder.CreateAsync no longer advances the event stream for you before returning.

[Fixes]
Fixed KuboNomadFolder.EventStreamPosition not updating during certain operations.
Fixed 'already disposed' exception when flushing WritableNomadFileStream.
Fixed an issue where KuboNomadFolder.CreateFileAsync wouldn't respect the overwrite parameter.
Fixed an issue where KuboNomadFolder.CreateFolderAsync wouldn't respect the overwrite parameter.

[New]
Added KuboNomadFolder.EventStreamEntries. Since subfolders and files share the same events stream as the root folder, this allows us to avoid re-resolving the event stream every time we get or create a child item instance.

--- 0.4.0 ---
[Breaking]
Inherited and implemented breaking changes from OwlCore.Nomad.Kubo 0.5.0.
Inherited and implemented breaking changes from OwlCore.Nomad.Storage 0.5.0.

[New]
Added static KuboNomadFolder.CreateAsync.
Added static ReadOnlyKuboNomadFolder.CreateAsync.

--- 0.3.0 ---
[Breaking]
Migrated to and inherited breaking changes from OwlCore.Nomad 0.5.0.

[Improvement]
Updated dependencies to latest stable versions.

--- 0.2.0 ---
[Breaking]
Migrated to and inherited breaking changes from OwlCore.Nomad 0.4.0.
     
--- 0.1.0 ---
[Breaking]
Migrated to OwlCore.Nomad 0.3.0, implementing new required members and consolating several types and helpers.
Inherited and implemented changes from OwlCore.Nomad.Storage 0.2.0.

--- 0.0.0 ---
[New]
Initial release of OwlCore.Nomad.Storage.Kubo.