Unfucked 0.0.0-alpha2

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

// Install Unfucked as a Cake Tool
#tool nuget:?package=Unfucked&version=0.0.0-alpha2&prerelease                

🧰 Unfucked

GitHub Actions Testspace Coveralls

Fix egregiously broken or missing functionality in .NET libraries. Inspired by underscore, jQuery, Apache Commons, Spring, and Guava.

Unfuck your house

Packages

Unfucked

NuGet

  • Console
    • Colored text and background in strings, not tightly coupled to Console.Write
    • Clear screen and move to top-left corner
  • Cryptography
    • Random string generation
    • Is certificate temporally valid
  • Decimal math
    • Math operations on 128-bit decimal values
  • Directories
    • Delete without throwing an exception on missing directories
  • DNS
    • Fluent resolving method
  • Enumerables
    • Filter out null values
    • Add multiple values at once
    • Upsert into non-concurrent dictionary
    • Fluent set difference method
    • Filter out consecutive duplicate values
    • Convert IAsyncEnumerator to list
    • First item or null instead of default for value types
    • Head and tail
    • Delta changeset between two enumerables (created, updated, deleted, and unchanged items)
    • Atomic swap on ConcurrentDictionary to upsert new value and get old value
  • Paths
    • Trim trailing slashes
    • Create new empty temporary subdirectory in specific parent directory
    • Convert DOS backslashes to Unix forward slashes
    • Match file extension against a set
  • Processes
    • Command line argument marshalling with correct escaping and quoting
      • String to array
      • Array to string
    • Run program and get output and exit code
    • Get parent process of a process
    • Get descendant processes recursively of a process
  • Strings
    • Coerce empty strings to null
    • Fluently check if a string has any non-whitespace characters
    • Fluently check if a string has any characters
    • Fluent join method
    • Uppercase first letter
    • Lowercase first letter
    • Trim multiple strings from start, end, or both
    • Join enumerable into an English-style list with commas an a conjunction like and
    • Fluent conversion method to byte array
    • Fluent conversion method to byte stream
    • Convert DOS CRLF line breaks to Unix LF line breaks
    • Repeat a string a certain number of times
  • Tasks
    • Unbounded delay time (.NET 6 tops out at 49.7 days)
    • Await multiple tasks and proceed when any of them both completes and the return value passes a predicate, or they all fail to complete or the predicate
      • Return true if any passed or false if they all failed
      • Return the first passing task's result, or null if they all failed
    • Asynchronously await the cancellation of a CancellationToken without blocking the thread
  • URIs
    • Fluent method to get URI query parameters
    • Check if a URI host belongs to a given domain (site locking)
  • XML
    • Fluent method to read an XML document from an HTTP response body
    • Find all descendant elements of a parent node which have a given tag name

Unfucked.Caching

  • Type-safe MemoryCache<T>

Unfucked.Compression

  • TAR archives
    • Symlinks
    • Directories
    • File owner
    • File group
    • File permissions

Unfucked.DateTime

  • Absolute value of a Duration or TimeSpan
  • Get midnight from a ZonedDateTime as a ZonedDateTime, Period, or Duration
  • Convert time zone offset to hours
  • Compare two OffsetDateTimes to see which one happens first

Unfucked.DependencyInjection

  • Add a colored console with column formatted data
  • Search for JSON configuration files in executable directory, not just current working directory
  • Allow provider functions to be injected, so long-lived consumers can depend on short-lived dependencies and control their lifecycle

Unfucked.DNS

  • Interface for Gandi LiveDNS HTTP API client to allow mocked testing isolation

Unfucked.ICS

  • Asynchronously serialize iCalendar files to a byte stream, to prevent Kestrel and IIS errors on synchronous I/O
  • Converters between the three implementations of a datetime used by Ical.Net, NodaTime, and .NET

Unfucked.OBS

  • Interface for Open Broadcaster Software Studio WebSocket API client to allow mocked testing isolation

Unfucked.PGP

  • Detached signing, where an ASCII-armored PGP signature is generated in a sidecar file, not inline wrapping the file being signed like in clearsigning

Unfucked.STUN

  • STUN client that retains the server that it was configured with, useful for error logging
  • Multi-server STUN client that transparently picks a random public STUN server from a constantly-updated list when sending a request, with retries and fallbacks if any of them fail
  • Thread-safe multi-server STUN client that can be used concurrently from multiple threads without conflicts

Unfucked.Twitch

  • Interface for Twitch HTTP API client to allow mocked testing isolation

Unfucked.Windows

  • Reliably detect when computer is entering and exiting standby
  • Kill the running screensaver
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 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. 
.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 is compatible. 
.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 (4)

Showing the top 4 NuGet packages that depend on Unfucked:

Package Downloads
Unfucked.Windows

Package Description

Unfucked.PGP

Package Description

Unfucked.DI

Package Description

Unfucked.STUN

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.0.0-beta3 95 9/30/2024
0.0.0-beta2 67 9/8/2024
0.0.0-beta1 59 9/7/2024
0.0.0-alpha2 51 9/7/2024
0.0.0-alpha1 69 8/10/2024