OwlCore.Kubo 0.17.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package OwlCore.Kubo --version 0.17.2                
NuGet\Install-Package OwlCore.Kubo -Version 0.17.2                
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.Kubo" Version="0.17.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OwlCore.Kubo --version 0.17.2                
#r "nuget: OwlCore.Kubo, 0.17.2"                
#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.Kubo as a Cake Addin
#addin nuget:?package=OwlCore.Kubo&version=0.17.2

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

An essential toolkit for Kubo, IPFS and the distributed web.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  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 is compatible.  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. 
.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.Kubo:

Package Downloads
OwlCore.Nomad.Kubo

Shared tooling for building Nomad-enabled applications on ipfs

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on OwlCore.Kubo:

Repository Stars
yoshiask/FluentStore
A unifying frontend for Windows app stores and package managers
Arlodotexe/strix-music
Combine any music sources into a single library. It's your music. Play it your way.
Version Downloads Last updated
0.20.1 126 11/21/2024
0.20.0 194 11/21/2024
0.19.1 98 11/15/2024
0.19.0 251 9/14/2024
0.18.0 110 9/7/2024
0.17.2 456 8/23/2024
0.17.1 563 7/23/2024
0.17.0 128 7/22/2024
0.16.5 119 7/18/2024
0.16.4 188 7/17/2024
0.16.3 101 7/11/2024
0.16.2 103 7/1/2024
0.16.1 335 6/1/2024
0.16.0 210 4/28/2024
0.15.1 187 1/25/2024
0.15.0 119 1/24/2024
0.14.3 154 1/13/2024
0.14.2 126 1/12/2024
0.14.1 284 12/17/2023
0.14.0 219 11/15/2023
0.13.2 155 11/14/2023
0.13.1 155 11/14/2023
0.13.0 158 11/14/2023
0.12.5 304 5/13/2023
0.12.4 203 5/10/2023
0.12.3 105 5/9/2023
0.12.2 98 5/9/2023
0.12.1 125 5/7/2023
0.12.0 115 5/7/2023
0.11.3 229 5/3/2023
0.11.2 308 3/29/2023
0.11.1 319 2/28/2023
0.11.0 301 2/28/2023
0.10.2 293 2/23/2023
0.10.1 305 2/22/2023
0.10.0 292 2/22/2023
0.9.9 311 2/8/2023
0.9.8 320 2/8/2023
0.9.7 425 12/25/2022
0.9.6 367 12/23/2022
0.9.5 494 10/21/2022
0.9.4 480 10/21/2022
0.9.3 476 10/21/2022
0.9.2 495 10/8/2022
0.9.1 477 10/7/2022
0.9.0 460 10/7/2022
0.8.2 437 10/7/2022
0.8.1 482 10/4/2022
0.8.0 470 10/4/2022
0.7.0 481 10/4/2022
0.6.0 546 9/28/2022
0.5.1 467 9/27/2022
0.5.0 455 9/27/2022
0.4.0 460 9/27/2022
0.3.0 461 9/6/2022
0.2.1 460 9/6/2022
0.2.0 487 9/6/2022
0.1.4 481 9/5/2022
0.1.3 460 9/5/2022
0.1.2 500 9/4/2022
0.1.1 469 9/2/2022
0.0.0 473 9/2/2022

--- 0.17.2 ---
[Fixes]
Fixed an issue where CachedNameApi was using the 'nocache' parameter to determine whether to use the cache layer, instead of simply delegating to the underlying API. 'nocache' has nothing to do with the caching layer, the parameter is only used by the Kubo API.
Removed unused syntax sugar GenericKuboExtensions.GetDagCidAsync. Call the Dag API instead.

--- 0.17.1 ---
[Improvements]
Bumped OwlCore to 0.6.0.

--- 0.17.0 ---
[New]
Added PeerRoomExtensions.WaitForJoinAsync extension method
Added PeerRoomExtensions.WaitToReceiveMessageAsync extension method
Added PeerRoomExtensions.PublishUntilMessageReceivedAsync extension methods
Added PeerRoom.HeartbeatMessage to enable changing the heartbeat for the peer room.
Prune stale/outdated heartbeat message, made PruneStalePeersAsync public.

[Breaking]
Allow receiving messages when heartbeat is disabled.

[Fixes]
Fixed inconsistent passing of --repo-dir parameter during cli invocation

