OwlCore.Nomad.Kubo 0.15.1

dotnet add package OwlCore.Nomad.Kubo --version 0.15.1                
NuGet\Install-Package OwlCore.Nomad.Kubo -Version 0.15.1                
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.Kubo" Version="0.15.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OwlCore.Nomad.Kubo --version 0.15.1                
#r "nuget: OwlCore.Nomad.Kubo, 0.15.1"                
#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.Kubo as a Cake Addin
#addin nuget:?package=OwlCore.Nomad.Kubo&version=0.15.1

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

Build a modifiable application domain across Kubo peers with eventual consistency. Cover the gap between "User device" and "User".

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.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
.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 (1)

Showing the top 1 NuGet packages that depend on OwlCore.Nomad.Kubo:

Package Downloads
OwlCore.Nomad.Storage.Kubo

A storage implementation powered by event stream sourcing on IPFS via Kubo

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.15.1 173 3/8/2025
0.15.0 159 3/7/2025
0.14.1 105 2/17/2025
0.14.0 219 11/21/2024
0.13.0 116 10/19/2024
0.12.1 173 9/14/2024
0.12.0 175 8/27/2024
0.11.0 175 8/23/2024
0.10.0 162 8/23/2024
0.9.0 184 8/23/2024
0.8.0 283 8/12/2024
0.7.1 122 8/3/2024
0.7.0 87 8/3/2024
0.6.1 72 8/3/2024
0.6.0 83 8/3/2024
0.5.0 112 8/3/2024
0.4.2 69 8/3/2024
0.4.1 118 7/23/2024
0.2.1 116 7/22/2024
0.2.0 165 7/17/2024
0.1.0 162 7/1/2024
0.0.0 156 6/1/2024

--- 0.15.1 ---
[Improvements]
Added supports for net8.0 and net9.0 in addition to netstandard2.0.

--- 0.15.0 ---
[Breaking]
Inherited and implemented breaking changes from OwlCore.Nomad 0.10.0.
Existing event streams will need to be recreated or migrated to the new model changes.
Removed SourceAddEvent and SourceRemoveEvent. The EventId for these have changed and have been moved to a static ReservedEventIds class.
All code regarding Event Streams and Event Stream Entries have been updated to use DagCid instead of Cid. Cid can be a libp2p key, while a DagCid always links immutable data.
The interface method INomadKuboEventStreamHandler.AppendNewEntryAsync has an update signature. The parameters were previously only TEventEntryContent and a CancellationToken, but are now a targetId, an eventId, TEventEntryContent, a timestampUtc and a cancellationToken in that order.
The interface method INomadKuboEventStreamHandler.ApplyEntryUpdateAsync has an updated signature. The parameters were previously only TEventEntryContent and a CancellationToken, but are now an event stream entry, TEventEntryContent and a cancellationToken in that order.

[Improvement]
The method NomadKuboEventStreamHandlerBase.AppendNewEntryAsync now has a default body as has been marked virtual. It no longer needs to be overriden in a derived class if the default behavior is desired.

--- 0.14.1 ---
[Fixes]
KeyExchange.ReceiveRoamingKeyAsync now throws when stderr is received, instead of discarding the error.
Fixed an issue in NomadKuboRepositoryBase.GetAsync that was causing nullrefs just before invoking the ReadOnlyFromHandlerConfig delegate.

[Improvements]
NomadKuboRepository.CreateAsync now throws if selfEventStreamHandlerConfig.RoamingId is null or whitespace, instead of just null.

--- 0.14.0 ---
[Breaking]
Inherited breaking changes from OwlCore.Nomad 0.9.0.
Removed all reference and usage of ListeningEventStreamHandlers, notably in constructors. This is no longer needed as root-level event stream handlers can now be managed by a repository.
The AllEventStreamEntries is no longer stored on the handlers themselves by default, but are included as optional on a NomadKuboEventStreamHandlerConfig{TRoaming} and can still be used by implementations that need it.