--- 0.16.5 ---
[Fixes]
Fixed serialization issues with CachedNameApi.
Fixed multi-publishing in CachedNameApi when flushing after using both Path and Cid overloads.

--- 0.16.4 ---
[Fixes]
Fixed decryption on AesPasswordEncryptedPubSub, addressed usage of deprecated Rfc2898DeriveBytes constructor.
Fixed an issue where cached KeyInfo wasn't being serialized/deserialized.

[Improvements]
Updated dependencies to latest available stable versions.

--- 0.16.3 ---
[Fixes]
Fixed an issue where flushing the CachedNameApi would throw multiple enumeration with a non-empty cache.

--- 0.16.2 ---
[Improvements]
Removed null guard in ResolveDagCidAsync extension method. This reflects the behavior of the underlying Kubo API.

--- 0.16.1 ---
[Fixes]
Added an internal semaphore to CachedNameApi to synchronize access across threads.

--- 0.16.0 ---
[Breaking]
Inherited breaking changes from IpfsShipyard.Net.Http.Client 0.2.0.
Inherited breaking changes from OwlCore.Storage 0.10.0 and 0.11.0.
Inherited breaking changes from OwlCore.ComponentModel 0.7.0 and 0.8.0.
Inherited breaking changes from OwlCore.Extensions 0.8.0.

[Fixes]
The changes in OwlCore.Storage 0.10.0 allowed the CommonTests to uncover previously unknown issues with the Kubo-based storage implementation. These issues are now fixed and the storage implementations are compliant with the latest CommonTests.

[New]
Added static SwarmKeyGen extension methods, which allow you to generate and write a private Kubo swarm key to a file for immediate use.
Added a new PrivateKuboBootstrapper. This custom bootstrapper allows you to start a Kubo node with a private swarm key, automatically removing the default bootstrap nodes, applying LIBP2P_FORCE_PNET as needed, and setting up the provided BootstrapPeerMultiAddresses as your bootstrap peers.
Added a new OwlCore.Kubo.Cache namespace. This is a limited set of API wrappers for the Ipfs core interfaces that enable caching functionality throughout your entire application domain, currently covering IKeyApi and INameApi. Note that you'll need to use ICoreApi instead of IpfsClient, and likewise for other Core interfaces (and their implementations) throughout your codebase to use this cache layer.

Added TransformIpnsDagAsync extension method, which allows you to mutate and update a DAG object published to IPNS all in one go, with progress reporting.
Added ResolveDagCidAsync extension method to Cid and IEnumerable{Cid}. Resolves the provided cid if it is an Ipns address and retrieves the content from the DAG.
Added CreateKeyWithNameOfIdAsync extension method to IKeyApi. Creates an ipns key using a temp name, then renames it to the name of the key. Enables pushing to ipns without additional API calls to convert between ipns cid and name.
Added GetOrCreateKeyAsync extension method to IKeyApi. Gets a key by name, or creates it if it does not exist.

Added various helper methods to KuboBootstrapper for getting repo lock state, gateway and api uri, and converting between MultiAddress and Uri.
Added all missing DhtRoutingMode values that have been added to Kubo as of 0.26.0.
Added a LaunchConfigMode to KuboBootstrapper. Defines the behavior when a node is already running (when the repo is locked): Throw, Attach, or Relaunch.
Added an ApiUriMode to KuboBootstrapper. Gets or sets an enum that determines how to use the supplied ApiUri: UseExisting, or OverwriteExisting.
Added a GatewayUriMode to KuboBootstrapper. Gets or sets an enum that determines how to use the supplied GatewayUri: UseExisting, or OverwriteExisting.
Added a UseAcceleratedDHTClient property to KuboBootstrapper. If set to true, the accelerated DHT client will be used on startup. Extensive documentation has been added to aid in deciding whether you should use this. Note that enabling this will increase resource consumption.

[Improvements]
As part of the move to ICoreApi, all internal calls to DoCommandAsync have been removed wherever IMfsApi is used, thanks to the implementation contributed in https://github.com/ipfs-shipyard/net-ipfs-core/pull/13/.
Updated dependencies.

--- 0.15.1 ---
[Fixes]
Fixed an issue where MfsFolder would throw StackOverflowException when calling GetParentAsync on a folder two or more subdirectories in. Added tests.
Fixed an issue where KuboBootstrapper would fail to set binary permissions on Linux when BinaryWorkingFolder had a space in it.