[New]
Added static NomadKeyHelpers with method RoamingIdToNomadKeysAsync. This method takes an optional RoamingId and returns a tuple of the local and roaming keys along with the resolved roaming id (if not provided).
Added NomadKuboEventStreamHandlerConfig{TRoaming} to be used for configuring repositories to construct modifiable or read-only event stream handlers.
Added IReadOnlyNomadKuboRegistry{TReadOnly} and IModifiableNomadKuboRegistry{TReadOnly}.
Added INomadKuboRepository{TModifiable, TReadOnly}, used to manage the lifecycle of items in a repository.
Added INomadKuboRepository{TModifiable, TReadOnly, TCreateParam}. Similar to INomadKuboRepository{TModifiable, TReadOnly}, but has a parameter for creating new items.
Added NomadKuboRepository{TModifiable, TReadOnly, TRoaming, TEventEntryContent}, an inbox class that be used get or create root-level modifiable or read-only event stream handlers based on the available data.
Added NomadKuboEventStreamHandlerExtensions.PublishLocalAsync to complement the existing PublishRoamingAsync method.

[Fixed]
NomadKuboEventStreamHandlerExtensions.ResolveEventStreamEntriesAsync no longer auto-includes the local key for resolution if missing. Fixes errors when the local key hasn't been published yet.

--- 0.13.0 ---
[New]
Ported a generic NomadKeyGen version of the StorageKeyGenerator from OwlCore.Nomad.Storage.Kubo. This contains helpers for creating initial local and roaming Nomad IPNS keys in Kubo.  

--- 0.12.1 ---
[Fixes]
Inherited fixes from OwlCore.ComponentModel 0.9.1.
Inherited fixes and improvements from OwlCore.Kubo 0.19.0 and transient dependencies.

--- 0.12.0 ---
[Breaking]
KeyExchange.PairWithEncryptedPubSubAsync now takes a delegate GetOrCreateLocalKeyFromRoamingAsync(IKey roamingKey, CancellationToken cancellationToken) instead of directly taking the local key. When an event stream is created, the roaming key must be set as the TargetId in the local key. Since the roaming key is imported during the pairing process, the local event stream must be created or updated with the imported key's id set as the EventStream{T}.TargetId. This delegate allows that to happen prior to local exchange.    

[New]
Added delegate GetOrCreateLocalKeyFromRoamingAsync.

--- 0.11.0 ---
[New]
Added KeyExchange.PairWithEncryptedPubSubAsync, simplifying the pairing process into a one-line helper.

--- 0.10.0 ---
[Breaking]
NomadKuboEventStreamHandlerExtensions.AppendNewEntryAsync was renamed to AppendEventStreamEntryAsync, now takes updateEventContentCid directly instead of serializing data to the Dag.
NomadKuboEventStreamHandlerExtensions.AppendEventStreamEntryAsync no longer publishes data to ipns. Instead, it simply wraps in an EventStreamEntry, appends it to the handler, and returns the appended EventStreamEntry.
NomadKuboEventStreamHandlerExtensions.AppendEventStreamEntryAsync now properly adds to handler.LocalEventStream.Entries and handler.AllEventStreamEntries.

--- 0.9.0 ---
[Breaking]
Inherited and implemented breaking changes from OwlCore.Nomad 0.8.0.
IModifiableNomadKuboEventStreamHandler IReadOnlyNomadKuboEventStreamHandler were combined into a single INomadKuboEventStreamHandler, like for their implementations. In Nomad, an event stream handler is only needed if you can modify the data, otherwise you'd simply resolve and parse the published roaming data.
NomadKuboEventStreamHandlerExtensions now uses IKuboOptions instead of KuboOptions anywhere it was used.
Implementations of INomadKuboEventStreamHandler now require supplying the RoamingKey and LocalEventStreamKey as IKey instead of the using the name. These keys must be present and instantiated before using the event stream.
ExchangeLocalSourceAsync now takes an IKey instead of the key name. Added code comments.

--- 0.8.0 ---
[Breaking]
Inherited and implemented breaking changes from OwlCore.Nomad 0.7.0.
Removed NomadKuboEventStreamHandlerExtensions.AdvanceSharedEventStreamAsync.
Removed allowMismatchedEventStreamTargetId parameter from extension methods for ResolveEventStreamEntriesAsync, AdvanceSharedEventStreamAsync and AdvanceEventStreamToAtLeastAsync. As of OwlCore.Nomad 0.7.0, IHasId has been replaced with a more specific IEventStreamHandler.EventStreamId.
NomadKuboEventStreamHandlerExtensions.ResolveEventStreamEntriesAsync no longer skips mismatched EventStreamEntry.TargetId and IEventStreamHandler.Id.
NomadKuboEventStreamHandlerExtensions.ResolveEventStreamEntriesAsync will always skip a mismatched EventStream.TargetId / IEventStreamHandler.EventStreamId.