--- 0.15.0 ---
[Fixes][Breaking]
Inherited Key Api fixes and breaking changes from IpfsShipyard.Ipfs.Core and IpfsShipyard.Ipfs.Http.Client 0.1.0.

--- 0.14.3 ---
[Fixed]
Fixed KuboBootstrapper failing to start when the repo path contains a space.

--- 0.14.2 ---
[Improvements]
Added Client property to KuboBootstrapper.

--- 0.14.1 ---
[Fixed]
Replaced usage of thread-problematic (obsolete) DataStream property in IpfsFile.
Fix KuboBootstrapper on linux, updated OwlCore.Storage.SharpCompress.
Bump IpfsShipyard.Ipfs.Http.Client, fixes to KeyApi

[Improvements]
Expose SearchArchiveForKuboBinaryAsync as public in KuboDownloader.
In the OwlCore.Storage implementation for Ipfs, Ipns and Mfs, members that return or yield storage instances are now virtual. Allows for creating custom implementations that return custom implementations.

--- 0.14.0 ---
[Fixed]
In KuboBootstrapper, calling Stop now gracefully shuts down the Kubo node by invoking the `ipfs shutdown` command and stopping the process, instead of killing it outright.

[Improvements]
In KuboDownloader, GetBinaryVersionAsync and GetLatestBinaryAsync now have overloads for both HttpClient and IpfsClient.
In KuboDownloader, GetBinaryVersionAsync and GetLatestBinaryAsync now crawls compressed archives directly from Http/Ipfs, returning an IFile of the Kubo binary without downloading and extracting to disk.
The streams opened by IpfsFile and IpnsFile are now seekable.
The streams opened by IpfsFile and IpnsFile now supply an accurate stream Length based on the Size given by Kubo.

[Breaking]
The KuboDownloader class is now static.
In KuboDownloader, the DownloadLatestBinaryAsync method has been replaced with GetLatestBinaryAsync.
In KuboDownloader, the DownloadBinaryAsync method has been replaced with GetBinaryVersionAsync.
In KuboDownloader, the return type on GetLatestKuboVersionAsync was changed. This method now returns a Version, without the tuple and RawVersion.
In KuboDownloader, the method parameters of GetLatestKuboVersionAsync were changed. This method now takes any `IFile` pointing to a versions file, rather than a url pointing to the default versions file on http.
In KuboBootstrapper, the constructor now takes the repoPath first for all constructors.
In KuboBootstrapper, the IFile previous provided in the constructor has been replaced with an optional file delegate.
In KuboBootstrapper, if the binary isn't in the BinaryWorkingFolder, it will be retrieved using the file delegate provided in the constructor. If no delegate is provided, the latest version will be retrieved via Http.
In KuboBootstrapper, ApplySettingsAsync is now ApplySettings, and is no longer async.
In KuboBootstrapper, the Kubo binary is now copied directly to the given BinaryWorkingFolder, instead of making a subfolder. The default location is still the system temp folder.

--- 0.13.2 ---
[Fixed]
Fixed an issue with KuboBootstrapper not starting on Linux (caused by warning-based stderr used by newer versions of Kubo).

[Improvements]
Added support for net7.0

--- 0.13.1 ---
[Fixed]
Fixed an issue with KuboBootstrapper not starting on Linux.

--- 0.13.0 ---
[New]
Added IGetCid and StorableKuboExtensions.GetCidAsync() for easier content comparison. Enables returning the CID for any IStorable item, falling back to stream hashing for files when IGetCid isn't implemented.
Added GenericKuboExtensions.GetCidAsync(object) extension method, a shorthand for ipfsClient.Dag.PutAsync(JObject) with pinning disabled.
All OwlCore.Storage implementations for Kubo now implement GetCidAsync() and call Kubo directly (IpfsFile, IpfsFolder, IpnsFile, IpnsFolder, MfsFile, MfsFolder).
Added ContentAddressedSystemFile and ContentAddressedSystemFolder, enabling a fastpath when the GetCidAsync() extension method is called on SystemFolder or SystemFile.

[Improvements]
All Kubo-based OwlCore.Storage implementations now consistently expose the IpfsClient it uses as a public property Client.
Codebase uses IDelegable{T} instead of IDelegatable{T}. Functionally, no change - IDelegatable{T} inherits from IDelegable{T} to smooth the migration process. IDelegatable is spelled incorrectly and marked obsolete.

--- 0.12.5 ---
[Fixes]
Updated transient dependency on OwlCore.Storage to latest verison. Fixes some issues with starting the KuboBootstrapper.

--- 0.12.4 ---
[Fixes]
Downgraded System.Text.Json from prerelease to latest stable.
Downgraded Microsoft.Bcl.AsyncInterfaces from prerelease to latest stable.
     
--- 0.12.3 ---
[Fixes]
Fixed an issue in MfsStream.WriteAsync where the length adjustment when writing past the end of the stream was calculated incorrectly.

--- 0.12.2 ---
[Fixes]
Fixed an issue that prevented MfsStream.ReadAsync from reading the requested byte count. Reading file content from Mfs is now much faster.

--- 0.12.1 ---
[Fixes]
Fixed an issue where MfsFolder.CreateFolderAsync would throw when the folder exists, instead of returning the existing folder.

--- 0.12.0 ---
[Breaking]
Inherited breaking changes from transient dependencies.

[Improvements]
Updated all dependencies to latest version.

--- 0.11.3 ---
[Fixes]
Fixed an issue where MfsStream would throw when writing due to a potentially malformed path.

--- 0.11.2 ---
[Fixes]
Fixed an issue where KuboBootstrapper would throw when initializing if a warning was output to the error stream.

--- 0.11.1 ---
[Fixes]
Fixed an issue where KuboBootstrapper would throw when initializing a non-empty repo.

--- 0.11.0 ---
[New]
Added KuboBootstrapper.GatewayUri to specify the address the gateway should be hosted.
Added KuboBootstrapper.RoutingMode to swap between the full DHT and the client DHT before starting the node.
Added KuboBootstrapper.StartupProfiles. These will be applied before starting the node.
Added KuboBootstrapper.BinaryWorkingFolder. This is the folder where Kubo is copied to before being run and can be changed to a custom location.

[Fixes]
Fixed an issue where KuboBootstrapper.StartAsync would not throw when the process failed to start.

--- 0.10.2 ---
[Fixes]
Fixed IpnsFile not providing the correct name.

--- 0.10.1 ---
[Fixes]
Inherited fixes from OwlCore.Storage 0.8.2.

--- 0.10.0 ---
[Breaking]
Inherited breaking changes from OwlCore.Storage 0.8.0.

--- 0.9.9 ---
[Improvement]
Updated transitive dependencies to latest version.

[Fixed]
Fixed an issue where the KuboBoostrapper wouldn't start.
Inherited a fix from IpfsShipyard.Ipfs.Core where retrieving peer information would crash due to missing support for webtransport and certhash.

--- 0.9.8 ---
[Improvement]
Updated transitive dependencies to latest version.

[Fixed]
Inherited a fix from IpfsShipyard.Ipfs.Core where retrieving peer information would crash due to missing quic-v1 support.

--- 0.9.7 ---
[Improvements]
KuboBootstrapper now copies to the same temp folder every time, opening the file if it already exists.
KuboBootstrapper now uses the --repo-dir CLI argument instead of the IPFS_PATH environment variable.
Updated dependent packages to latest version.

--- 0.9.6 ---
[Fixed]
Fixed an issue where KuboBootstrapper would crash on machines with the IPFS_PATH environment variable set.
Renamed FindLatestVersion to GetLatestKuboVersionAsync, made public and non-static.

--- 0.9.5 ---
[Fixed]
Fixed duplicate CollectionChanged invocation for TimerBasedMfsWatcher

--- 0.9.4 ---
[Fixed]
Fixed an issue where TimerBasedMfsWatcher wasn't reading from Mfs correct to check for changes

[Improvements]
MfsFolder.GetItemsAsync now passes the cancelation token to the deserializer.
Added unit tests for TimerBasedMfsWatcher.

--- 0.9.3 ---
[Fixed]
When modifying PeerRoom.ConnectedPeers, always wait for execution of the fire-and-forget method SyncronizationContext.Post to complete.
Fixed timer-based file watchers throwing on construction.

--- 0.9.2 ---
[Improvement]
PeerRoom.ConnectedPeers now always raises the CollectionChanged event on the original synchronization context.

--- 0.9.1 ---
[Improvement]
Added more unit tests around PeerRoom.

[Fixed]
Fixed an issue where PeerRoom wouldn't properly remove peers with expired heartbeats
Fixed an issue where PeerRoom would handle and emit messages from the current peer.

--- 0.9.0 ---
[Improvement]
Added proper unit tests around PeerRoom.