--- 0.7.1 ---
[Fixed]
Fixed an issue where allowMismatchedEventStreamTargetId was flipped internally.

--- 0.7.0 ---
[Breaking]
Added allowMismatchedEventStreamTargetId to extension methods for ResolveEventStreamEntriesAsync, AdvanceSharedEventStreamAsync and AdvanceEventStreamToAtLeastAsync.

--- 0.6.1 ---
[Improvements]
NomadKuboEventStreamHandlerExtensions.AppendNewEntryAsync now returns Task{EventStreamEntry{Cid}} instead of Task.

--- 0.6.0 ---
[Breaking]
Inherited and implemented breaking changes from OwlCore.Nomad 0.6.0.

--- 0.5.0 ---
[Breaking]
Removed LocalEventStreamKeyName from ReadOnlyNomadKuboEventStreamHandler.

--- 0.4.2 ---
[Improvements]
Bumped OwlCore.Nomad to 0.5.1, which bumps OwlCore.ComponentModel to 0.8.2.

--- 0.4.1 ---
[Fixes]
Fixed an issue with KeyExchange.ExchangeRoamingKeyAsync where isReceiver was not used properly.

--- 0.4.0 ---
[New]
Ported KeyExchange.ExchangeRoamingKeyAsync and KeyExchange.ExchangeLocalKeyAsync from prototype. Uses KeyExchange helpers added in 0.3.0.

--- 0.3.0 ---
[New]
Added KeyExchange helpers for exchanging local and roaming Nomad ipns keys over pubsub.

--- 0.2.1 ---
[Improvements]
Add guards and checks around resolving event entries.
Avoid yielding SourceAddEvent and SourceRemoveEvent to consuming application.
Add logging, fix potential SourceAddEvent and SourceRemoveEvent issues.

[Fixes]
Fixed double queuing for discovered SourceAddEvents.

--- 0.2.0 ---
[Breaking]
Migrated to OwlCore.Nomad 0.5.0, inherited breaking changes.
Removed empty NomadEventStream in favor of EventStream{Cid}, as no additional fields are needed here.
Removed empty NomadEventStreamEntry in favor of EventStreamEntry{Cid}, as no additional fields are needed here.
Fixed NomadKuboEventStreamHandlerExtensions.GetSourcesFromRoamingKeyAsync not deserializing sources, now takes a generic param.

[Improvements]
Made ReadOnlyNomadKuboEventStreamHandler.Sources virtual.
Made ReadOnlyNomadKuboEventStreamHandler.TryAdvanceEventStreamAsync virtual.

[New]
Added inbox SourceAddEvent, SourceRemoveEvent and abstract EventEntryContent records.
Added NomadKuboEventStreamHandlerExtensions.ResolveEventStreamEntriesAsync. Re-implemented from OwlCore.Nomad to also handle recursively resolving entries from SourceAdd and SourceRemove events.
Added NomadKuboEventStreamHandlerExtensions.AdvanceSharedEventStreamAsync. Ported as-is from OwlCore.Nomad, but with Kubo types.
Added NomadKuboEventStreamHandlerExtensions.AdvanceEventStreamToAtLeastAsync. Ported as-is from OwlCore.Nomad, but with Kubo types.

--- 0.1.0 ---
[Breaking]
Migrated to OwlCore.Nomad 0.4.0, inherited breaking changes.

[New]
Added new NomadKuboEventStreamHandlerExtensions.ResolveContentPointerAsync extension method, a shorthand for resolving a Nomad TContentPointer using Kubo.
Added new NomadKuboEventStreamHandlerExtensions.GetSourcesFromRoamingKeyAsync extension method. Nomad source ipns keys should be published in the root of the final 'roaming' state, and this method extracts them again for use.
     
--- 0.0.0 ---
[New]
Initial release of OwlCore.Nomad.Kubo.