[Fixed]
Fixed invalid default CID with PublishedMessage.Id.
Fixed various issues with PeerRoom.

[Breaking]
PeerRoom.BroadcastHeartbeat has been renamed to PeerRoom.BroadcastHeartbeatAsync.
PeerRoom.BroadcastMessageAsync has been renamed to PublishAsync.

--- 0.8.2 ---
[Fixed]
Fixed an issue where AesPasswordEncryptedPubSub would swallow incoming decrypted messages due to a silent error being thrown by the underlying library.

--- 0.8.1 ---
[Fixed]
Fixed an issue where PeerRoom would add duplicate peers to ConnectedPeers.

--- 0.8.0 ---
[New]
Added MessageReceived event to PeerRoom. Only messages from peers in the room will be emitted.
Added BroadcastMessageAsync to PeerRoom.

[Fixed]
Fixed an issue where PeerRoom heartbeat would be trigger more frequently than specified.

--- 0.7.0 ---
[New]
Added PeerRoom and PubSubPeerFilter.

--- 0.6.0 ---
[New]
Added AesPasswordEncryptedPubSub. Wrap around an instance of IPubSubApi and automatically encrypt/decrypt messages using a pre-shared passkey.

--- 0.5.1 ---
[Fixed]
Fixed an issue where Disposing an MfsStream would not flush the data, resulting in errors when a separate MfsStream to the same resource was opened.

--- 0.5.0 ---
[Improvements]
Updated to OwlCore 0.1.0. Removes a number of uneeded transient dependencies.

[Breaking]
All breaking changes from OwlCore 0.1.0 have been inherited. See release notes for OwlCore 0.1.0.

--- 0.4.0 ---
[New]
Added MfsFile and MfsFolder. MFS acts like a regular name-based filesystem. You can add, remove, move, and edit MFS files, but the actual content is on IPFS, and can be distributed like any other content on IPFS. MfsFolder is modifiable, so it can be hotswapped for SystemFolder, WindowsStorageFolder, etc. for the vast majority of use cases
Added MfsStream. This is a standard System.IO.Stream implementation that reads directly from a file in MFS.

[Fixed]
Fixed invalid NotifyCollectionChanged arguments that prevented TimerBasedIpnsWatcher from working.

[Breaking]
All folder watchers now reside in the namespace OwlCore.Kubo.FolderWatchers.
Renamed IpnsFolderTimerWatcher to TimerBasedIpnsWatcher.
Renamed IAddressableIpfsStorable to IChainedAddressableStorable.

--- 0.3.0 ---
[Breaking]
Inheriting breaking changes from OwlCore.Storage. See release notes for 0.5.0.

--- 0.2.1 ---
[New]
IpnsFolder now implements IMutableFolder. The folder watcher used is timer based, and periodically diffs the content.

--- 0.2.0 ---
[Breaking]
Inheriting breaking changes from OwlCore.Storage. See release notes for 0.4.0.

[New]
Added AddressableIpfsFile and AddressableIpfsFolder. Any item returned from a folder will now implement IAddressableStorage, allowing you to traverse back to the root folder.
Added IpnsFile and IpnsFolder, with properly transforming IDs during traversal. For example, you can start with a new IpnsFolder("/ipns/ipfs.tech"), and calling GetItemsAsync recursively could yield you with a file or folderwith an ID and path of "/ipns/ipfs.tech/some/really/deep/path/".

--- 0.1.4 ---
Fixed IpfsFolder.GetItemsAsync returning all items, regardless of the StorableType used.

--- 0.1.3 ---
Updated OwlCore.Storage dependency to the latest version.

--- 0.1.2 ---
[Improvements]
Updated packages. Removes various transitive dependencies.

--- 0.1.1 ---
[Fixed]
Fixed KuboBootstrapper failing to execute on Linux due to unset execute permission.

--- 0.1.0 ---
[New]
Added basic OwlCore.Storage implementations of IpfsFolder and IpfsFile.
Renamed KuboDownloader.DownloadBinaryAsync to KuboDownload.DownloadLatestBinaryAsync.
Added KuboDownloader.DownloadBinaryAsync, which takes a specific Version to install.

[Improvements]
Unit tests will now automatically use a local node when it's available, falling back to an embedded node if needed.

--- 0.0.0 ---
Initial release.

[New]
Added KuboBoostrapper.
Added KuboDownloader.
Added unit tests.