From 4b5e57d4893591953e2148e1eca25aaf3d2b2632 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 21 Jul 2025 17:07:50 +0300 Subject: [PATCH 01/26] Updated version --- src/Sharpify/CHANGELOG.md | 4 ++++ src/Sharpify/Sharpify.csproj | 6 +----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Sharpify/CHANGELOG.md b/src/Sharpify/CHANGELOG.md index 973dab4..5980d1c 100644 --- a/src/Sharpify/CHANGELOG.md +++ b/src/Sharpify/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## v2.5.1 + +* Some computed properties in `BufferWrapper{T}` were made `readonly` to hint the compiler to not create defensive copies. + ## v2.5.0 * Updated to support .NET 9.0 and optimized certain methods to use .NET 9 specific API's wherever possible. diff --git a/src/Sharpify/Sharpify.csproj b/src/Sharpify/Sharpify.csproj index 99be670..1956604 100644 --- a/src/Sharpify/Sharpify.csproj +++ b/src/Sharpify/Sharpify.csproj @@ -2,7 +2,7 @@ net9.0;net8.0 enable - 2.5.0 + 2.6.0 enable true David Shnayder @@ -28,8 +28,4 @@ - - - - From c94f695268e6eac5eda71ef0cb5d3ad4d003259e Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 21 Jul 2025 17:08:15 +0300 Subject: [PATCH 02/26] remove ide generated junk --- src/Sharpify/Sharpify.csproj.DotSettings | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 src/Sharpify/Sharpify.csproj.DotSettings diff --git a/src/Sharpify/Sharpify.csproj.DotSettings b/src/Sharpify/Sharpify.csproj.DotSettings deleted file mode 100644 index 89316e4..0000000 --- a/src/Sharpify/Sharpify.csproj.DotSettings +++ /dev/null @@ -1,2 +0,0 @@ - - Library \ No newline at end of file From 8fd1663bde99a094e203ee0e65af4c9bcddef233 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 21 Jul 2025 17:08:30 +0300 Subject: [PATCH 03/26] Made some computed properties readonly --- src/Sharpify/Collections/BufferWrapper{T}.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Sharpify/Collections/BufferWrapper{T}.cs b/src/Sharpify/Collections/BufferWrapper{T}.cs index f3c582d..f991fc1 100644 --- a/src/Sharpify/Collections/BufferWrapper{T}.cs +++ b/src/Sharpify/Collections/BufferWrapper{T}.cs @@ -65,10 +65,10 @@ public void Append(ReadOnlySpan items) { public void Advance(int count) => Position += count; /// - public Memory GetMemory(int sizeHint = 0) => throw new NotSupportedException("BufferWrapper does not support GetMemory"); + public readonly Memory GetMemory(int sizeHint = 0) => throw new NotSupportedException("BufferWrapper does not support GetMemory"); /// - public Span GetSpan(int sizeHint = 0) => _buffer.Slice(Position); + public readonly Span GetSpan(int sizeHint = 0) => _buffer.Slice(Position); /// /// Returns the character at the specified index. From fd585b223eb6cd2078167c2cff61822f53c81e47 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 11:34:31 +0200 Subject: [PATCH 04/26] Remove sub-project which are no longer relevant in this repo --- .gitattributes | 63 --- Sharpify.slnx | 6 - demos/Calc/Calc.sln | 16 - demos/Calc/Calc/Calc.csproj | 38 -- demos/Calc/Calc/Commands/AddCommand.cs | 25 - demos/Calc/Calc/Commands/DivideCommand.cs | 25 - demos/Calc/Calc/Commands/MultiplyCommand.cs | 25 - demos/Calc/Calc/Commands/SubtractCommand.cs | 35 -- demos/Calc/Calc/GlobalUsings.cs | 4 - demos/Calc/Calc/Program.cs | 29 -- demos/Calc/README.md | 17 - demos/Calc/yt.video.thumbnail.png | Bin 1324980 -> 0 bytes docs/10.-Sharpify.Data.md | 54 --- .../ArgumentsAccess.cs | 383 --------------- .../ArgumentsAccessMultiple.cs | 130 ------ .../ArgumentsCore.cs | 86 ---- .../CHANGELOG.md | 115 ----- .../CHANGELOGLATEST.md | 19 - .../CliBuilder.cs | 137 ------ .../CliMetadata.cs | 47 -- .../CliRunner.cs | 187 -------- .../CliRunnerConfiguration.cs | 52 --- src/Sharpify.CommandLineInterface/Command.cs | 58 --- .../ConfigurationEnums.cs | 47 -- .../Extensions.cs | 41 -- .../OutputHelper.cs | 34 -- src/Sharpify.CommandLineInterface/Parser.cs | 176 ------- src/Sharpify.CommandLineInterface/README.md | 230 --------- .../Sharpify.CommandLineInterface.csproj | 39 -- .../SynchronousCommand.cs | 21 - src/Sharpify.Data/Build.txt | 10 - src/Sharpify.Data/CHANGELOG.md | 174 ------- src/Sharpify.Data/CHANGELOGLATEST.md | 45 -- src/Sharpify.Data/DataChangeType.cs | 15 - src/Sharpify.Data/DataChangedEventArgs.cs | 21 - src/Sharpify.Data/DatabaseBase.cs | 166 ------- src/Sharpify.Data/DatabaseConfiguration.cs | 55 --- src/Sharpify.Data/DatabaseReads.cs | 304 ------------ src/Sharpify.Data/DatabaseRemovals.cs | 118 ----- src/Sharpify.Data/DatabaseSerialization.cs | 64 --- src/Sharpify.Data/DatabaseUpserts.cs | 223 --------- .../FlexibleDatabaseFilter{T}.cs | 130 ------ src/Sharpify.Data/GlobalSuppressions.cs | 8 - src/Sharpify.Data/Helper.cs | 167 ------- src/Sharpify.Data/IDatabaseFilter{T}.cs | 144 ------ src/Sharpify.Data/IFilterable{T}.cs | 35 -- .../MemoryPackDatabaseFilter{T}.cs | 97 ---- src/Sharpify.Data/README.md | 53 --- .../Serializers/AbstractSerializer.cs | 66 --- .../Serializers/DisabledSerializers.cs | 37 -- .../Serializers/EncryptedSerializer.cs | 67 --- .../IgnoreCaseEncryptedSerializer.cs | 48 -- .../Serializers/IgnoreCaseSerializer.cs | 57 --- src/Sharpify.Data/Serializers/Serializer.cs | 52 --- src/Sharpify.Data/Sharpify.Data.csproj | 45 -- .../AddCommand.cs | 40 -- .../ArgumentsIsolatedTests.cs | 269 ----------- .../CliBuilderTests.cs | 273 ----------- .../EchoCommand.cs | 16 - .../GlobalUsings.cs | 1 - .../Helper.cs | 11 - .../ParserArgumentsTests.cs | 178 ------- ...Sharpify.CommandLineInterface.Tests.csproj | 26 -- .../SingleCommand.cs | 37 -- .../xunit.runner.json | 7 - tests/Sharpify.Data.Tests/AssemblyInfo.cs | 1 - tests/Sharpify.Data.Tests/Color.cs | 10 - .../DatabaseEncryptedIgnoreCaseTests.cs | 369 --------------- .../DatabaseEncryptedTests.cs | 365 --------------- .../DatabaseIgnoreCaseTests.cs | 368 --------------- tests/Sharpify.Data.Tests/DatabaseTests.cs | 441 ------------------ tests/Sharpify.Data.Tests/Dog.cs | 8 - tests/Sharpify.Data.Tests/FactoryResult.cs | 5 - tests/Sharpify.Data.Tests/GlobalUsings.cs | 1 - tests/Sharpify.Data.Tests/HelperTests.cs | 61 --- tests/Sharpify.Data.Tests/JsonContext.cs | 7 - tests/Sharpify.Data.Tests/Person.cs | 6 - .../Sharpify.Data.Tests.csproj | 31 -- tests/Sharpify.Data.Tests/User.cs | 36 -- 79 files changed, 6907 deletions(-) delete mode 100644 .gitattributes delete mode 100644 Sharpify.slnx delete mode 100644 demos/Calc/Calc.sln delete mode 100644 demos/Calc/Calc/Calc.csproj delete mode 100644 demos/Calc/Calc/Commands/AddCommand.cs delete mode 100644 demos/Calc/Calc/Commands/DivideCommand.cs delete mode 100644 demos/Calc/Calc/Commands/MultiplyCommand.cs delete mode 100644 demos/Calc/Calc/Commands/SubtractCommand.cs delete mode 100644 demos/Calc/Calc/GlobalUsings.cs delete mode 100644 demos/Calc/Calc/Program.cs delete mode 100644 demos/Calc/README.md delete mode 100644 demos/Calc/yt.video.thumbnail.png delete mode 100644 docs/10.-Sharpify.Data.md delete mode 100644 src/Sharpify.CommandLineInterface/ArgumentsAccess.cs delete mode 100644 src/Sharpify.CommandLineInterface/ArgumentsAccessMultiple.cs delete mode 100644 src/Sharpify.CommandLineInterface/ArgumentsCore.cs delete mode 100644 src/Sharpify.CommandLineInterface/CHANGELOG.md delete mode 100644 src/Sharpify.CommandLineInterface/CHANGELOGLATEST.md delete mode 100644 src/Sharpify.CommandLineInterface/CliBuilder.cs delete mode 100644 src/Sharpify.CommandLineInterface/CliMetadata.cs delete mode 100644 src/Sharpify.CommandLineInterface/CliRunner.cs delete mode 100644 src/Sharpify.CommandLineInterface/CliRunnerConfiguration.cs delete mode 100644 src/Sharpify.CommandLineInterface/Command.cs delete mode 100644 src/Sharpify.CommandLineInterface/ConfigurationEnums.cs delete mode 100644 src/Sharpify.CommandLineInterface/Extensions.cs delete mode 100644 src/Sharpify.CommandLineInterface/OutputHelper.cs delete mode 100644 src/Sharpify.CommandLineInterface/Parser.cs delete mode 100644 src/Sharpify.CommandLineInterface/README.md delete mode 100644 src/Sharpify.CommandLineInterface/Sharpify.CommandLineInterface.csproj delete mode 100644 src/Sharpify.CommandLineInterface/SynchronousCommand.cs delete mode 100644 src/Sharpify.Data/Build.txt delete mode 100644 src/Sharpify.Data/CHANGELOG.md delete mode 100644 src/Sharpify.Data/CHANGELOGLATEST.md delete mode 100644 src/Sharpify.Data/DataChangeType.cs delete mode 100644 src/Sharpify.Data/DataChangedEventArgs.cs delete mode 100644 src/Sharpify.Data/DatabaseBase.cs delete mode 100644 src/Sharpify.Data/DatabaseConfiguration.cs delete mode 100644 src/Sharpify.Data/DatabaseReads.cs delete mode 100644 src/Sharpify.Data/DatabaseRemovals.cs delete mode 100644 src/Sharpify.Data/DatabaseSerialization.cs delete mode 100644 src/Sharpify.Data/DatabaseUpserts.cs delete mode 100644 src/Sharpify.Data/FlexibleDatabaseFilter{T}.cs delete mode 100644 src/Sharpify.Data/GlobalSuppressions.cs delete mode 100644 src/Sharpify.Data/Helper.cs delete mode 100644 src/Sharpify.Data/IDatabaseFilter{T}.cs delete mode 100644 src/Sharpify.Data/IFilterable{T}.cs delete mode 100644 src/Sharpify.Data/MemoryPackDatabaseFilter{T}.cs delete mode 100644 src/Sharpify.Data/README.md delete mode 100644 src/Sharpify.Data/Serializers/AbstractSerializer.cs delete mode 100644 src/Sharpify.Data/Serializers/DisabledSerializers.cs delete mode 100644 src/Sharpify.Data/Serializers/EncryptedSerializer.cs delete mode 100644 src/Sharpify.Data/Serializers/IgnoreCaseEncryptedSerializer.cs delete mode 100644 src/Sharpify.Data/Serializers/IgnoreCaseSerializer.cs delete mode 100644 src/Sharpify.Data/Serializers/Serializer.cs delete mode 100644 src/Sharpify.Data/Sharpify.Data.csproj delete mode 100644 tests/Sharpify.CommandLineInterface.Tests/AddCommand.cs delete mode 100644 tests/Sharpify.CommandLineInterface.Tests/ArgumentsIsolatedTests.cs delete mode 100644 tests/Sharpify.CommandLineInterface.Tests/CliBuilderTests.cs delete mode 100644 tests/Sharpify.CommandLineInterface.Tests/EchoCommand.cs delete mode 100644 tests/Sharpify.CommandLineInterface.Tests/GlobalUsings.cs delete mode 100644 tests/Sharpify.CommandLineInterface.Tests/Helper.cs delete mode 100644 tests/Sharpify.CommandLineInterface.Tests/ParserArgumentsTests.cs delete mode 100644 tests/Sharpify.CommandLineInterface.Tests/Sharpify.CommandLineInterface.Tests.csproj delete mode 100644 tests/Sharpify.CommandLineInterface.Tests/SingleCommand.cs delete mode 100644 tests/Sharpify.CommandLineInterface.Tests/xunit.runner.json delete mode 100644 tests/Sharpify.Data.Tests/AssemblyInfo.cs delete mode 100644 tests/Sharpify.Data.Tests/Color.cs delete mode 100644 tests/Sharpify.Data.Tests/DatabaseEncryptedIgnoreCaseTests.cs delete mode 100644 tests/Sharpify.Data.Tests/DatabaseEncryptedTests.cs delete mode 100644 tests/Sharpify.Data.Tests/DatabaseIgnoreCaseTests.cs delete mode 100644 tests/Sharpify.Data.Tests/DatabaseTests.cs delete mode 100644 tests/Sharpify.Data.Tests/Dog.cs delete mode 100644 tests/Sharpify.Data.Tests/FactoryResult.cs delete mode 100644 tests/Sharpify.Data.Tests/GlobalUsings.cs delete mode 100644 tests/Sharpify.Data.Tests/HelperTests.cs delete mode 100644 tests/Sharpify.Data.Tests/JsonContext.cs delete mode 100644 tests/Sharpify.Data.Tests/Person.cs delete mode 100644 tests/Sharpify.Data.Tests/Sharpify.Data.Tests.csproj delete mode 100644 tests/Sharpify.Data.Tests/User.cs diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1ff0c42..0000000 --- a/.gitattributes +++ /dev/null @@ -1,63 +0,0 @@ -############################################################################### -# Set default behavior to automatically normalize line endings. -############################################################################### -* text=auto - -############################################################################### -# Set default behavior for command prompt diff. -# -# This is need for earlier builds of msysgit that does not have it on by -# default for csharp files. -# Note: This is only used by command line -############################################################################### -#*.cs diff=csharp - -############################################################################### -# Set the merge driver for project and solution files -# -# Merging from the command prompt will add diff markers to the files if there -# are conflicts (Merging from VS is not affected by the settings below, in VS -# the diff markers are never inserted). Diff markers may cause the following -# file extensions to fail to load in VS. An alternative would be to treat -# these files as binary and thus will always conflict and require user -# intervention with every merge. To do so, just uncomment the entries below -############################################################################### -#*.sln merge=binary -#*.csproj merge=binary -#*.vbproj merge=binary -#*.vcxproj merge=binary -#*.vcproj merge=binary -#*.dbproj merge=binary -#*.fsproj merge=binary -#*.lsproj merge=binary -#*.wixproj merge=binary -#*.modelproj merge=binary -#*.sqlproj merge=binary -#*.wwaproj merge=binary - -############################################################################### -# behavior for image files -# -# image files are treated as binary by default. -############################################################################### -#*.jpg binary -#*.png binary -#*.gif binary - -############################################################################### -# diff behavior for common document formats -# -# Convert binary document formats to text before diffing them. This feature -# is only available from the command line. Turn it on by uncommenting the -# entries below. -############################################################################### -#*.doc diff=astextplain -#*.DOC diff=astextplain -#*.docx diff=astextplain -#*.DOCX diff=astextplain -#*.dot diff=astextplain -#*.DOT diff=astextplain -#*.pdf diff=astextplain -#*.PDF diff=astextplain -#*.rtf diff=astextplain -#*.RTF diff=astextplain diff --git a/Sharpify.slnx b/Sharpify.slnx deleted file mode 100644 index 808ae74..0000000 --- a/Sharpify.slnx +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/demos/Calc/Calc.sln b/demos/Calc/Calc.sln deleted file mode 100644 index 89dd4a2..0000000 --- a/demos/Calc/Calc.sln +++ /dev/null @@ -1,16 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calc", "Calc\Calc.csproj", "{FEBFD7FC-632D-4EC7-87E0-6802B6DB30FD}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FEBFD7FC-632D-4EC7-87E0-6802B6DB30FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FEBFD7FC-632D-4EC7-87E0-6802B6DB30FD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FEBFD7FC-632D-4EC7-87E0-6802B6DB30FD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FEBFD7FC-632D-4EC7-87E0-6802B6DB30FD}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/demos/Calc/Calc/Calc.csproj b/demos/Calc/Calc/Calc.csproj deleted file mode 100644 index f2ce22c..0000000 --- a/demos/Calc/Calc/Calc.csproj +++ /dev/null @@ -1,38 +0,0 @@ - - - Exe - net8.0 - enable - enable - true - true - - - - Calc - Calc - com.calc.demo.macos - 1.0.0 - Major - APPL - ???? - Calc - NSApplication - true - - - - - - Calc URL - Calc;Calc:// - - - - - - - - - diff --git a/demos/Calc/Calc/Commands/AddCommand.cs b/demos/Calc/Calc/Commands/AddCommand.cs deleted file mode 100644 index 555babb..0000000 --- a/demos/Calc/Calc/Commands/AddCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Calc.Commands; - -public class AddCommand : SynchronousCommand { - public override string Name => "Add"; - - public override string Description => "Add two numbers"; - - public override string Usage => "Add "; - - public override int Execute(Arguments args) { - if (!args.TryGetValue(0, default(int), out var a)) { - Console.WriteLine("Invalid number 1"); - return 1; - } - - if (!args.TryGetValue(1, 0, out var b)) { - Console.WriteLine("Number 2 defaulted to 0"); - // return 1; - } - - Console.WriteLine($"{a} + {b} = {a + b}"); - - return 0; - } -} \ No newline at end of file diff --git a/demos/Calc/Calc/Commands/DivideCommand.cs b/demos/Calc/Calc/Commands/DivideCommand.cs deleted file mode 100644 index 1d97c0c..0000000 --- a/demos/Calc/Calc/Commands/DivideCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Calc.Commands; - -public class DivideCommand : SynchronousCommand { - public override string Name => "Divide"; - - public override string Description => "Divide one number by another"; - - public override string Usage => "Divide "; - - public override int Execute(Arguments args) { - if (!args.TryGetValue(0, 0, out var a)) { - Console.WriteLine("Invalid number 1"); - return 1; - } - - if (!args.TryGetValue(1, 0, out var b) || b == 0) { - Console.WriteLine("Invalid number 2"); - return 1; - } - - Console.WriteLine($"{a} / {b} = {a / b}"); - - return 0; - } -} \ No newline at end of file diff --git a/demos/Calc/Calc/Commands/MultiplyCommand.cs b/demos/Calc/Calc/Commands/MultiplyCommand.cs deleted file mode 100644 index 6bf3c2b..0000000 --- a/demos/Calc/Calc/Commands/MultiplyCommand.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Calc.Commands; - -public class MultiplyCommand : SynchronousCommand { - public override string Name => "Multiply"; - - public override string Description => "Multiply two numbers"; - - public override string Usage => "Multiply -a -b "; - - public override int Execute(Arguments args) { - if (!args.TryGetValue("a", 0, out var a)) { - Console.WriteLine("Invalid number 1"); - return 1; - } - - if (!args.TryGetValue("b", 0, out var b)) { - Console.WriteLine("Invalid number 2"); - return 1; - } - - Console.WriteLine($"{a} * {b} = {a * b}"); - - return 0; - } -} \ No newline at end of file diff --git a/demos/Calc/Calc/Commands/SubtractCommand.cs b/demos/Calc/Calc/Commands/SubtractCommand.cs deleted file mode 100644 index 8fed891..0000000 --- a/demos/Calc/Calc/Commands/SubtractCommand.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace Calc.Commands; - -public class SubtractCommand : SynchronousCommand { - public override string Name => "Subtract"; - - public override string Description => "Subtract one number from another"; - - public override string Usage => - """ - Subtract [options] - Options: - --hex - Display the result in hexadecimal"; - """; - - public override int Execute(Arguments args) { - if (!args.TryGetValue(0, 0, out int a)) { - Console.WriteLine("Invalid number 1"); - return 1; - } - - if (!args.TryGetValue(1, 0, out int b)) { - Console.WriteLine("Invalid number 2"); - return 1; - } - - if (args.HasFlag("hex")) { - Console.WriteLine($"{a} - {b} = {a - b:X}"); - return 0; - } else { - Console.WriteLine($"{a} - {b} = {a - b}"); - } - - return 0; - } -} \ No newline at end of file diff --git a/demos/Calc/Calc/GlobalUsings.cs b/demos/Calc/Calc/GlobalUsings.cs deleted file mode 100644 index 67e7eb2..0000000 --- a/demos/Calc/Calc/GlobalUsings.cs +++ /dev/null @@ -1,4 +0,0 @@ -global using Sharpify.CommandLineInterface; -global using Sharpify; - -namespace Calc; \ No newline at end of file diff --git a/demos/Calc/Calc/Program.cs b/demos/Calc/Calc/Program.cs deleted file mode 100644 index b4b8a0e..0000000 --- a/demos/Calc/Calc/Program.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Calc.Commands; - -namespace Calc; - -public class Program { - private static ReadOnlySpan Commands => new Command[] { - new AddCommand(), - new SubtractCommand(), - new MultiplyCommand(), - new DivideCommand() - }; - - static async Task Main(string[] args) { - var runner = CliRunner.CreateBuilder() - .AddCommands(Commands) - .SortCommandsAlphabetically() - .UseConsoleAsOutputWriter() - .WithMetadata(metadata => { - metadata.Name = "Calc"; - metadata.Description = "A simple calculator"; - metadata.Version = "1.0.0"; - metadata.Author = "Dave"; - metadata.License = "MIT"; - }) - .Build(); - - return await runner.RunAsync(args); - } -} \ No newline at end of file diff --git a/demos/Calc/README.md b/demos/Calc/README.md deleted file mode 100644 index 13ab2ee..0000000 --- a/demos/Calc/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Calc - -Calc is a demo to showcase the capabilities of `Sharpify.CommandLineInterface` by creating a NativeAot compatible calculator cli. - -## Guide - -This demo is accompanied by a YouTube video showcasing the package and this project, watch it here: - -[![Your new favorite CLI framework for C# - Sharpify.CommandLineInterface showcase](https://github.com/dusrdev/Sharpify/blob/main/demos/Calc/yt.video.thumbnail.png)](https://www.youtube.com/watch?v=bcuPY96Zr4k) - -## Map of file -> feature - -* `Program.cs` shows the main entry point and `CliRunner` -* `AddCommand.cs` shows positional and optional arguments -* `SubtractCommand.cs` shows positional arguments and flags -* `DivideCommand.cs` shows additional validation logic -* `MultiplyCommand.cs` shows how to use named arguments diff --git a/demos/Calc/yt.video.thumbnail.png b/demos/Calc/yt.video.thumbnail.png deleted file mode 100644 index f776454f2d97e42b1d5a144181e70209d9310f89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1324980 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�dyVmZs>Upl%xCEM;=@7I73~ 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%0D{hj zey4PXcL6N#h8|%ZRgrOadBMqI3C<$4!Z^?K=g(R18utBwbq+g>;2ctTEMc=uY0Ydl zr<&IYJpHq0nEe)|mk;q{2iI5Va>j1ofN_-Gpymtk5-AOT@T}p#{*~YRf!0yS z$E!AEUk=NDz@^#`e7q3ce~Kfm=Z@EsFB1g}F$*WYR=gNre81zB9~D1XT^!b-pXN(1 zojZNU5kL^_!+JcW1!sOr=S^)m#)?exQn?6mQOb%^F=k2zlZgo=)g);oMaY^u2Hu>D zX}cU{`b8kY#+WcB6&2G2zAR+)KBES*9=VJVQFrpDhG5^tG{ul&&N%n!vw;NH~f5>IuX%c1m6C-NbrK zDZmMs%w%AM9mnY@bE>sRTJnBkX8Ks4{^%;_tsi5gvM|FBI#)w#ead9k0yh8~%pTVjMJ`HmfFaaHsI}j0! zlj)o${OBBt+0<9;0J~k#GL&)LlCJNkv85w+Wd;wj(0(5e z0UU|czhya}(KZdE zv0R*;qVbefK|PzZ-rNMk5nbb=qve2Lx4Gl)`A0PS4JL|;uP*N6rK0N^%CaC+3On{V z(~;{8sdILB*PK+EcYo+}%x4wCjm#Dm%kwjCuhv|D@`S$I0+u4ns1`FoP|ufG6i=T$ z#dyd3^pc{i8Lh?i4f~s?cr$YEwKrLvU65Bfmk%#^^yceGCFpOjQFVpV62ITz#}U_c zI5X02cU)iHP?QDxeZ!M)y~pNeO=}(1a)B9Io;?1LcDHA_T5<8{0cQOSQ7@45InBo( zBB~kXkNh~o4D_FTM8DnAY}Z)p$crkZ#a0#08OEV!x8Lyp_^bZ~pFF;%sxwCCLJEX+ zjLtKg&GFu`YZ?R+tz~e{bU_!&Iar-P;{4u2lnm~t#stUVEYDF&M=d=l$`ITsrO?sP zz>I-KCUr>R#W|d{%ummlEmuJ=Fbd5NLr-4T3`>L% z5W4<~CDHw;AZgYzr4MjC$fA@^O>zJS4N9de(yTuMY zcIePW$=G#t+cn^jQeaGv)EXfaUTAb#1t3ZYve_J+mAJm8K0To-1M5--g<@Wl9X0yf#iL)YTv^j_Iimta~<_p?<4%k z*lcmuqLd~p3J@|p>r_ToFDS|q?<`qfqNKt)gHQoH(^;4gGo3SzVIx9nMHbChln$R! zQbs@}JP?f;ao&?<8A^%3$dd}CbYT5Chstt_yu_J-zT4v?Yc|UZvMk406OB(aZfHp^ z#7c+rI2XsGE|^sdl#uM(EzVmq8CL&UmIqBvDWd6vVYOUwx7jd^Aw5`WMUhFAE_n9* zIj`NjKr01y#369jqP37$#7Z>0hTIXzc4M@c&pM1i4v*WEd-k``OWnH0^#5zYei~&4Sl4jS_ zZPt9@?R#{_@$6HQd8s^&+i(BsJl{?Ion;!&Fw8BE==pH zin^&9DFmY#>HC4PA8B?S?Y>2LLp3ibtCHEQVm4nL76(~bqoj^P>Oq4w%S)ut2hdtY z;IGJo>4;Ja9a*XY+z6XBQYn;Dc<;kTO;%#8r`hj0Jvrsxy^Em#Syp64j*0rg`?g^i zM~1;L4i4i5)ojLmvE=OX42{P&TVz$Evz&H)%g_y!TA@!C$oY)%{cj^}VD9d_F37tq zPq4#)+TQa1*7G-i@i#vGT8b9|l0@40j`h|{zr{=j-FV}otd@@wQ8E5G7;D7X#>VR> zR#rMsN>S84#2$qR3&)|1Py1M`W&}&U-Y4 zy!hs;ULN(~G=|c+vLdqDMDRsO48)xa9urnhF>e}sY23Ql7Dl`X(n}EN%5Va!eKIf>2K2ajwbN$1^{|7vE~LD{;uLAk;NS9CU$}( zBAF)rMDNv1Xt8v#&``PXw~ztQ=prJG52=-NISG0q0{FK#ai`_Dkg?OH%1(Ck-iN{a z({CuW^gL|>^ULTk0OuY|766s`2!HM^_$U6{5(>xFw|D&VFMB?2K+eOYWL>yV>%v5l z>M+%xj6l{wWiZuQd;y~H$RzfwB)*%#Pw&EY6DXQ?6^H|T0M-P}y)o9Oiw{#xc(5rK9ww_YeCBE& zzLO}-hbBvHMPSZ3f@Z)h13SiZ$3Cayz%jAj^7!CSdK38${*|Bj9KZ67Z}E5s|KtLe z60SxLuFXP(^CZwtN)B3SFJn*E-p*^!k6B8p}%mM0i9P*fG?=a+Q5b#x6?bj>;l z)O#>OP?rTWC4>8_&M?-H&lfcNp2v?rAzz%5)PR<{o^ODW_hFmG; zRf(}ZV?R(8fhE}N_RMn4+pk^n=+Pya5{RMU^kjkS2R``vH@UkFZl`CLXGjrr>@ub4 z`!R^(7ZrGcH)BZ0te1GLp{kiJ7i3~YnUQ&2aejV^R~de`K(9^_CntF4g07<04EsIL zpI;%QU~zKF_3bTI2(~wOY;LZZpIst_X1Q80Tb}Ub!;iRm@|Xv&-)H{t9=_Y4=L^IL zcE2aT_W)TGY`*?`w7WIdd9t#kS}rlx)3;j&KXCuv13voX8UL4m_pg#GjZlKo`MAJ! z+t2HcPR4!;HgXp(7~EX?@TC!lp$~(h5(xAV6>o= zVvNp^Wl=GXBYoE);v^%aL`Tc7st(33MO8y&cP>uPFk^=`hH|#VI*Sw%=N+q)b9{2I zv?JDzWO>Qv>Bn@%MjxVA+KPgYjAW(VVlE{nj% z5`wHK4~($H6ch-W^=$+-BlGO`31hb0Q&Rb+&GFzM=lxBYM8s7Gd-3~Vz z`t>H5F4QH(tb)i2>^EzMwn60;Sy=-THw<`Z@xrk@IYmj0=>|Lk=^aC}!+Xbkxdc1X zw>!X+l@;}TiOM7*)8uuD%5+SD1}Otm%?gPdNBaFXq;KaX4v)%ZFk0z*hQ6WS?=fQ# ziRhb#X18N#d-iQhwK_rRoTty8W4%ClLDOuxxw*m%jnILKs-+HK>Gq0Yzrh+yFgY+N zl_PaVy*P`^@X&v~_kqdh3{|xtFH1ZEYevl2;hjfGg;Xj4b>1VT#tc1n7?21?GsHDw z;AG`_U~yR&QZ4Z!qz-ot)(qr%MZ4e8wtJLTl*Jr`40A66sRUUyLuCbK7_fbdv%vv6 zFtsg82Q!&*?5L{+Qe|wmJFE-t!(rj9(Nd!0oLl4})w%Bn`f;G?I+~_sSr_ychN0)3 z*Y7i!kvhxhtiw6W`EpJs1)JV5b_4g$PPn>TW38pslF@p+fTvd*PUi(*c;kZgzURZ6 zmaFS6j9Xs2e?r@j+^%=jdBM%?9nL!z^BGbK&d!$PWriIr#u*l?1;a3~yIZ5Pf~&hN zvnu09KmQtwD&zf+uNgdS2N;@;&%X1B!NSMSZmEibzH8ZcBR~7k{5WsFvEb{!{dEdq z_`TozkejD#KKIroUwHeJZ@z!ScHi*YgB5j^({=EwLqD=^JSV58oGq7}oUOQjdCKc=-Q(VaQ?8!f(f1uvN_I`l zX1^!X1$i`;>BpX~Zz#*K@nD^&E^F$#VzxYq?N2n831D5Wi!iUpJ{QE5e9)TAvcOhU zA?;i%NuFzpGJuL@o<)#fM9?KfS49yRe8VsV1HW0tVm6~Ha`HT5wwP0vInEeH8|G(E zV0n1qF@1~Z2WDl-;^8BTi+dFJ?&125nBsonJKDk0dx0|}%2=x9 z98u=n?MMEDzx5A3^*T!Meb!_zub*N}caWeVZlwBGulHVFd;OrtcP-b;@dV%dUebCo zkq1&(^r~~eAW6k^uL2HftcfJ?0sxx6;=jv@zu!H*q8!Ixa`C-9#%gK3p3-+y7ED?X zTQPxf=~Pm25cAJO_*-WjQel&Bog{)XKAh*+an;B2NIS)d>gc*j_wP^*iABb=URMM| zjVcT2w3P_4u#PcDN|il0_r`mcM|C1NieJSMmLMili4YuEcq+z6wF)s$En+O}r}|4e zi_%Ywz>E+ttTK35gmP~!JU1a8O2i}L*f4M~rfB_SfYL`i;y^HoZJNj}xqz7rfM{xO zPfY9e;k&(`(tnTpNCK3sf3e?uN8QBxm5C)7v5nIV76c4L$NJy-iKKMs`!LBZz0~(# zJ`(ZcRsB7c3nDvLM52ui;8X8lN5Gay_(|-C#P)JTDKURUQaNgO;9&kD{1MqGWd|nk zTTC%`BBC9a`Jnq3??2UB%IXw0oI9^zk-<_xS%%m0NP^7A^kyl-972q%#QIRI zzf*#Gm@U4Xm{JK~6L8SgN|VGP{r9`fc4;CJsbTrf4kKUjJ$dv`O#nrR6Gh>JkiYel z;OH1DJnc9frzs~v#xe`92M1O|OGLoqeHB2ZL&~TWp)xxgG~TSAfX)PdrithIGxz|0`8Rg_;1)Gq?9#4;y6!bBy_Vm;$Sj=54{K)9G9iy)?2aiEY30`o4>o~@h8 z=2HhgjIcN;)4+@GD{(aOq;jV+#(UK9Cl`UqS4V2QCxBza0HzC_dsf8`K869aEQ3>z z&{IE5D1WlfHnBZZ3UH#y3o!wyDh?i{;?A25j<{PJ0NOOkJ2@>th!2}Z7A9X~;M%~J zsc*i#kdU!IYT)5K>^g1xK+}HZFcVY17$b-|4)8Dkksro1d+u*G{0pBA_3%LlcVqng zF+%S`-_GL$v;$@Z{2TwmDc}0dXZ)w%9)R%RfWSOVDaymqg#4*iJU_s3SkN%_3D5Ti z|I+u;12GLBMd+t*uHXW=8^ZrT*iF~?MoE^xEJZM>&;PviIPg%{7LbAJlij*FeRoq=aW9;{#&l^LoOKiJi>^oGJF+V$D zwK}11d!&PHv&RXji;{M~VL)*2(PtUj7HbXTXxOfwQ{*}QzM*M#6aE0E6f z+S!~R`od=@wL_Yb3`M)$a{K%##(A9gR7DncWW7hIf?>bs?)fu>($sa0>soG~KBnF7 zXm>5Uo9EPp=JMV{3JD5>mY)67kC1gmQC0XXL(W#PxxqUbA3}z*o}r5xRTM1FE@}2H z{V<^NB7k@EocUrN*&cgVr>9󻈕%nC=G`RIG)_VG9ACZ}np>5gk8|Ie}D3?KF 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 z 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

JU&!|@$jMf6?mla{0n6~%Ws0jNl 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�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 Xl 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�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 z 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%0DxJ%oVH;uK0L_xKk2 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

+j}nN|N+p5x#9GVoV9C1vHcKB%QIrvB^N5sI_p` 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"Brian", new("Bipedal Talking Dog", 20)); -Dog? brian = database.Get("Brian"); // Get returns null if the key doesn't exist -// because SerializeOnUpdate options was chosen, it will handle this automatically -// otherwise use .Serialize() or .SerializeAsync() -// We also use the filter -var table = Database.CreateMemoryPackFilter(); -table.Upsert("Buster", new Dog("Buster", 5)); -bool exists = table.TryGetValue("Buster", out Dog buster); -``` - -#### FlexibleDatabaseFilter{T} - -As an alternative to `MemoryPackable` the database also has an option to create a `FlexibleDatabaseFilter{T}`. This filter can be used when you want to implement easy access to the existing apis with a type that can't implement `IMemoryPackable{T}`, one example would be collections. - -For that the type itself, would need to implement the interface `IFilterable{T}`. If the type has the `MemoryPackable` attribute, it means the serializer knows how to handle it, it would be required to add practically a single line of code to each of the methods from `IFilterable{T}` to implement it. If some methods aren't required, you could simply `return null;`. - -When your type lets say `TCustom` implements `IFilterable`, the following method will become available: - -```csharp -var table = Database.CreateFlexibleFilter(); -``` - -this filter implements the same interface as the `MemoryPackFilter` and will support the same apis. To allow a very uniform and cohesive codebase. diff --git a/src/Sharpify.CommandLineInterface/ArgumentsAccess.cs b/src/Sharpify.CommandLineInterface/ArgumentsAccess.cs deleted file mode 100644 index eb05cfe..0000000 --- a/src/Sharpify.CommandLineInterface/ArgumentsAccess.cs +++ /dev/null @@ -1,383 +0,0 @@ -using System.Globalization; - -namespace Sharpify.CommandLineInterface; - -public sealed partial class Arguments { - ///

- /// Checks if the specified key exists in the arguments. - /// - /// The key to check. - /// True if the key exists, false otherwise. - public bool Contains(string key) => _arguments.ContainsKey(key); - - /// - /// Checks if the specified positional argument exists in the arguments. - /// - /// The positional argument to check. - /// True if the key exists, false otherwise. - public bool Contains(int position) => Contains(position.ToString()); - - /// - /// Checks if the specified flag is present in the arguments. - /// - /// The flag to check. - /// True if the flag is present and has no value; otherwise, false. - /// - /// This is not the same as as this also checks that the value is empty, which is not the case for named arguments that can also be detected by - /// - public bool HasFlag(string flag) => _arguments.TryGetValue(flag, out string? val) && val.Length is 0; - - /// - /// Tries to retrieve the value of a positional argument. - /// - /// The key to check. - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// true if the key exists, false otherwise. - public bool TryGetValue(int position, out string value) => TryGetValue(position.ToString(), out value); - - /// - /// Tries to retrieve the value of a specified key in the arguments. - /// - /// The key to check. - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// true if the key exists, false otherwise. - public bool TryGetValue(string key, out string value) { - if (!_arguments.TryGetValue(key, out var res)) { - value = string.Empty; - return false; - } - value = res; - return true; - } - - /// - /// Tries to retrieve a value of one of a specified key's aliases in the arguments. - /// - /// A collection of aliases for a parameter name - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// true if the key exists, false otherwise. - public bool TryGetValue(ReadOnlySpan keys, out string value) - => _arguments.TryGetValue(keys, out value); - - /// - /// Tries to retrieve the value of the positional argument in the arguments. - /// - /// The positional argument to check. - /// The default value to return if the key doesn't exist. - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// - /// - /// If the key doesn't exist or can't be parsed, the default value will be used in the out parameter. - /// - /// - /// The default value makes it very easy to default to some value that is used later even if not provided, for example: a downloader may accept the number of parallel connections as a parameter, but it should always default to some number, so you could put it here. Saving a few lines of code for checking and reverting to default yourself. - /// - /// - /// true if the key exists, false otherwise. - public bool TryGetValue(int position, T defaultValue, out T value) where T : IParsable => TryGetValue(position.ToString(), defaultValue, out value); - - /// - /// Tries to retrieve the value of a specified key in the arguments. - /// - /// The key to check. - /// The default value to return if the key doesn't exist. - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// - /// - /// If the key doesn't exist or can't be parsed, the default value will be used in the out parameter. - /// - /// - /// The default value makes it very easy to default to some value that is used later even if not provided, for example: a downloader may accept the number of parallel connections as a parameter, but it should always default to some number, so you could put it here. Saving a few lines of code for checking and reverting to default yourself. - /// - /// - /// true if the key exists, false otherwise. - public bool TryGetValue(string key, T defaultValue, out T value) where T : IParsable { - if (!TryGetValue(key, out string val)) { - value = defaultValue; - return false; - } - var wasParsed = T.TryParse(val, CultureInfo.CurrentCulture, out T? result); - if (!wasParsed) { - value = defaultValue; - return false; - } - value = result!; - return true; - } - - /// - /// Tries to retrieve the value of a either of specified key's aliases in the arguments. - /// - /// A collection of aliases for a parameter name - /// The default value to return if the key doesn't exist. - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// - /// - /// If the key doesn't exist or can't be parsed, the default value will be used in the out parameter. - /// - /// - /// The default value makes it very easy to default to some value that is used later even if not provided, for example: a downloader may accept the number of parallel connections as a parameter, but it should always default to some number, so you could put it here. Saving a few lines of code for checking and reverting to default yourself. - /// - /// - /// true if the key exists, false otherwise. - public bool TryGetValue(ReadOnlySpan keys, T defaultValue, out T value) where T : IParsable { - if (!TryGetValue(keys, out string val)) { - value = defaultValue; - return false; - } - var wasParsed = T.TryParse(val, CultureInfo.CurrentCulture, out T? result); - if (!wasParsed) { - value = defaultValue; - return false; - } - value = result!; - return true; - } - - /// - /// Returns the value of the argument, or default if it fails to parse or key didn't exist. - /// - /// - /// The key of the argument to check - /// The default value to return if the argument doesn't exist or can't be parsed - /// The value of the argument - public T GetValue(string key, T defaultValue) where T : IParsable { - _ = TryGetValue(key, defaultValue, out var value); - return value; - } - - /// - /// Returns the value of the positional argument, or default if it fails to parse or key didn't exist. - /// - /// - /// The position of the argument to check - /// The default value to return if the argument doesn't exist or can't be parsed - /// Value of the argument - public T GetValue(int position, T defaultValue) where T : IParsable { - _ = TryGetValue(position, defaultValue, out var value); - return value; - } - - /// - /// Returns the value of the either of the key aliases, or default if it fails to parse or key didn't exist. - /// - /// - /// - /// - /// - public T GetValue(ReadOnlySpan keys, T defaultValue) where T : IParsable { - _ = TryGetValue(keys, defaultValue, out var value); - return value; - } - - /// - /// Tries to retrieve the enum value of a specified key in the arguments. - /// - /// The positional argument to check. - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// - /// If the key doesn't exist or can't be parsed, the the default(TEnum) will be used in the out parameter, this overloads also implies that the enum will be parsed case-sensitive - /// - /// true if the key exists, false otherwise. - public bool TryGetEnum(int position, out TEnum value) where TEnum : struct, Enum => TryGetEnum(position.ToString(), default, false, out value); - - /// - /// Tries to retrieve the enum value of a specified key in the arguments. - /// - /// The positional argument to check. - /// Whether to ignore case in parsing the enum - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// - /// If the key doesn't exist or can't be parsed, the default(TEnum) will be used in the out parameter. - /// - /// true if the key exists, false otherwise. - public bool TryGetEnum(int position, bool ignoreCase, out TEnum value) where TEnum : struct, Enum => TryGetEnum(position.ToString(), default, ignoreCase, out value); - - /// - /// Tries to retrieve the enum value of a specified key in the arguments. - /// - /// The positional argument to check. - /// The default value to return if the key doesn't exist. - /// Whether to ignore case in parsing the enum - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// - /// If the key doesn't exist or can't be parsed, the default value will be used in the out parameter. - /// - /// true if the key exists, false otherwise. - public bool TryGetEnum(int position, TEnum defaultValue, bool ignoreCase, out TEnum value) where TEnum : struct, Enum => TryGetEnum(position.ToString(), defaultValue, ignoreCase, out value); - - /// - /// Tries to retrieve the enum value of a specified key in the arguments. - /// - /// The key to check. - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// - /// If the key doesn't exist or can't be parsed, the default(TEnum) will be used in the out parameter, this overloads also implies that the enum will be parsed case-sensitive - /// - /// true if the key exists, false otherwise. - public bool TryGetEnum(string key, out TEnum value) where TEnum : struct, Enum => - TryGetEnum(key, default, false, out value); - - /// - /// Tries to retrieve the enum value of a specified key in the arguments. - /// - /// The key to check. - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// Whether to ignore case in parsing the enum - /// - /// If the key doesn't exist or can't be parsed, the default(TEnum) will be used in the out parameter. - /// - /// true if the key exists, false otherwise. - public bool TryGetEnum(string key, bool ignoreCase, out TEnum value) where TEnum : struct, Enum => - TryGetEnum(key, default, ignoreCase, out value); - - /// - /// Tries to retrieve the enum value of a specified key in the arguments. - /// - /// The key to check. - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// The default value to return if the key doesn't exist. - /// Whether to ignore case in parsing the enum - /// - /// If the key doesn't exist or can't be parsed, the default value will be used in the out parameter. - /// - /// true if the key exists, false otherwise. - public bool TryGetEnum(string key, TEnum defaultValue, bool ignoreCase, out TEnum value) where TEnum : struct, Enum { - if (!TryGetValue(key, out string val)) { - value = defaultValue; - return false; - } - var wasParsed = Enum.TryParse(val, ignoreCase, out TEnum result); - if (!wasParsed) { - value = defaultValue; - return false; - } - value = result; - return true; - } - - /// - /// Tries to retrieve the enum value of one of a specified key's aliases in the arguments. - /// - /// A collection of aliases for a parameter name - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// - /// If the key doesn't exist or can't be parsed, the default value will be used in the out parameter. - /// - /// true if the key exists, false otherwise. - public bool TryGetEnum(ReadOnlySpan keys, out TEnum value) where TEnum : struct, Enum - => TryGetEnum(keys, default, false, out value); - - /// - /// Tries to retrieve the enum value of one of a specified key's aliases in the arguments. - /// - /// A collection of aliases for a parameter name - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// Whether to ignore case in parsing the enum - /// - /// If the key doesn't exist or can't be parsed, the default value will be used in the out parameter. - /// - /// true if the key exists, false otherwise. - public bool TryGetEnum(ReadOnlySpan keys, bool ignoreCase, out TEnum value) where TEnum : struct, Enum - => TryGetEnum(keys, default, ignoreCase, out value); - - /// - /// Tries to retrieve the enum value of one of a specified key's aliases in the arguments. - /// - /// A collection of aliases for a parameter name - /// The value of the argument ("" if doesn't exist - NOT NULL). - /// The default value to return if the key doesn't exist. - /// Whether to ignore case in parsing the enum - /// - /// If the key doesn't exist or can't be parsed, the default value will be used in the out parameter. - /// - /// true if the key exists, false otherwise. - public bool TryGetEnum(ReadOnlySpan keys, TEnum defaultValue, bool ignoreCase, out TEnum value) where TEnum : struct, Enum { - if (!TryGetValue(keys, out string val)) { - value = defaultValue; - return false; - } - var wasParsed = Enum.TryParse(val, ignoreCase, out TEnum result); - if (!wasParsed) { - value = defaultValue; - return false; - } - value = result; - return true; - } - - /// - /// Returns the enum value of a positional argument, or default if it fails to parse or didn't exist. - /// - /// - /// The position of the argument to check - /// The default value to return if the argument doesn't exist or can't be parsed - /// The value of the argument - public TEnum GetEnum(int position, TEnum defaultValue) where TEnum : struct, Enum { - _ = TryGetEnum(position, defaultValue, false, out var value); - return value; - } - - /// - /// Returns the enum value of a positional argument, or default if it fails to parse or didn't exist. - /// - /// - /// The position of the argument to check - /// The default value to return if the argument doesn't exist or can't be parsed - /// True to ignore case when parsing the argument - /// The value of the argument - public TEnum GetEnum(int position, TEnum defaultValue, bool ignoreCase) where TEnum : struct, Enum { - _ = TryGetEnum(position, defaultValue, ignoreCase, out var value); - return value; - } - - /// - /// Returns the enum value of a specified key, or default if it fails to parse or key didn't exist. - /// - /// - /// The key of the argument to check - /// The default value to return if the argument doesn't exist or can't be parsed - /// The value of the argument - public TEnum GetEnum(string key, TEnum defaultValue) where TEnum : struct, Enum { - _ = TryGetEnum(key, defaultValue, false, out var value); - return value; - } - - /// - /// Returns the enum value of a specified key, or default if it fails to parse or key didn't exist. - /// - /// - /// The key of the argument to check - /// The default value to return if the argument doesn't exist or can't be parsed - /// True to ignore case when parsing the argument - /// The value of the argument - public TEnum GetEnum(string key, TEnum defaultValue, bool ignoreCase) where TEnum : struct, Enum { - _ = TryGetEnum(key, defaultValue, ignoreCase, out var value); - return value; - } - - /// - /// Returns the value of the either of the key aliases, or default if it fails to parse or key didn't exist. - /// - /// - /// The keys of the argument to check - /// The default value to return if the argument doesn't exist or can't be parsed - /// The value of the argument - public TEnum GetEnum(ReadOnlySpan keys, TEnum defaultValue) where TEnum : struct, Enum { - _ = TryGetEnum(keys, defaultValue, false, out var value); - return value; - } - - /// - /// Returns the value of the either of the key aliases, or default if it fails to parse or key didn't exist. - /// - /// - /// The keys of the argument to check - /// The default value to return if the argument doesn't exist or can't be parsed - /// True to ignore case when parsing the argument - /// The value of the argument - public TEnum GetEnum(ReadOnlySpan keys, TEnum defaultValue, bool ignoreCase) where TEnum : struct, Enum { - _ = TryGetEnum(keys, defaultValue, ignoreCase, out var value); - return value; - } -} diff --git a/src/Sharpify.CommandLineInterface/ArgumentsAccessMultiple.cs b/src/Sharpify.CommandLineInterface/ArgumentsAccessMultiple.cs deleted file mode 100644 index dca7db7..0000000 --- a/src/Sharpify.CommandLineInterface/ArgumentsAccessMultiple.cs +++ /dev/null @@ -1,130 +0,0 @@ -using System.Globalization; - -namespace Sharpify.CommandLineInterface; - -public sealed partial class Arguments { - /// - /// Tries to retrieve the value of a positional argument. - /// - /// The key to check. - /// - /// The values of the argument or an empty array if they don't exist. - /// true if the key exists, false otherwise. - public bool TryGetValues(int position, string? separator, out string[] values) - => TryGetValues(position.ToString(), separator, out values); - - /// - /// Tries to retrieve the value of a specified key in the arguments. - /// - /// The key to check. - /// - /// The values of the argument or an empty array if don't exist. - /// true if the key exists, false otherwise. - public bool TryGetValues(string key, string? separator, out string[] values) { - if (!_arguments.TryGetValue(key, out var res)) { - values = []; - return false; - } - values = res.Split(separator, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); - return true; - } - - /// - /// Tries to retrieve a values of one of a specified key's aliases in the arguments. - /// - /// A collection of aliases for a parameter name - /// - /// The values of the argument or an empty array if don't exist. - /// true if the key exists, false otherwise. - public bool TryGetValues(ReadOnlySpan keys, string? separator, out string[] values) { - if (!_arguments.TryGetValue(keys, out var res)) { - values = []; - return false; - } - values = res.Split(separator, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); - return true; - } - - /// - /// Tries to retrieve the values of a specified key in the arguments. - /// - /// The positional argument to check. - /// - /// The values of the argument or an empty array if don't exist. - /// - /// - /// If the key doesn't exist or any of the values can't be parsed, an empty array will be used in the out parameter. - /// - /// - /// true if the key exists, false otherwise. - public bool TryGetValues(int position, string? separator, out T[] values) where T : IParsable - => TryGetValues(position.ToString(), separator, out values); - - /// - /// Tries to retrieve the values of a specified key in the arguments. - /// - /// The key to check. - /// - /// The values of the argument or an empty array if don't exist. - /// - /// - /// If the key doesn't exist or any of the values can't be parsed, an empty array will be used in the out parameter. - /// - /// - /// true if the key exists, false otherwise. - public bool TryGetValues(string key, string? separator, out T[] values) where T : IParsable { - if (!TryGetValue(key, out string val)) { - values = []; - return false; - } - - var parts = val.Split(separator, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); - var result = new T[parts.Length]; - int i = 0; - - foreach (var part in parts) { - if (!T.TryParse(part, CultureInfo.CurrentCulture, out T? parsed)) { - values = []; - return false; - } - result[i++] = parsed; - } - - values = result; - return true; - } - - /// - /// Tries to retrieve a values of one of a specified key's aliases in the arguments. - /// - /// A collection of aliases for a parameter name - /// - /// The values of the argument or an empty array if don't exist. - /// - /// - /// If the key doesn't exist or any of the values can't be parsed, an empty array will be used in the out parameter. - /// - /// - /// true if the key exists, false otherwise. - public bool TryGetValues(ReadOnlySpan keys, string? separator, out T[] values) where T : IParsable { - if (!TryGetValue(keys, out string val)) { - values = []; - return false; - } - - var parts = val.Split(separator, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); - var result = new T[parts.Length]; - int i = 0; - - foreach (var part in parts) { - if (!T.TryParse(part, CultureInfo.CurrentCulture, out T? parsed)) { - values = []; - return false; - } - result[i++] = parsed; - } - - values = result; - return true; - } -} diff --git a/src/Sharpify.CommandLineInterface/ArgumentsCore.cs b/src/Sharpify.CommandLineInterface/ArgumentsCore.cs deleted file mode 100644 index 2319aaa..0000000 --- a/src/Sharpify.CommandLineInterface/ArgumentsCore.cs +++ /dev/null @@ -1,86 +0,0 @@ -using System.Collections.ObjectModel; - -namespace Sharpify.CommandLineInterface; - -/// -/// A wrapper class over a dictionary of string : string with additional features -/// -/// -/// Arguments instances are created via -/// -public sealed partial class Arguments { - /// - /// Source is the list of separated arguments on top of which this instance of was built. - /// - public readonly ReadOnlyCollection Source; - private readonly Dictionary _arguments; - - /// - /// Internal constructor for the class - /// - /// Copy or reference of the arguments before processing - /// Ensure not null or empty - internal Arguments(ReadOnlyCollection args, Dictionary arguments) { - Source = args; - _arguments = arguments; - } - - /// - /// Gets the number of arguments. - /// - public int Count => _arguments.Count; - - /// - /// Checks if the arguments are empty. - /// - public bool AreEmpty => _arguments.Count is 0; - - /// - /// Returns an empty arguments object. - /// - public static readonly Arguments Empty = new(Array.Empty().AsReadOnly(), []); - - /// - /// Returns an array copy of - /// - public string[] SourceCopy => Source.ToArray(); - - /// - /// Returns new Arguments with positional arguments forwarded by 1, so that argument that was 1 is now 0, 2 is now 1 and so on. This is non-destructive, the original arguments are not modified. - /// - /// - /// - /// This is useful if you have a command that has a sub-command and you want to pass the arguments to the sub-command - /// - /// - /// The first positional argument (0) will be skipped to actually forward - /// - /// - public Arguments ForwardPositionalArguments() { - if (!Contains("0")) { - return this; - } - var dict = new Dictionary(_arguments.Comparer); - - foreach ((string prevKey, string prevValue) in _arguments) { - // Handle non numeric - if (!int.TryParse(prevKey.AsSpan(), out int numericIndex)) { - dict.Add(prevKey, prevValue); - } - // Handle numeric - if (numericIndex is 0) { // forwarding means the previous 0 is lost - continue; - } - dict.Add((numericIndex - 1).ToString(), prevValue); // Add with the index reduced by 1. - } - - // Because this is a new dictionary, if pos 1, isn't found, 0 still won't be present - // So essentially 0 was forwarded to no longer exist - return new Arguments(Source, dict); - } - - /// - /// Returns the underlying dictionary - /// - public ReadOnlyDictionary GetInnerDictionary() => _arguments.AsReadOnly(); -} diff --git a/src/Sharpify.CommandLineInterface/CHANGELOG.md b/src/Sharpify.CommandLineInterface/CHANGELOG.md deleted file mode 100644 index 7cd7adf..0000000 --- a/src/Sharpify.CommandLineInterface/CHANGELOG.md +++ /dev/null @@ -1,115 +0,0 @@ -# CHANGELOG - -## Version 2.0.0 - -**WARNING:** This release may contain breaking changes. - -- The `Arguments` source collection has been rewritten as a `ReadOnlyCollection`, which cascaded into numerous changes: - - `Parser.ParseArguments` (collection-based overloads) now takes a generic `IList`. This is converted internally to a `ReadOnlyCollection`, which is used as the source for `Arguments`. - - As a result, `Parser.Split` now returns a `List`. - - The `Parser.SplitToList` method was removed, as it is no longer needed. - - `Arguments.ArgsAsMemory` and `Arguments.ArgsAsSpan` were also removed. To inspect the source, use `Arguments.Source` or obtain a copy as a `string[]` with `Arguments.SourceCopy`. - - The `CliRunner.RunAsync` overload that previously accepted a `ReadOnlySpan` now accepts an `IList` instead. This allows implicit casting from both `string[]` and `List`, which are the most common CLI inputs. -- `HelpText` generators now use a `StringBuilder` internally, replacing the previous custom buffer. Since help text generation typically occurs only once during a CLI's lifetime, any potential performance impact is minimal. This also removes some logical size restraints. -- Removed `Microsoft.SourceLink.Github` as it is now used implicitly. - -**These changes enable several improvements:** - -- `Sharpify` is no longer a required dependency of this package and has been removed. This package can now be installed as a standalone. -- Creating an `Arguments` object with `Parser.ParseArguments` is now much simpler. You can use it directly without commands to create minimal CLIs in `Program.cs`. This will be particularly useful with the upcoming `.NET 10` feature allowing direct execution of `.cs` files. (A demo video with examples and best practices will be released when this feature is available.) - -## Version 1.5.0 - -- Updated to support NET9 with `Sharpify` 2.5.0 -- Optimized path of `Arguments` forwarding when no positional arguments are present. - -## Version 1.4.0 - -- Optimized `Parser`: - - `Split` now rents a buffer the array pool by itself and returns a `RentedBufferWriter`, this enables greater flexibility in usage, and simplifies the code. - - Changed lower level array allocation code to use generalized api to optimize on more platforms. -- `Arguments.TryGetValue` and `Arguments.TryGetValues` now have overloads that accept a `ReadOnlySpan keys`, this overload enables much simpler retrieval of parameters that have aliases, for example you might want something like `--name` and `-n` to map to the same value. - - If you specify the aliases using the collections expression (i.e `["one", "two"]`), since .NET 8, the compiler will generate an inline array for that, which is very efficient, you don't need to create an array yourself. but if you wanted to to you could for example create a `static readonly ReadOnlySpan aliases => new[] { "one", "two" };` and pass that instead, the compiler optimizes such case by writing the values directly in the assembly. -- `CliBuilder` now has an option to configure arguments case sensitivity using `ConfigureArgumentsCaseHandling`, by default arguments are case insensitive to prioritize user experience. however, if you want to have parameters that are case sensitive, for instances where you need more short flags like `grep` you can opt in for this feature by setting it to be case sensitive. -- `CliBuilder` can now configure how to handle empty inputs with `ConfigureEmptyInputBehavior`, by default it will display the help text and exit, but you can configure it to attempt to proceed with handling the commands, if a single command is used and command name is set to not required, this will execute the command with empty args, otherwise it will display the appropriate error message. - - This is a change in behavior, as previously by default an error showing that no command was found was displayed, but seems that showing the help text in those situations is the more common approach in modern CLIs. -- Updated parsing to detect cases where arguments start with `-` and are not names of arguments, for example if you required a positional argument of type `int` and the input was a negative number (also starts with `-`), it would've been interpreted as a named argument, now it will be correctly interpreted as a positional argument. - - The rule now also checks if the first character following a `-` is a digit, if it is, it will not be marked as named argument. Which means - don't use argument names that start with digits (this is a bad practice in general). -- Help text no contains a special case for "version" and "--version" that will just display the version from metadata. - - Help text (from main) now has specialized structure for cases where you only have one command, instead of printing commands and descriptions, it will print the single command usage - the rest will of the whole cli (metadata) -- To support `--version` and add more customization options, now `Metadata` and `CustomHeader` are independent, and you can configure which is used for help text with `SetHelpTextSource(HelpTextSource)`. `Metadata` will be used by default. -- The help text portion that used to display instruction to get help text is now shorter and more concise. -- `Arguments` now has overload to directly get the values that correspond to `TryGetValue` overloads with default values, since defaults values can be returned if no key was found or failed to be parsed, In some case the actual reason is not important and only the value is needed so we now have `GetValue` for this exact reason. - -## Version 1.3.0 - -- `Arguments` now contains new methods `TryGetValues` and `TryGetValues{T}` to get arrays from values, there are overloads for regular and positional arguments, each overload requires a `string? separator` that is used to split the value, as with te regular values, `T` needs to implement `IParsable{T}`. -- `CliBuilder` now has a method `ShowErrorCodes` that will enable the error codes next to `CliRunner` error outputs, that was previously enabled by default, now it will hide them by default to provide a cleaner experience for users, but the builder now can easily configure this for testing, or if you still want the user to see them. - -## Version 1.2.2 - -- Rewritten core function of argument forwarding to fix issue that caused non-positional arguments to be removed, now named arguments and flags should not be affected by positional forwarding at all. - - Important note: the `Args` array that is stored within the `Arguments` object, is never modified and no matter how many positional forwarding iterations have been executed, it maintains the original arguments. -- Added `Arguments.HasFlag(string)` method that could be used to specifically checks for flags. - - Previously `Arguments.Contains(string)` could be used for this purpose, but it could also return `true` for a named argument, effectively allowing a false-positive. `HasFlag` prevents this by checking that if it exists, the value is empty, which could only be the case for flags. -- Increased buffer size for help-text generation to prevents issues with complex clis. - -### Usage Note - -In case you are writing a cli which has a complex tree to navigate on the way to the execution, such as nested commands, and any single command processing gets verbose, remember that it is possible to create a `CliRunner` at any point. - -This means that you can create objects for the nested commands, inside the top level command you could then forward the positional arguments (or not) if you choose, then use the same builder pattern with `CliRunner.CreateBuilder()...` and add the nested commands, then execute using the already parsed `Arguments` object as the `CliRunner.RunAsync` also has an overload that accepts `Arguments`. - -## Version 1.2.1 - -- Updated core to use `Sharpify` 2.0.0 -- small optimizations - -## Version 1.2.0 - -- `Arguments`'s internal copy of the parsed args is now an array, this change was necessary to avoid special cases where the backing array was garbage collected leaving a phantom view. To get a read only copy you can use `.ArgsAsSpan` or `.ArgsAsMemory` according to your preference or use case. -- Improved `Parser`'s mapping function's stability, and also further reworked it to allow positional arguments after named ones, now positional arguments can be anywhere. - - A special case that needs consideration before usage is switches, i.e boolean toggle parameters, as they look like named parameters without values. If such "switch" is followed by a regular value, it will be regarded as a named parameter and its value, as opposed to a switch and a positional argument. Keep this in mind when you decide the arrangement of input arguments, to ensure your input works as intended. - - Switches work well, either when they are followed by other named arguments, or other switches. For simplicity, it is best to leave them as the last arguments. -- Added a new `SynchronousCommand` as an alternative to `Command`, it is basically syntactic sugar that makes it so you can implement an `Execute` method instead, in which you can return an `int`, when `async` is not needed, this can save multiple lines of code that just wrap `int`s in `ValueTask.FromResult` which can be quite verbose. - -## Version 1.1.0 - -### Changes to `CliBuilder` - -- `DoNotIncludeMetadataInHelpText` was removed, instead it will not be included by default. `ModifyMetadata` was renamed to `WithMetadata` and if used, will modify the default `CliMetadata` and include it in the help text. -- Added `WithCustomHeader(string)` as an alternative to using `CliRunnerMetadata`, there will be no exception when both are used, but in that case, `CliRunnerMetadata` has priority and will be the only one displayed. -- Added `SortCommandsAlphabetically`, which if specified will sort the commands alphabetically by name in the general help text, other than the help text, it has virtually no affect. Not specifying this, gives you control over the order, it will be exactly in the order that you added the commands and order of existing collection (if you added any commands via a collection). - -### Changes to `Arguments` - -- Overloads of `TryGetValue` were modified to add an option to `ignoreCase`, to make it more user friendly and still adhere to parameter placement guidelines, more overloads were added. - -## Version 1.0.5 - -- Added a `ReadOnlyMemory{string}` which is a copy of the arguments split up before being parsed to `Arguments`, it can be retrieved by the `Arguments.PureArguments`, in special cases in which you might create a nested command structure, which requires a partial parsing, then secondary parsing within a command, this can be very powerful as you can create a secondary `CliRunner` and pass any subsequence of those arguments to recreate an input. -- Overloads of `Arguments.GetValue` which take an `int` as `positional argument`, now that parameter renamed to be `position` to better signify what the overloads mean, it is a rather cosmetic change, but nevertheless. -- Add a `Arguments.Contains(int)` overload to match with the rest of the methods and suit `positional arguments`. - -## Version 1.0.4 - -- Added missing line break in global help text -- If the single word help is entered, it will now be recognized in place of command name to return the global help text, instead of trying to be parsed as a command. - -## Version 1.0.3 - -- Updated `Sharpify` dependency and implemented usage of new APIs to aid in maintainability. -- Add `DoNotIncludeMetadataInHelpText()` in `CliBuilder` which removes the metadata inclusion in the general help text. - -## Version 1.0.2 - -- Removed thread-local `StringBuilder` from `CliRunner`, replaced all usages with `StringBuffer` from `Sharpify` - -## Version 1.0.1 - -- Updated `Sharpify` dependency -- Slightly improved performance of general help text generator - -## Version 1.0.0 - -Initial version - no changes diff --git a/src/Sharpify.CommandLineInterface/CHANGELOGLATEST.md b/src/Sharpify.CommandLineInterface/CHANGELOGLATEST.md deleted file mode 100644 index c99433f..0000000 --- a/src/Sharpify.CommandLineInterface/CHANGELOGLATEST.md +++ /dev/null @@ -1,19 +0,0 @@ -# CHANGELOG - -## Version 2.0.0 - -**WARNING:** This release may contain breaking changes. - -- The `Arguments` source collection has been rewritten as a `ReadOnlyCollection`, which cascaded into numerous changes: - - `Parser.ParseArguments` (collection-based overloads) now takes a generic `IList`. This is converted internally to a `ReadOnlyCollection`, which is used as the source for `Arguments`. - - As a result, `Parser.Split` now returns a `List`. - - The `Parser.SplitToList` method was removed, as it is no longer needed. - - `Arguments.ArgsAsMemory` and `Arguments.ArgsAsSpan` were also removed. To inspect the source, use `Arguments.Source` or obtain a copy as a `string[]` with `Arguments.SourceCopy`. - - The `CliRunner.RunAsync` overload that previously accepted a `ReadOnlySpan` now accepts an `IList` instead. This allows implicit casting from both `string[]` and `List`, which are the most common CLI inputs. -- `HelpText` generators now use a `StringBuilder` internally, replacing the previous custom buffer. Since help text generation typically occurs only once during a CLI's lifetime, any potential performance impact is minimal. This also removes some logical size restraints. -- Removed `Microsoft.SourceLink.Github` as it is now used implicitly. - -**These changes enable several improvements:** - -- `Sharpify` is no longer a required dependency of this package and has been removed. This package can now be installed as a standalone. -- Creating an `Arguments` object with `Parser.ParseArguments` is now much simpler. You can use it directly without commands to create minimal CLIs in `Program.cs`. This will be particularly useful with the upcoming `.NET 10` feature allowing direct execution of `.cs` files. (A demo video with examples and best practices will be released when this feature is available.) diff --git a/src/Sharpify.CommandLineInterface/CliBuilder.cs b/src/Sharpify.CommandLineInterface/CliBuilder.cs deleted file mode 100644 index c9f8fec..0000000 --- a/src/Sharpify.CommandLineInterface/CliBuilder.cs +++ /dev/null @@ -1,137 +0,0 @@ -namespace Sharpify.CommandLineInterface; - -/// -/// Represents a builder for a CliRunner. -/// -public sealed class CliBuilder { - private readonly CliRunnerConfiguration _config; - - internal CliBuilder() { - _config = new CliRunnerConfiguration(); - } - - /// - /// Adds a command to the CLI runner. - /// - /// - /// The same instance of - public CliBuilder AddCommand(Command command) { - _config.Commands.Add(command); - return this; - } - - /// - /// Adds commands to the CLI runner. - /// - /// - /// The same instance of - public CliBuilder AddCommands(ReadOnlySpan commands) { - _config.Commands.AddRange(commands); - return this; - } - - /// - /// Sets the output writer for the CLI runner. - /// - /// - /// The same instance of - public CliBuilder SetOutputWriter(TextWriter writer) { - CliRunner.SetOutputWriter(writer); - return this; - } - - /// - /// Sets the output writer for the CLI runner to be . - /// - /// The same instance of - public CliBuilder UseConsoleAsOutputWriter() { - CliRunner.SetOutputWriter(Console.Out); - return this; - } - - /// - /// Sorts the commands alphabetically. - /// - /// - /// This change only affects the functionality of the help text. - /// - /// The same instance of - public CliBuilder SortCommandsAlphabetically() { - _config.SortCommandsAlphabetically = true; - return this; - } - - /// - /// Add metadata - can be used to generate the general help text (Is the default source) - /// - /// - /// Configure the help text source with - /// - /// The same instance of - public CliBuilder WithMetadata(Action options) { - options(_config.MetaData); - return this; - } - - /// - /// Add a custom header - can be used instead of Metadata in the header of the help text - /// - /// - /// Configure the help text source with - /// - /// The same instance of - public CliBuilder WithCustomHeader(string header) { - _config.CustomHeader = header; - return this; - } - - /// - /// Sets the source of the general help text. - /// - /// Requested source of the help text. - /// The same instance of - public CliBuilder SetHelpTextSource(HelpTextSource source) { - _config.HelpTextSource = source; - return this; - } - - /// - /// Configures how the parser handles argument casing. - /// - /// - /// By default it is set to to improve user experience - /// - /// The same instance of - public CliBuilder ConfigureArgumentCaseHandling(ArgumentCaseHandling caseHandling) { - _config.ArgumentCaseHandling = caseHandling; - return this; - } - - /// - /// Show error codes next to the error messages. - /// - /// The same instance of - public CliBuilder ShowErrorCodes() { - _config.ShowErrorCodes = true; - return this; - } - - /// - /// Configures how the CLI runner handles empty input. - /// - /// The same instance of - public CliBuilder ConfigureEmptyInputBehavior(EmptyInputBehavior behavior) { - _config.EmptyInputBehavior = behavior; - return this; - } - - /// - /// Builds the CLI runner. - /// - public CliRunner Build() { - if (_config.Commands.Count is 0) { - throw new InvalidOperationException("No commands were added."); - } - return new CliRunner(_config); - } -} \ No newline at end of file diff --git a/src/Sharpify.CommandLineInterface/CliMetadata.cs b/src/Sharpify.CommandLineInterface/CliMetadata.cs deleted file mode 100644 index 7690a5d..0000000 --- a/src/Sharpify.CommandLineInterface/CliMetadata.cs +++ /dev/null @@ -1,47 +0,0 @@ -namespace Sharpify.CommandLineInterface; - -/// -/// Contains metadata for a CLI application. -/// -public record CliMetadata { - /// - /// The name of the CLI application. - /// - public string Name { get; set; } = string.Empty; - - /// - /// The description of the CLI application. - /// - public string Description { get; set; } = string.Empty; - - /// - /// The version of the CLI application. - /// - public string Version { get; set; } = string.Empty; - - /// - /// The author of the CLI application. - /// - public string Author { get; set; } = string.Empty; - - /// - /// The license of the CLI application. - /// - public string License { get; set; } = string.Empty; - - /// - /// The default metadata for a CLI application. - /// - public static readonly CliMetadata Default = new() { - Name = "Interface", - Description = "Default description.", - Version = "1.0.0", - Author = "John Doe", - License = "MIT", - }; - - /// - /// Returns the total length of the metadata. - /// - public int TotalLength => Name.Length + Description.Length + Version.Length + Author.Length + License.Length; -} \ No newline at end of file diff --git a/src/Sharpify.CommandLineInterface/CliRunner.cs b/src/Sharpify.CommandLineInterface/CliRunner.cs deleted file mode 100644 index dd4b52a..0000000 --- a/src/Sharpify.CommandLineInterface/CliRunner.cs +++ /dev/null @@ -1,187 +0,0 @@ -using System.Collections.ObjectModel; -using System.Text; - -namespace Sharpify.CommandLineInterface; - -/// -/// Provides the means of running a CLI and configuring package wide settings. -/// -public sealed class CliRunner { - /// - /// Creates a new instance of the class. - /// - public static CliBuilder CreateBuilder() => new(); - - /// - /// Gets the commands registered with the CLI runner. - /// - public ReadOnlyCollection Commands => _config.Commands.AsReadOnly(); - - /// - /// Gets the output writer for the CLI runner. - /// - /// Defaults to - public static TextWriter OutputWriter { get; private set; } = TextWriter.Null; - - /// - /// Sets the output writer for the CLI runner. - /// - public static void SetOutputWriter(TextWriter writer) { - OutputWriter = writer; - } - - private readonly CliRunnerConfiguration _config; - - /// - /// Creates a new instance of the class. - /// - /// To be used with the - internal CliRunner(CliRunnerConfiguration config) { - _config = config; - // If there is only one command, sorting is not necessary - if (_config.SortCommandsAlphabetically && _config.Commands.Count is not 1) { - _config.Commands.Sort(Command.ByNameComparer); - } - } - - /// - /// Runs the CLI application with the specified arguments. - /// - public ValueTask RunAsync(ReadOnlySpan args, bool commandNameRequired = true) { - // Handle no input - if (args.Length is 0) { - // If display help text is used, always display the help text - if (_config.EmptyInputBehavior is EmptyInputBehavior.DisplayHelpText) { - return OutputHelper.Return(GenerateHelpText(commandNameRequired), 0); - } - // We assume the need to attempt to proceed - if (commandNameRequired || _config.Commands.Count is not 1) { - // In this case, input is required - return OutputHelper.Return("No command specified", 404, _config.ShowErrorCodes); - } - return _config.Commands[0].ExecuteAsync(Arguments.Empty); - } - var arguments = Parser.ParseArguments(args, _config.GetComparer()); - return RunAsync(arguments, commandNameRequired); - } - - /// - /// Runs the CLI application with the specified arguments. - /// - public ValueTask RunAsync(IList args, bool commandNameRequired = true) { - // Handle no input - if (args.Count is 0) { - // If display help text is used, always display the help text - if (_config.EmptyInputBehavior is EmptyInputBehavior.DisplayHelpText) { - return OutputHelper.Return(GenerateHelpText(commandNameRequired), 0); - } - // We assume the need to attempt to proceed - if (commandNameRequired || _config.Commands.Count is not 1) { - // In this case, input is required - return OutputHelper.Return("No command specified", 404, _config.ShowErrorCodes); - } - return _config.Commands[0].ExecuteAsync(Arguments.Empty); - } - var arguments = Parser.ParseArguments(args, _config.GetComparer()); - return RunAsync(arguments, commandNameRequired); - } - - /// - /// Runs the CLI application with the specified arguments. - /// - public ValueTask RunAsync(Arguments? arguments, bool commandNameRequired = true) { - if (arguments is null or { Count: 0 }) { - return OutputHelper.Return("Input could not be parsed", 400, _config.ShowErrorCodes); - } - - string version = $"Version: {_config.MetaData.Version}"; // cache version - - // general help text - if (arguments.IsFirstOrFlag("help")) { - return OutputHelper.Return(GenerateHelpText(commandNameRequired), 0); - } - if (arguments.IsFirstOrFlag("version")) { - return OutputHelper.Return(version, 0); - } - - // Only for single command CLIs - if (!commandNameRequired) { - // If there is more than one command, the command name is required - if (_config.Commands.Count is not 1) { - return OutputHelper.Return("Command name is required when using more than one command", 405, _config.ShowErrorCodes); - } - // Execute the command - return _config.Commands[0].ExecuteAsync(arguments); - } - - if (!arguments.TryGetValue(0, out string commandName)) { - return OutputHelper.Return("Command name is required", 405, _config.ShowErrorCodes); - } - - Command? command = _config.Commands.FirstOrDefault(c => _config.GetComparer().Equals(c.Name, commandName)); - if (command == default) { - return OutputHelper.Return($"Command \"{commandName}\" not found.", 404, _config.ShowErrorCodes); - } - - if (arguments.Contains("help") || arguments.HasFlag("help")) { - return OutputHelper.Return(command.GetHelp(), 0); - } - return command.ExecuteAsync(arguments.ForwardPositionalArguments()); - } - - // Generates the help for the application - happens once, at initialization of CliRunner - private string GenerateHelpText(bool commandNameRequired) { - StringBuilder builder = new(GetRequiredBufferLength()); - builder.AppendLine(); - if (_config.HelpTextSource is HelpTextSource.Metadata) { - var metaData = _config.MetaData; - builder.AppendLine(metaData.Name) - .AppendLine() - .AppendLine(metaData.Description) - .Append("Author: ") - .AppendLine(metaData.Author) - .Append("Version: ") - .AppendLine(metaData.Version) - .Append("License: ") - .AppendLine(metaData.License) - .AppendLine(); - } else if (_config.HelpTextSource is HelpTextSource.CustomHeader) { - builder.AppendLine(_config.CustomHeader) - .AppendLine(); - } - if (commandNameRequired) { - builder.AppendLine("Commands:"); - var maxCommandLength = GetMaximumCommandLength() + 2; - foreach (Command command in _config.Commands) { - builder.Append(command.Name.PadRight(maxCommandLength)) - .Append(" - ") - .AppendLine(command.Description); - } - builder.Append( - """ - - To get help for a command, use: " --help" - To get help for the application, use: "--help" - - """ - ); - } else { - var command = _config.Commands[0]; - builder.Append("Usage: ") - .AppendLine(command.Usage); - } - - return builder.ToString(); - } - - private int GetMaximumCommandLength() => _config.Commands.Max(c => c.Name.Length); - - private int GetRequiredBufferLength() { - int length = (_config.Commands.Count + 5) * 256; // default buffer for commands and possible extra text - return _config.HelpTextSource switch { - HelpTextSource.Metadata => length + _config.MetaData.TotalLength, - HelpTextSource.CustomHeader => length + _config.CustomHeader.Length, - _ => length - }; - } -} \ No newline at end of file diff --git a/src/Sharpify.CommandLineInterface/CliRunnerConfiguration.cs b/src/Sharpify.CommandLineInterface/CliRunnerConfiguration.cs deleted file mode 100644 index beb3a93..0000000 --- a/src/Sharpify.CommandLineInterface/CliRunnerConfiguration.cs +++ /dev/null @@ -1,52 +0,0 @@ -namespace Sharpify.CommandLineInterface; - -/// -/// Represents the internal configuration of a CLI runner. -/// -internal sealed class CliRunnerConfiguration { - /// - /// The commands that the CLI runner can execute. - /// - public List Commands { get; set; } = []; - - /// - /// The metadata of the CLI runner. - /// - public CliMetadata MetaData { get; set; } = CliMetadata.Default; - - /// - /// The header to use in the help text. - /// - public string CustomHeader { get; set; } = string.Empty; - - /// - /// The source of the help text. - /// - public HelpTextSource HelpTextSource { get; set; } = HelpTextSource.Metadata; - - /// - /// Whether to sort commands alphabetically. - /// - /// - /// It is set to false by default - /// - public bool SortCommandsAlphabetically { get; set; } - - /// - /// Whether to show error codes in the help text. - /// - /// - /// It is set to false by default to improve user experience - /// - public bool ShowErrorCodes { get; set; } - - /// - /// Configures the case sensitivity of arguments parsing - /// - public ArgumentCaseHandling ArgumentCaseHandling { get; set; } = ArgumentCaseHandling.IgnoreCase; - - /// - /// Configures the behavior of the CLI runner when empty input is provided. - /// - public EmptyInputBehavior EmptyInputBehavior { get; set; } = EmptyInputBehavior.DisplayHelpText; -} \ No newline at end of file diff --git a/src/Sharpify.CommandLineInterface/Command.cs b/src/Sharpify.CommandLineInterface/Command.cs deleted file mode 100644 index a3f0de5..0000000 --- a/src/Sharpify.CommandLineInterface/Command.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.Text; - -namespace Sharpify.CommandLineInterface; - -/// -/// Represents a command for a CLI application. -/// -public abstract class Command { - /// - /// Gets the name of the command. - /// - public abstract string Name { get; } - /// - /// Gets the description of the command. - /// - public abstract string Description { get; } - /// - /// Gets the usage of the command. - /// - public abstract string Usage { get; } - - /// - /// Executes the command. - /// - public abstract ValueTask ExecuteAsync(Arguments args); - - /// - /// Gets the help for the command. - /// - public virtual string GetHelp() { - var length = (Name.Length + Description.Length + Usage.Length) * 2; - StringBuilder builder = new(length); - builder.AppendLine() - .Append("Command: ") - .AppendLine(Name) - .AppendLine() - .Append("Description: ") - .AppendLine(Description) - .AppendLine() - .Append("Usage: ") - .AppendLine(Usage); - return builder.ToString(); - } - - /// - /// Compares two commands by their name. - /// - /// The first command to compare. - /// The second command to compare. - /// - /// A value indicating the relative order of the commands. - /// The return value is less than 0 if x.Name is less than y.Name, - /// 0 if x.Name is equal to y.Name, and greater than 0 if x.Name is greater than y.Name. - /// - public static int ByNameComparer(Command x, Command y) { - return string.Compare(x.Name, y.Name, StringComparison.Ordinal); - } -} \ No newline at end of file diff --git a/src/Sharpify.CommandLineInterface/ConfigurationEnums.cs b/src/Sharpify.CommandLineInterface/ConfigurationEnums.cs deleted file mode 100644 index 3f1153f..0000000 --- a/src/Sharpify.CommandLineInterface/ConfigurationEnums.cs +++ /dev/null @@ -1,47 +0,0 @@ -namespace Sharpify.CommandLineInterface; - -/// -/// Controls how the CLI runner handles empty input. -/// -public enum EmptyInputBehavior { - /// - /// Displays the help text and exits. - /// - DisplayHelpText, - /// - /// Attempts to proceed with handling the commands. - /// - /// - /// If a single command is used and command name is set to not required, this will execute the command with empty args, - /// otherwise it will display the appropriate error message. - /// - AttemptToProceed, -} - -/// -/// Dictates the source of the general help text -/// -public enum HelpTextSource { - /// - /// Use the metadata to generate HelpText - /// - Metadata, - /// - /// Use the custom header to generate HelpText - /// - CustomHeader -} - -/// -/// Configures how to handle argument casing -/// -public enum ArgumentCaseHandling { - /// - /// Ignore argument case - /// - IgnoreCase, - /// - /// Sets the arguments parser to be case sensitive - /// - CaseSensitive -} \ No newline at end of file diff --git a/src/Sharpify.CommandLineInterface/Extensions.cs b/src/Sharpify.CommandLineInterface/Extensions.cs deleted file mode 100644 index e6aa152..0000000 --- a/src/Sharpify.CommandLineInterface/Extensions.cs +++ /dev/null @@ -1,41 +0,0 @@ -namespace Sharpify.CommandLineInterface; - -internal static class Helper { - /// - /// Tries to retrieve the value of the first specified key that exists in the dictionary. - /// - /// - /// - /// - /// - internal static bool TryGetValue(this Dictionary dict, ReadOnlySpan keys, out string value) { - foreach (var key in keys) { - if (dict.TryGetValue(key, out var res)) { - value = res!; - return true; - } - } - value = ""; - return false; - } - - /// - /// Checks if the first argument is the specified value or if it is a flag. - /// - /// - /// - /// - internal static bool IsFirstOrFlag(this Arguments args, string value) { - if (args.TryGetValue(0, out string? first) && first == value) { - return true; - } - return args.Count is 1 && args.HasFlag(value); - } - - internal static StringComparer GetComparer(this CliRunnerConfiguration config) - => config.ArgumentCaseHandling switch { - ArgumentCaseHandling.IgnoreCase => StringComparer.OrdinalIgnoreCase, - ArgumentCaseHandling.CaseSensitive => StringComparer.Ordinal, - _ => throw new ArgumentOutOfRangeException(nameof(config.ArgumentCaseHandling), config.ArgumentCaseHandling, null) - }; -} \ No newline at end of file diff --git a/src/Sharpify.CommandLineInterface/OutputHelper.cs b/src/Sharpify.CommandLineInterface/OutputHelper.cs deleted file mode 100644 index d58619f..0000000 --- a/src/Sharpify.CommandLineInterface/OutputHelper.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace Sharpify.CommandLineInterface; - -/// -/// Provides helper methods for outputting using -/// -public static class OutputHelper { - /// - /// Writes a line to the output writer. - /// - public static void WriteLine(string message) => CliRunner.OutputWriter.WriteLine(message); - - /// - /// Writes a message to the output writer. - /// - public static void Write(string message) => CliRunner.OutputWriter.Write(message); - - /// - /// Writes a line to the output writer and returns the specified code. - /// - /// The message to write. - /// The code to return. - /// Whether to append the code to the message. - /// A containing the specified code. - /// Using will append [Code: ] to - public static ValueTask Return(string message, int code, bool appendCode = false) { - var writer = CliRunner.OutputWriter; - writer.Write(message); - if (appendCode) { - writer.Write($" [Code: {code}]"); - } - writer.WriteLine(); - return ValueTask.FromResult(code); - } -} \ No newline at end of file diff --git a/src/Sharpify.CommandLineInterface/Parser.cs b/src/Sharpify.CommandLineInterface/Parser.cs deleted file mode 100644 index 4fece04..0000000 --- a/src/Sharpify.CommandLineInterface/Parser.cs +++ /dev/null @@ -1,176 +0,0 @@ -using System.Collections.ObjectModel; -using System.Runtime.CompilerServices; - -namespace Sharpify.CommandLineInterface; - -/// -/// Command line argument parser -/// -public static class Parser { - /// - /// The default starting capacity of argument buffers - /// - private const int DefaultBufferCapacity = 8; - - /// - /// Very efficiently splits an input into a List of strings, respects quotes - /// - /// - public static List Split(ReadOnlySpan str) { - List args = new(0); // Force usage of empty array - if (str.Length is 0) { - return args; - } - args.EnsureCapacity(DefaultBufferCapacity); - int i = 0; - while ((uint)i < (uint)str.Length) { - char c = str[i]; - if (char.IsWhiteSpace(c)) { - i++; - continue; - } - if (c is '"') { // everything without a quote block is a single item, regardless of spaces - str = str.Slice(i + 1); - int nextQuote = str.IndexOf('"'); - if (nextQuote is -1) { - break; - } - args.Add(new string(str.Slice(0, nextQuote))); - i = nextQuote + 1; - continue; - } - // next is a word - str = str.Slice(i); - int nextSpace = str.IndexOf(' '); - if (nextSpace <= 0) { // the last word, no spaces after - args.Add(new string(str)); - i = str.Length; - continue; - } - args.Add(new string(str.Slice(0, nextSpace))); - i = nextSpace + 1; - } - return args; - } - - /// - /// Parses a string into an object - /// - /// - /// - /// This overload uses - /// - public static Arguments ParseArguments(ReadOnlySpan str) => ParseArguments(str, StringComparer.OrdinalIgnoreCase); - - /// - /// Parses a string into an object - /// - /// - /// - public static Arguments ParseArguments(ReadOnlySpan str, StringComparer comparer) { - var args = Split(str); - return ParseArguments(args, comparer); - } - - /// - /// Parses a collection of strings into an object - /// - /// - /// - /// This overload uses - /// - public static Arguments ParseArguments(TList args) where TList : IList - => ParseArguments(args, StringComparer.OrdinalIgnoreCase); - - /// - /// Parses a collections of strings into arguments. - /// - /// - /// - [MethodImpl(MethodImplOptions.NoInlining)] - public static Arguments ParseArguments(TList args, StringComparer comparer) where TList : IList { - if (args.Count is 0) { - return Arguments.Empty; - } - var roc = new ReadOnlyCollection(args); - var results = MapArguments(roc, comparer); - return results.Count is 0 ? Arguments.Empty : new Arguments(roc, results); - } - - // Maps a ReadOnlyCollection of strings into a dictionary of arguments - internal static Dictionary MapArguments(ReadOnlyCollection args, StringComparer comparer) { - var length = args.Count; - var results = new Dictionary(length, comparer); - Span mapped = stackalloc bool[length]; - int i = 0; - - // Named arguments - while (i < length) { - var current = args[i]; - // This is positional argument, processed in the next loop - // values of named params are processed in the single iteration of the named parameter - if (!IsParameterName(current)) { - i++; - continue; - } - // This is parameter name (starts with either - or --) - int ii = 0; - while (current[ii] is '-') { // Skip the dashes - ii++; - } - var name = current.Substring(ii); // Parameter name without dashes - - // i + 1 == args.Length => checks if the next argument is available - // if not, then this is a switch (i.e. a named boolean toggle) - // IsParameterName(args[i + 1]) => checks if the next argument is a parameter - // if it is, then again, this is a switch - if (i + 1 == length || IsParameterName(args[i + 1])) { - results[name] = string.Empty; - mapped[i] = true; - i++; - continue; - } - // If the previous condition didn't take - // then this is the value of the named parameter - var value = args[i + 1]; - results[name] = value; - mapped[i] = mapped[i + 1] = true; - i += 2; - } - - int position = 0; - - // Positional arguments (mapped as {pos: value}) - // The positional arguments are mapped in the order they appear - // And the number of the positional argument - // A positional argument may have the key 0, even if it is the last enter argument (assuming other arguments are named or switches) - for (i = 0; i < length; i++) { - if (mapped[i]) { - continue; - } - results[position.ToString()] = args[i]; - position++; - mapped[i] = true; - } - - return results; - } - - // Checks whether a string starts with "-" - [MethodImpl(MethodImplOptions.NoInlining)] - private static bool IsParameterName(ReadOnlySpan str) { - // check length - if (str.Length is 0) { - return false; - } - // check numeric + negative numeric (negative numeric could look like parameter name because of the dash) - if (char.IsDigit(str[0]) || char.IsDigit(str[str.LastIndexOf('-') + 1])) { - return false; - } - // not dash - not parameter - if (!str.StartsWith("-")) { - return false; - } - return true; - } -} \ No newline at end of file diff --git a/src/Sharpify.CommandLineInterface/README.md b/src/Sharpify.CommandLineInterface/README.md deleted file mode 100644 index d3165ee..0000000 --- a/src/Sharpify.CommandLineInterface/README.md +++ /dev/null @@ -1,230 +0,0 @@ -# Sharpify.CommandLineInterface - -`Sharpify.CommandLineInterface` is a high performance, reflection free and AOT-ready framework for creating command line interfaces, with a configurable output writer and no direct dependency to `System.Console` enabling it to be embedded, used with inputs from any source and output to any source. - -Most other command line frameworks in c# use `reflection` to provide their "magic" such as generating help text, and providing input validation, `Sharpify.CommandLineInterface` instead uses compile time implemented metadata and user guided validation. each command must implement the `Command` or `SynchronousCommand` abstract class, part of which will be to set the command metadata, the main entry `CliRunner` also has an application level metadata object that can be customized in the `CliBuilder` process, using those, `Sharpify.CommandLineInterface` can resolve and format that metadata to generate an output similar to the other frameworks. Each command's entry point is either `ExecuteAsync` or `Execute` which receive an input of type `Arguments` that can be used to retrieve, validate and parse arguments. - -## Usage - -### Implementing Commands - -To implement a command create a class that inherits from the abstract `Command`: - -```csharp -public sealed class EchoCommand : Command { - public override string Name => "echo"; - - public override string Description => "Echoes the specified message."; - - public override string Usage => "echo "; - - public override ValueTask ExecuteAsync(Arguments args) { - if (!args.TryGetValue("message", out string message)) { // Validation - // This example returns error code 400 (http bad request code) to signal client error - // Any code you want can obviously be used - return OutputHelper.Return("No message specified", 400, true); - } - return OutputHelper.Return(message, 0); - } -} -``` - -or `SynchronousCommand` - -```csharp -public sealed class EchoCommand : SynchronousCommand { - public override string Name => "echo"; - - public override string Description => "Echoes the specified message."; - - public override string Usage => "echo "; - - public override int Execute(Arguments args) { - if (!args.TryGetValue("message", out string message)) { // Validation - // This example returns error code 400 (http bad request code) to signal client error - // Any code you want can obviously be used - Console.WriteLine("No message specified"); - return 404; - } - Console.WriteLine(message); - return 0; - } -} -``` - -As you can see the properties set the metadata for the command at compile time, and when it comes time to resolve it, no `reflection` is needed. - -`ExecuteAsync` is returning a `ValueTask` allowing both synchronous and asynchronous code, we use the high performance `Arguments` which is an object that manages arguments parsed from the input for retrieving and validating parameters. `Execute` is a synchronous alternative that just reduces the need of verbosity from `ValueTask.FromResult(int)` when `async` is not needed. - -`OutputHelper.Return` is a helper method which outputs the message to customizable `TextWriter` in `CliRunner`, and returns the code (`int`) that is specified. - -### Program.cs (Or other entry point) - -```csharp -public static class Program { - static ReadOnlySpan Commands => new Command[] { - new EchoCommand(), - new OtherCommand(), // This is for example sake, but can be anything - }; - - public static Task Main(string[] args) { - var runner = CliRunner.CreateBuilder() - .AddCommands(Commands) - .UseConsoleAsOutputWriter() - .ModifyMetadata(metadata => { - metadata.Name = "MyCli"; - metadata.Descriptions = "MyCli Description"; - metadata.Author = "John Doe"; - metadata.Version = "1.0.0"; - metadata.License = "MIT" - }) - .Build(); - - return runner.RunAsync(args).AsTask(); - } -} -``` - -We can add commands one by one, or use `params []` and `ReadOnlySpan`, if you want, you can also dynamically create an array of `Command`s from the executing assembly or any other using `reflection` and pass it as an argument, however this will be subject to trimming and can affect AOT compatibility. - -Fluent API (builder pattern) is used to add the commands, set the output to the console (we can also set it to any `TextWriter`), and modify the global metadata that will be used for HelpText generation, and finally, build. - -Running the app with `RunAsync` parses the `args`, and handles `help` requests, both global and per command, it delegates the execution to the appropriate command and injects arguments. After parsing the command name (first argument), `RunAsync` will also trigger `Arguments.ForwardPositionalArguments`, which will remove the command name and shift the arguments, so you don't need to account for it inside the logic of the command. - -### Validation - -Validation is performed at runtime depending on the actual logic inside the `ExecuteAsync` or `Execute` methods in each command. You choose how to interpret or handle each argument. - -```csharp -public override int Execute(Arguments args) { - if (!args.TryGetValue("x", 20, out int x)) { - // This examples checks if arguments has a named argument by name "x" (-x or --x) - // And the value of this argument can be parsed as an integer. - // A default value of 20 is also supplied - // If the value is not found or can't be parsed, it will be set to the default value (20) - // otherwise the parsed value. - Console.WriteLine("X was not found or had an invalid format, setting it to default (20)"); - } - Console.WriteLine(x); - return 0; -} -``` - -Because you provide the actual type (no inference is needed), reflection is also not needed, thus, Native AOT compatibility is maintained without the possibility of trimming. With the consolidated APIs of `Arguments` you can validate and parse concisely with minimal verbosity. - -### Minimalistic Structure Without Command Classes - -As validation and parsing (the main pain points of CLI development) are manged through the `Arguments` object. You can use it directly if you don't need the global orchestration of `CliRunner`. - -Example: Imagine you wanted a one `.cs` file that will take 2 numbers and add them, here's how to do that: - -```csharp -using Sharpify.CommandLineInterface; -// using top level statements (>= .NET 5) Program.cs implicitly gets string[] args -Arguments arguments = Parser.ParseArguments(args); -// For the example we will decide that we expect named parameters x and y -if (!arguments.TryGetValue("x", 0, out int x)) { - Console.WriteLine("Parameter \"x\" is required."); - return 1; // 1 is a common code for error -} -if (!arguments.TryGetValue("y", 0, out int y)) { - Console.WriteLine("Parameter \"y\" is required."); - return 1; -} -// If we reached here, we validated and parsed x and y successfully -Console.WriteLine($"{x} + {y} = {x + y}"); -return 0; // 0 is a common success code -``` - -In this example, we created a functional CLI that validates the existence and parses 2 named parameters, and used them, all in 10 lines of code. - -### Arguments Key Logic - -`Arguments` is a key-value-pair wrapper around `Dictionary` which stores mapped arguments. To ensure a wide variety of applications, it parses arguments in the following way: - -* Positional arguments are retrieved and parsed by using the position as key, for example: for the first argument (not named or flag), it could be retrieved by the key "0" or simply the number 0. -* Named arguments are parsed as regular key and value, dashes are removed from the key. So "--n" or "-n", key is "n". (But without dashes "n" will be registered as value of positional argument) - * If a number is following a dash, it will be considered a numeric value, so don't use numbers as keys. -* Flags are like named arguments but whose value is empty, in order to avoid them being interpreted as named arguments, it is best practice to keep them *after* all the other parameters. - -To handle the above there are the following overload resolutions in `Arguments`: - -* `TryGetValue(int position, out string value)` - Will `.ToString()` the position and check the arguments. -* `TryGetValue(string key, out string value)` - Will check the arguments for the key. -* `HasFlag(string flag)` - Will check the arguments for the flag, so it will check both named key and that value is empty. -* `TryGetValue(ReadOnlySpan keys, out string value)` - Will check the arguments for the keys, so the first matching key will be returned. This can be used to work with aliases (such as "-f" or "--file", it will find whichever the user enters and parse the value into the same variable) -* `ContainsKey(string key)` - Will check the arguments for the key. The argument in this case can be a named argument or flag, this overload doesn't distinguish between them. -* `ContainsKey(int position)` - Will `.ToString()` the position and check if a positional argument exists. - -Arguments also support parameters which their value is a group of inputs, think of how the tool `rm` support any number of files, this is the same here. To further help working with these scenarios `TryGetValues` overloads accept a `separator` and return either a `string[]` or `T[]`. See all the options below. - -### Arguments - All methods - -```csharp -// CORE FUNCTIONS: -int Count; -bool AreEmpty; -static readonly Arguments Empty; -ReadOnlyMemory ArgsAsMemory(); // inner input - after parsing and before mapping -ReadOnlySpan ArgsAsSpan(); // same but as span -Arguments ForwardPositionalArguments(); // returns a new instance with the positional arguments forwarded -// So position 0 is deleted, and what was 1 becomes new 0, and so on. -// Non positional arguments are not affected. -ReadOnlyDictionary GetInnerDictionary(); // returns the inner dictionary (advanced, useful mostly for debugging) - -// SINGLE VALUE CHECKS: -bool Contains(string key); -bool Contains(int position); -bool HasFlag(string flag); -bool TryGetValue(int position, out string value); -bool TryGetValue(string key, out string value); -bool TryGetValue(ReadOnlySpan keys, out string value); -/// T : IParsable -bool TryGetValue(int position, T defaultValue, out T value); -bool TryGetValue(string key, T defaultValue, out T value); -bool TryGetValue(ReadOnlySpan keys, T defaultValue, out T value); -T GetValue(string key, T defaultValue); -T GetValue(int position, T defaultValue); -T GetValue(ReadOnlySpan keys, T defaultValue); -/// TEnum : struct, Enum -bool TryGetEnum(int position, out TEnum value); -bool TryGetEnum(int position, bool ignoreCase, out TEnum value); -bool TryGetEnum(int position, TEnum defaultValue, bool ignoreCase, out TEnum value); -bool TryGetEnum(string key, out TEnum value); -bool TryGetEnum(string key, bool ignoreCase, out TEnum value); -bool TryGetEnum(string key, TEnum defaultValue, bool ignoreCase, out TEnum value); -bool TryGetEnum(ReadOnlySpan keys, out TEnum value); -bool TryGetEnum(ReadOnlySpan keys, bool ignoreCase, out TEnum value); -bool TryGetEnum(ReadOnlySpan keys, TEnum defaultValue, bool ignoreCase, out TEnum value); -TEnum GetEnum(int position, TEnum defaultValue); -TEnum GetEnum(int position, TEnum defaultValue, bool ignoreCase); -TEnum GetEnum(string key, TEnum defaultValue); -TEnum GetEnum(string key, TEnum defaultValue, bool ignoreCase); -TEnum GetEnum(ReadOnlySpan keys, TEnum defaultValue); -TEnum GetEnum(ReadOnlySpan keys, TEnum defaultValue, bool ignoreCase); - -/// Multiple values (i.e. Arrays of values for single key) -bool TryGetValues(int position, string? separator, out string[] values); -bool TryGetValues(string key, string? separator, out string[] values); -bool TryGetValues(ReadOnlySpan keys, string? separator, out string[] values); -/// T : IParsable - Ensure to set the type for the out parameter -bool TryGetValues(int position, string? separator, out T[] values); -bool TryGetValues(string key, string? separator, out T[] values); -bool TryGetValues(ReadOnlySpan keys, string? separator, out T[] values); -``` - -### Custom Parsing - -`Parser` is a static class that provides the functionality of mapping inputs to an `Arguments` object, it also has a function of parsing an input such as string (or `ReadOnlySpan`) to a `List`, it is efficient and different than `string.Split()` since it splits both on space and quotes, giving quotes priority, so that whatever is within quotes, will remain a single string, regardless of how many spaces there are inside. This can be especially important if you need file names that could contain spaces, or any other text. - -`Parser` also has overloads for mapping arguments that configure a `StringComparer`, by default a `StringComparer.OrdinalIgnoreCase` is used, but whatever you prefer can be used instead. - -### Overloads of `CliRunner.RunAsync` - -`CliRunner.RunAsync` has overloads for `ReadOnlySpan` (string), `IList` (direct cast from `string[]` or `List`), and `Arguments`, giving you full control over your input, and even custom parsing. - -## Contact - -For bug reports, feature requests or offers of support/sponsorship contact - -> This project is proudly made in Israel 🇮🇱 for the benefit of mankind. diff --git a/src/Sharpify.CommandLineInterface/Sharpify.CommandLineInterface.csproj b/src/Sharpify.CommandLineInterface/Sharpify.CommandLineInterface.csproj deleted file mode 100644 index 8239efa..0000000 --- a/src/Sharpify.CommandLineInterface/Sharpify.CommandLineInterface.csproj +++ /dev/null @@ -1,39 +0,0 @@ - - - - net9.0;net8.0 - latest - enable - 2.0.0 - enable - true - David Shnayder - David Shnayder - MIT - CHANGELOGLATEST.md - True - Sharpify.CommandLineInterface - An standalone package focused on creating minimalistic AOT compatible command line interfaces - https://github.com/dusrdev/Sharpify - https://github.com/dusrdev/Sharpify - git - Extensions;HighPerformance;Cli;Parser;Interface;CommandLine - true - true - false - true - - - - - - - - - - - <_Parameter1>Sharpify.CommandLineInterface.Tests - - - - \ No newline at end of file diff --git a/src/Sharpify.CommandLineInterface/SynchronousCommand.cs b/src/Sharpify.CommandLineInterface/SynchronousCommand.cs deleted file mode 100644 index 6e78a39..0000000 --- a/src/Sharpify.CommandLineInterface/SynchronousCommand.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Sharpify.CommandLineInterface; - -/// -/// An alternative to that runs synchronously. -/// -/// -/// This is syntactic sugar for wrapping returns from ExecuteAsync in ValueTask.FromResult -/// -public abstract class SynchronousCommand : Command { - /// - public override ValueTask ExecuteAsync(Arguments args) { - return ValueTask.FromResult(Execute(args)); - } - - /// - /// Executes the command. - /// - /// - /// Status code - public abstract int Execute(Arguments args); -} \ No newline at end of file diff --git a/src/Sharpify.Data/Build.txt b/src/Sharpify.Data/Build.txt deleted file mode 100644 index b25b581..0000000 --- a/src/Sharpify.Data/Build.txt +++ /dev/null @@ -1,10 +0,0 @@ -nuget: -dotnet clean -c Release -dotnet build -c Release -dotnet pack -c Release -p:SignAssembly="" - -dll: -dotnet build -c Release -p:SignAssembly="" - -docs: -git subtree push --prefix docs https://github.com/dusrdev/Sharpify.wiki.git master diff --git a/src/Sharpify.Data/CHANGELOG.md b/src/Sharpify.Data/CHANGELOG.md deleted file mode 100644 index c224b48..0000000 --- a/src/Sharpify.Data/CHANGELOG.md +++ /dev/null @@ -1,174 +0,0 @@ -# CHANGELOG - -## v2.6.0 - -* Updated to support NET9 -* Updated to use `Sharpify 2.5.0` and `MemoryPack 1.21.3` -* All `byte[]` value returning reads from the database, now return `ReadOnlyMemory` instead, previously, to maintain the integrity of the value, a copy was made and returned, because there wasn't any guarantee against modification, `ReadOnlyMemory` enforced this guarantee without creating a copy, if you just reading the data this is much more performant, and if you want to modify it, you can always create a copy at your own discretion. -* Decreased memory allocations for the `Func` based `Remove` method. -* Removed compiler directions that potentially could not allow the JIT compiler to perform Dynamic PGO. -* `Upsert{T}` overloads now have a `Func updateCondition` parameter that can be used to ensure that a condition is met before being updated, this is a feature of NoSQL databases that protects against concurrent writes overwriting each other. Now you can use this feature in `Sharpify.Data` as well. - * Of course this feature is also available in `UpsertMany{T}` overloads, and also in the overloads of the `JsonTypeInfo T`. - * To make it easier to see the result, these `Upsert` methods now return `bool`. - * `False` will only be returned IF ALL of the following conditions are met: - 1. Previous value was stored under this key - 2. The previous value was successfully deserialized with the right type - 3. The `updateCondition` was not met -* `Database` now tracks changes (additions, updates, removals) and compares them serialization events, to avoid serialization if no updates occurred since the previous serialization. - * This means that you can automate serialization without worrying about potential waste of resources, for example you could omit `SerializeOnUpdate` from the `DatabaseConfiguration`, then create a background task that serializes on a given interval for example with `Sharpify.Routines.Routine` or `Sharpify.Routines.AsyncRoutine`, and it will only actually serialize if updates occurred. This can significantly improve performance in cases where there are write peaks, but the database is mostly read from. -* You can now set the `Path` in the `DatabaseConfiguration` to an empty string `""` to receive an in-memory version of the database. -It still has serialization methods, but they don't perform any operations, they are essentially duds. -* `TryReadToRentedBuffer where T : IMemoryPackable` will now be able to retrieve the precise amount of needed space, so the size of the rented buffer will more accurately reflect the size of the data, this should help with dramatically improve performance when dealing with large objects. Before the buffer would've rented a capacity according to the length of the serialized object, meaning that the buffer was x times larger than needed when x is size(object) / size(byte). So the larger was each object, the `RentedBufferWriter` size would grow exponentially, now it grows linearly, maximizing efficiency. -* And minor optimizations (same as every other release 😜) - -## v2.5.0 - -* Updated to use version 2.2.0 of `Sharpify` and later, and `MemoryPack` 1.21.1 and later. -* Removed apis that were previously marked as `Obsolete` -* An overload with `ReadOnlySpan{byte}` was added to `Upsert`, enables using `Upsert` on other types, such as lists or even pooled arrays. Be careful when using the `byte[]` overload, as now it doesn't create copies and instead inserts the reference instead to improve performance where needed. **DO NOT USE** this overload with buffers which you only temporarily own, for those use the new `ReadOnlySpan{byte}` overload. -* `UpsertMany` now also has a `ReadOnlySpan{T}` accepting overload, it will not improve performance, but still adds flexibility, it doesn't replace the original `T[]` overload, it is an alternative. If the main `T[]` suits your context, as in you already have a fixed size array, it will actually be more performant. -* New method `Database.TryReadToRentedBuffer` now rents an appropriately sized `RentedBufferWriter{T}` and attempts to write the value to it, then return it. If it is successful, the result can be viewed with `RentedBufferWriter{T}.WrittenSpan` and other apis, if not successful (i.e key not found), a disabled `RentedBufferWriter{T}` will be returned, it can be checked with the `RentedBufferWriter{T}.IsDisabled` property. - * There is also an optional parameter for `reservedCapacity`, this will make sure the buffer has a matching amount free capacity after writing the data, an explanation of why this is useful will be lower down the page. - * There are overloads in `Database` for both `byte` and `T : IMemoryPackable{T}`, as well as methods in `MemoryPackableDatabaseFilter{T}` and `FlexibleDatabaseFilter{T}`. -* **POSSIBLY BREAKING** for those who use the `JSON` serialized `T` overloads, in the previous versions, the `JsonSerializer` was used to generate a `string`, which then passed to `MemoryPack` for secondary serialization. To improve performance, now `JsonSerializer` directly serializes to `byte[]` which means using these types is now both faster and more memory efficient than before. But if you try to read values with the new version which were serialized in the old version, there may be inconsistencies which may cause errors. - * If you encounter such issues, you may want to synchronize manually as follows: - * Read the values with `TryGetString`, then use `JsonSerializer.Deserialize` on the strings to get the actual values, you can then proceed to upsert those values with the `JSON` overloads on the same keys. -* Some of the new changes were also leveraged internally to improve performance/memory allocations in various places. - -## v2.4.1 - -* Updated to version 2.0.0 of `Sharpify`. - -If you use an older version of `Sharpify` this update is not a requirement, it mainly addresses a fix since `DecryptBytes` of `AesProvider` in `Sharpify` now has 2 overloads with 2 parameters, and the compiler seems to trim the wrong one, unless the optional parameter is specified. - -* Also `preFilter` in `Database.Remove()` was renamed to `keyPrefix` to better signify its purpose. this change doesn't alter behavior. - -## v2.4.0 - -* Added an overload for `Remove` which takes in a `Func keySelector`, this function is more optimized then using if you were to iterate yourself and call the old `Remove` as this one will execute serialization only once at the end, and only if removals actually happened (selector actually matched at least one key). - * The new `Remove` method also has an overload that accepts a `string? preFilter` as well, which can be used to only check keys that start with `preFilter` (the `keySelector` doesn't need to account for it, it will applied to a slice if the `preFilter` is matched), if left `null` it will be ignored. - * This addition was also propagated to both implementations of the `IDatabaseFilter`, i.e `MemoryPackDatabaseFilter` and `FlexibleDatabaseFilter`, both of which modify the incoming delegate to the use the filtered key, enabling simple delegate matches without relying on implementation details, they don't have the option to use a `preFilter` as they themselves use the statically generated type filters they create. -* To accommodate the `Remove` methods, `MemoryPackDatabaseFilter` and `FlexibleDatabaseFilter` now create a `public static readonly string KeyFilter` property, which is the prefix they append to the keys, this is used internally for `Remove` but perhaps the could help if you need to inherit from these classes and override the `Remove` method. - * Both of them also use `KeyFilter` internally to generate the filtered keys in a slightly more efficient way to before. - * The `static readonly` field that contained the generic type name was also removed as it was integrated into `KeyFilter` at with no additional cost. - -## v2.3.0 - -* The codebase was refactored and separated into smaller files, to make it much easier to work with. -* `Upserts` of all overloads and entry points will now throw an exception if the `value` is `null`. This change was made to ensure the integrity of `TryGetValue` (from all variants) as it checks nullability of the value to ensure the key exists. This is also no point to add null values, as they are not meaningful data, by enforcing not null, the code becomes simpler, and less error prone. -* Added `StringEncoding` choice to `DatabaseConfiguration`, it defaults to `UTF8`, but can also be `UTF16`, `UTF8` requires less memory in default cases, but `UTF16` can be more efficient if most of the strings are `Unicode`. -* The factory methods named `Create` and `CreateAsync` were renamed to `CreateOrLoad` and `CreateOrLoadAsync` respectively, which better explains exactly what they do at a glance. This should make more sense to code reviewers who are not familiar with the package. -* **Filtering** - * `IDatabaseFilter` which is the abstraction of the filters now has proxies for `Serialize` and `SerializeAsync` which previously couldn't be accessed via this layer, but may be required if `SerializeOnUpdate=false`. - * `DatabaseFilter where T : IMemoryPackable` was renamed to `MemoryPackDatabaseFilter`, and the Database method to create an instance was renamed from `Database.FilterByType` to `CreateMemoryPackFilter`. - * A new filter is introduced: `FlexibleDatabaseFilter where T : IFilterable`, which enables filtering on any type, without depending on `MemoryPack` implementation, for this an interface `IFilterable` was also added, the interface will require implementing a few methods which dictate how to serialize and deserialize the specific value type. The `FlexibleDatabaseFilter` inturn will use those implementation to provide the same experience. The filter can be created by `Database.CreateFlexibleFilter` -* All JSON based `T` overloads now require a `JsonTypeInfo` instead of the `JsonSerializerContext`, this change increases safety in cases where a `JsonSerializerContext` which didn't implement `T` would still be accepted and an exception would've been thrown at runtime, All the changes necessary at the client side are to add `.T` at the end of `JsonSerializerContext.Default` parameter. - -### Workaround for broken NativeAot support from MemoryPack - -As of writing this, MemoryPack's NativeAot support is broken, for any type that isn't already in their cached types, the `MemoryPackFormatterProvider` uses reflection to get the formatter, which fails in NativeAot. -As a workaround, we need to add the formatters ourselves, to do this, take any 1 static entry point, that activates before the database is loaded, and add this: - -```csharp -// for every T type that relies on MemoryPack for serialization, and their inheritance hierarchy -// This includes types that implement IMemoryPackable (i.e types that are decorated with MemoryPackable) -MemoryPackFormatterProvider.Register(); -// If the type is a collection or dictionary use the other corresponding overloads: -MemoryPackFormatterProvider.RegisterCollection(); -// or -MemoryPackFormatterProvider.RegisterDictionary(); -// and so on... -// for all overloads check peek the definition of MemoryPackFormatterProvider, or their Github Repo -``` - -**Note:** Make sure you don't create a new static constructor in those types, `MemoryPack` already creates those, you will need to find a different entry point. - -With this the serializer should be able to bypass the part using reflection, and thus work even on NativeAot. - -P.S. The base type of the Database is already registered the same way on its own static constructor. - -### Announcement - -Internal benchmarks already show a considerable performance improvement in the .NET8 version vs .NET7, and there are already multiple cases where the separate implementations have to be made in order to change to accommodate both versions, with .NET9 release approaching, more cases like this are expected, due the added complexity, .NET7 support will be dropped with the release of version 2.4.0 in the future. Codebases that are enable to migrate to newer .NET version will be forced to use older version of Sharpify.Data. - -.NET8 support will be maintained much longer since it is an LTS release. - -## v2.2.0 - -**Possibly BREAKING** This version changes the base types of `Database` from `ReadOnlyMemory` to `byte[]`, apparently the change using `ReadOnlyMemory` produced invalid results as if the underlying array disappeared, which left users of a empty memory which has phantom meta-data. -To ensure this doesn't happen now `byte[]` is used to make sure all of the data remains, to prevent ownership issues, methods which return the actual `byte[]` values, now instead return a copy (albeit an efficient one), to make sure the data integrity in the database is safe. Same goes for inserts, where previously the source was placed in the database, this might have caused it to be prematurely garbage collected, thus leaving the database with a phantom metadata, now those actions create a copy and store it instead. - -* As per the issues described above and their respective solutions, memory allocations should rise in some cases, however, it is a good trade-off for ensuring absolute integrity. -* Some users mentioned that as other databases, have options to query collections, ie, returning more than 1 to 1 item per key. It could greatly improve the usability of `Database` to have such a feature. In this version the feature is introduced. -`TryGetValue` where `T : IMemoryPackable`, now have `TryGetValues` overload, which returns a `T[]`, all under the same key. Respectively, an overload `UpsertMany` was added with the same type restrictions. This also works from `IDatabaseFilter`, these options should greatly improve useability when it comes to storing collections. -* Another possibly breaking change but one required for quality of life was to rename the `string value` overloads to `TryGetString` instead of `TryGetValue`, since they caused ambiguity which hindered the compilers ability to the infer the data type when using `var` which we all love. - -## v2.1.0 - -* `DatabaseFilter{T}` type was changed from `readonly struct` to `class`, and it now implements the `IDatabaseFilter{T}` interface. the internal `CreateKey` that in the default implementation uses the type name and `:` to create a "filtered" key, is now marked as virtual. So that it is possible to inherit from `DatabaseFilter{T}` and override `CreateKey` to either use a different template, or even add to it, for example if you have nested generics, such as `TMemoryPackable`, in which case the default `DatabaseFilter{T}` would not be able do distinguish between the inner generic, possibly causing issues with serialization and deserialization. The change to `class` also should be costly, as the database filter can be stored as a field as well, and used similarly to `dbContext` of other databases. In case overriding `CreateKey` is not enough, you can of course implement the whole `IDatabaseFilter{T}` interface if you so choose. - -* Small **breaking** change in `DatabaseFilter{T}`, the filter will now use a `:` delimiter between the type name and the key, this means you keys won't be found if were upserted using pre-change filters. This is unfortunate but necessary change in order to 1. enable better filtering of keys from the `Database`, enabling searching and using split to get the second portion of the key. and 2. to lay the groundwork of possibly implementing more filters in the future. - -* A temporary **FIX** to the **breaking** change in from the addition of the delimiter to `DatabaseFilter{T}` could be implemented rather easily using the new change from above, simply inherit from `DatabaseFilter{T}`, don't add anything, just override the `CreateKey` function to return `string.Concat(TName, key)`, this will behave exactly the same as the previous version of `DatabaseFilter{T}`. Nevertheless, I recommend this only as a temporary fix if you want to install the update but use existing data. at some point you should use the new feature. - -`DatabaseFilter{T}` was initially designed better in the context of APIs, no longer offering the `Get`, but instead using `TryGetValue`, while it might require 1 line of code more, when reading and writing the code, it is less ambiguous, before, a null or default result could indicate `not found`, `failed to deserialized`, and even upserted as null. Now if `TryGetValue` returns false there can only be one reason and that is that the key did not exist. - -* To improve this conciseness, `Database` now has `TryGetValue` offerings, for regular `ReadOnlyMemory{byte}` output, `IMemoryPackable{T}` and `string`. These are now the preferred APIs to use when retrieving values. -* The old `Get` variants of `Database` are now marked as `Deprecated` to signal they shouldn't be used. This was made to reduce the amount of breaking changes in this version, the `Get` variants will stay on as `Deprecated` until the next `Major` version, at which point they will be deleted. I hope this gives you enough time to "migrate". - -* `UpsertAsString` and `UpsertAsT`(JSON version), are now also named just `Upsert`, their overload is inferred from the type of the arguments as string is not `IMemoryPackable{T}` and the JSON `T` version requires a `JsonSerializerContext`. -* Also added `TryGetValue` overloads for JSON `T`, you will know them because they both require a `JsonSerializerContext`. apparently before this version you could only `Upsert` a JSON `T`, I apologize for the oversight. - -## v2.0.2 - -* Moved `_lock` acquiring statements into the `try-finally` blocks to handle `out-of-band` exceptions. Thanks [TheGenbox](https://www.reddit.com/user/TheGenbox/). -* Modified all internal `await` statements to use `ConfigureAwait(false)`, also thanks to [TheGenbox](https://www.reddit.com/user/TheGenbox/). - -## v2.0.1 - -* Added `ContainsKey` and `Remove` functions to `DatabaseFilter{T}` to give it essentially the same functionality scope as the `Database` itself. -* Removed `Flags` attribute from `DataChangeType` as it wasn't really a flag type, it can only be one thing. - -## v2.0.0 - BREAKING CHANGE - -The entire package has been reworked. - -* `Database{T}` was removed, and so was `DatabaseOptions` -* `Database` is now the only offer, and was tremendously optimized. -* GC pressure massively reduced due to very heavy usage of pooling. -* The options that were previously part of `DatabaseOptions` enum are now simple `bool`s in `DatabaseConfiguration` -* `string` value type upsert and get now uses `MemoryPack` for improved efficiency. -* the base value type is now a `ReadOnlyMemory` instead of `byte[]` enabling internal use of better apis and more optimization, client usage shouldn't change much because of implicit converters. -* `DatabaseFilter{T}` is a `readonly struct` filter of the `Database` based on a types that are `IMemoryPackable`, the filter should provide an AOT-friendly way to use multiple types in the same file, while ensuring no unforeseen `deserialization` issues occur because of key exists but with value of different type. `DatabaseFilter{T}` is simple and AOT-friendly because it does no changes to `Database` whatsoever, instead just wraps the key that it uses with a modification that includes the name of the type. It is only an abstraction. Nevertheless, this abstraction is very powerful as it takes no additional effort from the user, and allowing the user to create generic consumer classes, all of which use the same database, but injecting the filter instead of the database, making it virtually impossible that a generic class will try to use a value of a different type. -* Using `DatabaseFilter{T}` without per key encryption should perform on par with `Database{T}`, which allowed its removal due to deprecation. -* `DatabaseFilter{T}` is a lightweight struct that won't have a big performance impact when it is copied by value, but it is possible to negate even that by using the `ref` and `in` keywords in your own APIs -* An internal abstraction of `DatabaseSerializer`, which has multiple implementations that vary by the `DatabaseConfiguration`, is now created with the database initialization and reused, enabling both more efficient hot-paths for all serialization related functionality and usage of code that is specifically optimized per each variation of `DatabaseConfiguration`. -* More optimizations were made to allow JIT to branch eliminate parts of the manual `Serialize` and `SerializeAsync` based on the `DatabaseConfiguration`. -* Lower level APIs are now used internally to interact with the underlying data structure that should shave a few nanoseconds out of the CRUD operations. - -The deletion of `Database{T}` gave way to make `Database` a much greater and more customizable database, all the previous functionality was improved, and the usage `DatabaseFilter{T}` without per-key encryption, now offers a replacement to `Database{T}` which is more extensible to allow usage for multiple `{T}` types, where as `Database{T}` allowed a single type. - -The new changes mean that runtime deserialization exceptions are almost guaranteed if you try to use it on a pre-existing database. It is recommended to either start from fresh (Which is not a big issue if you used the database for caching), or perform some matching (the easiest of which will probably be to extract all the values using the `GetKeys` and `Get` functions, save them somewhere and delete the database, then upgrade, initialize a database with similar configuration and add all the values back) - -## v1.1.0 - -* **BREAKING** `UpsertAsT` functions signature changed to force usage of new parameter, which is a `JsonSerializerContext` that can serialize `T`. -* Simplified structures of inner data representation, slightly reducing assembly size. -* `Sharpify.Data` is now fully AOT compatible - -## v1.0.3 - -* Upgraded concurrency synchronization model of `Database` and `Database{T}` to get more accurate reads when other threads are writing. -* Both now implement `IDisposable` to release the resources of the synchronization and should be disposed of properly, but since they are designed to be used throughout the lifetime of the application, it isn't absolutely crucial to do this, and the implement finalizer should take care of this, if disposing of it from your end is inconvenient - -## v1.0.2 - -* Fixed issue where an exception would be thrown if `Upsert` overrides a key. it should by design override. - -## v1.0.1 - -* Further optimized both database, heavily utilizing array pooling for encryption - -## v1.0.0 - -* Initial release - check github for information diff --git a/src/Sharpify.Data/CHANGELOGLATEST.md b/src/Sharpify.Data/CHANGELOGLATEST.md deleted file mode 100644 index 7576a0d..0000000 --- a/src/Sharpify.Data/CHANGELOGLATEST.md +++ /dev/null @@ -1,45 +0,0 @@ -# CHANGELOG - -## v2.6.0 - -* Updated to support NET9 -* Updated to use `Sharpify 2.5.0` and `MemoryPack 1.21.3` -* All `byte[]` value returning reads from the database, now return `ReadOnlyMemory` instead, previously, to maintain the integrity of the value, a copy was made and returned, because there wasn't any guarantee against modification, `ReadOnlyMemory` enforced this guarantee without creating a copy, if you just reading the data this is much more performant, and if you want to modify it, you can always create a copy at your own discretion. -* Decreased memory allocations for the `Func` based `Remove` method. -* Removed compiler directions that potentially could not allow the JIT compiler to perform Dynamic PGO. -* `Upsert{T}` overloads now have a `Func updateCondition` parameter that can be used to ensure that a condition is met before being updated, this is a feature of NoSQL databases that protects against concurrent writes overwriting each other. Now you can use this feature in `Sharpify.Data` as well. - * Of course this feature is also available in `UpsertMany{T}` overloads, and also in the overloads of the `JsonTypeInfo T`. - * To make it easier to see the result, these `Upsert` methods now return `bool`. - * `False` will only be returned IF ALL of the following conditions are met: - 1. Previous value was stored under this key - 2. The previous value was successfully deserialized with the right type - 3. The `updateCondition` was not met -* `Database` now tracks changes (additions, updates, removals) and compares them serialization events, to avoid serialization if no updates occurred since the previous serialization. - * This means that you can automate serialization without worrying about potential waste of resources, for example you could omit `SerializeOnUpdate` from the `DatabaseConfiguration`, then create a background task that serializes on a given interval for example with `Sharpify.Routines.Routine` or `Sharpify.Routines.AsyncRoutine`, and it will only actually serialize if updates occurred. This can significantly improve performance in cases where there are write peaks, but the database is mostly read from. -* You can now set the `Path` in the `DatabaseConfiguration` to an empty string `""` to receive an in-memory version of the database. -It still has serialization methods, but they don't perform any operations, they are essentially duds. -* `TryReadToRentedBuffer where T : IMemoryPackable` will now be able to retrieve the precise amount of needed space, so the size of the rented buffer will more accurately reflect the size of the data, this should help with dramatically improve performance when dealing with large objects. Before the buffer would've rented a capacity according to the length of the serialized object, meaning that the buffer was x times larger than needed when x is size(object) / size(byte). So the larger was each object, the `RentedBufferWriter` size would grow exponentially, now it grows linearly, maximizing efficiency. -* And minor optimizations (same as every other release 😜) - -### Reminder: Workaround for broken NativeAot support from MemoryPack - -As of writing this, MemoryPack's NativeAot support is broken, for any type that isn't already in their cached types, the `MemoryPackFormatterProvider` uses reflection to get the formatter, which fails in NativeAot. -As a workaround, we need to add the formatters ourselves, to do this, take any 1 static entry point, that activates before the database is loaded, and add this: - -```csharp -// for every T type that relies on MemoryPack for serialization, and their inheritance hierarchy -// This includes types that implement IMemoryPackable (i.e types that are decorated with MemoryPackable) -MemoryPackFormatterProvider.Register(); -// If the type is a collection or dictionary use the other corresponding overloads: -MemoryPackFormatterProvider.RegisterCollection(); -// or -MemoryPackFormatterProvider.RegisterDictionary(); -// and so on... -// for all overloads check peek the definition of MemoryPackFormatterProvider, or their Github Repo -``` - -**Note:** Make sure you don't create a new static constructor in those types, `MemoryPack` already creates those, you will need to find a different entry point. - -With this the serializer should be able to bypass the part using reflection, and thus work even on NativeAot. - -P.S. The base type of the Database is already registered the same way on its own static constructor. diff --git a/src/Sharpify.Data/DataChangeType.cs b/src/Sharpify.Data/DataChangeType.cs deleted file mode 100644 index d4ff7d3..0000000 --- a/src/Sharpify.Data/DataChangeType.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Sharpify.Data; - -/// -/// The type of changed that occurred on a key -/// -public enum DataChangeType : byte { - /// - /// A key was inserted or updated - /// - Upsert = 1 << 0, - /// - /// A key was removed - /// - Remove = 1 << 1 -} \ No newline at end of file diff --git a/src/Sharpify.Data/DataChangedEventArgs.cs b/src/Sharpify.Data/DataChangedEventArgs.cs deleted file mode 100644 index 6555c79..0000000 --- a/src/Sharpify.Data/DataChangedEventArgs.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Sharpify.Data; - -/// -/// Event arguments for data changed (addition, update or removal of keys) -/// -public sealed class DataChangedEventArgs : EventArgs { - /// - /// The key that was changed - /// - public required string Key { get; init; } - - /// - /// The value that was changed - /// - public required object? Value { get; init; } - - /// - /// The type of change that occurred - /// - public required DataChangeType ChangeType { get; init; } -} \ No newline at end of file diff --git a/src/Sharpify.Data/DatabaseBase.cs b/src/Sharpify.Data/DatabaseBase.cs deleted file mode 100644 index 6ac4d38..0000000 --- a/src/Sharpify.Data/DatabaseBase.cs +++ /dev/null @@ -1,166 +0,0 @@ -using System.Collections.Concurrent; - -using MemoryPack; - -using Sharpify.Data.Serializers; - -namespace Sharpify.Data; - -/// -/// A high performance database that stores String:byte[] pairs. -/// -/// -/// Do not create this class directly or by using an activator, the factory methods are required for proper initializations using different abstractions. -/// -public sealed partial class Database : IDisposable { - /// - /// The unique identifier of the database. - /// - public readonly Guid Guid = Guid.NewGuid(); - - private readonly Dictionary _data; - - private readonly ConcurrentQueue> _queue = new(); - - private volatile bool _disposed; - - // The updates count increments every time a value is updated, added or removed. - private long _updatesCount = 0; - - // The serialization reference is checking against the updates to reduce redundant serialization. - private long _serializationReference = 0; - -#if NET9_0_OR_GREATER - private readonly Lock _sLock = new(); -#else - private readonly object _sLock = new(); -#endif - private readonly ReaderWriterLockSlim _lock = new(); - private readonly AbstractSerializer _serializer; - private volatile int _estimatedSize; - - private const int BufferMultiple = 4096; - private const int ReservedBufferSize = 256; - - private readonly bool _isInMemory; - - /// - /// Overestimated size of the database. - /// - private int GetOverestimatedSize() { - return (int)Math.Ceiling((_estimatedSize + ReservedBufferSize) / (double)BufferMultiple) * BufferMultiple; - } - - /// - /// Holds the configuration for this database. - /// - public readonly DatabaseConfiguration Config; - - /// - /// Triggered when there is a change in the database. - /// - public event DataChangedEventHandler? DataChanged; - - /// - /// Represents the method that will handle the data changed event. - /// - /// The source of the event. - /// An instance of the DataChangedEventArgs class that contains the event data. - public delegate void DataChangedEventHandler(object sender, DataChangedEventArgs e); - - private void InvokeDataEvent(DataChangedEventArgs e) { - DataChanged?.Invoke(this, e); - } - - /// - /// Creates a high performance database that stores string-byte[] pairs. - /// - public static Database CreateOrLoad(DatabaseConfiguration config) { - AbstractSerializer serializer = AbstractSerializer.Create(config); - - if (!File.Exists(config.Path)) { - return config.IgnoreCase - ? new Database(new Dictionary(StringComparer.OrdinalIgnoreCase), config, serializer, 0) - : new Database(new Dictionary(), config, serializer, 0); - } - - int estimatedSize = Helper.GetFileSize(config.Path); - - Dictionary dict = serializer.Deserialize(estimatedSize); - - return new Database(dict, config, serializer, estimatedSize); - } - - /// - /// Creates asynchronously a high performance database that stores string-byte[] pairs. - /// - public static async ValueTask CreateOrLoadAsync(DatabaseConfiguration config, CancellationToken token = default) { - AbstractSerializer serializer = AbstractSerializer.Create(config); - - if (!File.Exists(config.Path)) { - return config.IgnoreCase - ? new Database(new Dictionary(StringComparer.OrdinalIgnoreCase), config, serializer, 0) - : new Database(new Dictionary(), config, serializer, 0); - } - - int estimatedSize = Helper.GetFileSize(config.Path); - - Dictionary dict = await serializer.DeserializeAsync(estimatedSize, token); - - return new Database(dict, config, serializer, estimatedSize); - } - - private Database(Dictionary data, DatabaseConfiguration config, AbstractSerializer serializer, int estimatedSize) { - _data = data; - Config = config; - _serializer = serializer; - _isInMemory = config.Path.Length == 0; - Interlocked.Exchange(ref _estimatedSize, estimatedSize); - } - - static Database() { - MemoryPackFormatterProvider.RegisterDictionary, string, byte[]>(); - } - - /// - /// Returns the amount of entries in the database. - /// - public int Count => _data.Count; - - /// - /// Returns a that can be used to filter the database by type. - /// - /// - /// - public IDatabaseFilter CreateMemoryPackFilter() where T : IMemoryPackable => new MemoryPackDatabaseFilter(this); - - /// - /// Returns a that can be used to filter the database by type. - /// - /// - /// - public IDatabaseFilter CreateFlexibleFilter() where T : IFilterable => new FlexibleDatabaseFilter(this); - - /// - /// Returns an immutable copy of the keys in the inner dictionary - /// - public IReadOnlyCollection GetKeys() { - try { - _lock.EnterReadLock(); - return _data.Keys; - } finally { - _lock.ExitReadLock(); - } - } - - /// - /// Frees the resources used by the database. - /// - public void Dispose() { - if (_disposed) { - return; - } - _lock.Dispose(); - _disposed = true; - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/DatabaseConfiguration.cs b/src/Sharpify.Data/DatabaseConfiguration.cs deleted file mode 100644 index eecfbda..0000000 --- a/src/Sharpify.Data/DatabaseConfiguration.cs +++ /dev/null @@ -1,55 +0,0 @@ -using MemoryPack; - -namespace Sharpify.Data; - -/// -/// Configuration for -/// -public record DatabaseConfiguration { - /// - /// The path to which the database file will be saved. - /// - /// - /// Setting path to an empty string "" will create an in-memory database. - /// - public required string Path { get; init; } - - /// - /// Whether the database keys case should be ignored. - /// - /// - /// This impacts performance on reads and deserialization. - /// - public bool IgnoreCase { get; init; } = false; - - /// - /// The encoding to use when serializing and deserializing strings in the database. - /// - public StringEncoding Encoding { get; init; } = StringEncoding.Utf8; - - /// - /// Whether to serialize the database automatically when it is updated. - /// - /// - /// This relates to adding, removing, and updating values. - /// - public bool SerializeOnUpdate { get; init; } = false; - - /// - /// Whether to trigger update events when the database is updated. - /// - /// - /// This relates to adding, removing, and updating values. - /// - public bool TriggerUpdateEvents { get; init; } = false; - - /// - /// General encryption key, the entire file will be encrypted with this. - /// - public string EncryptionKey { get; init; } = string.Empty; - - /// - /// Whether general encryption is enabled. - /// - public bool HasEncryption => EncryptionKey.Length > 0; -} \ No newline at end of file diff --git a/src/Sharpify.Data/DatabaseReads.cs b/src/Sharpify.Data/DatabaseReads.cs deleted file mode 100644 index 26d29a3..0000000 --- a/src/Sharpify.Data/DatabaseReads.cs +++ /dev/null @@ -1,304 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization.Metadata; - -using MemoryPack; - -using Sharpify.Collections; - -namespace Sharpify.Data; - -public sealed partial class Database { - /// - /// Checked whether the inner dictionary contains the . - /// - /// - public bool ContainsKey(string key) => _data.ContainsKey(key); - - /// - /// Tries to get the value for the . - /// - /// - /// - /// True if the value was found, false if not. - public bool TryGetValue(string key, out ReadOnlyMemory value) => TryGetValue(key, "", out value); - - /// - /// Tries to get the value for the . - /// - /// - /// individual encryption key for this specific value - /// - /// True if the value was found, false if not. - public bool TryGetValue(string key, string encryptionKey, out ReadOnlyMemory value) { - try { - _lock.EnterReadLock(); - // Get val reference - if (!_data.TryGetValue(key, out byte[]? val)) { // Not found - value = ReadOnlyMemory.Empty; - return false; - } - if (encryptionKey.Length is 0) { // Not encrypted - value = val ?? ReadOnlyMemory.Empty; - return true; - } - // Encrypted -> Decrypt - ReadOnlySpan valSpan = val ?? ReadOnlySpan.Empty; - value = Helper.Instance.Decrypt(valSpan, encryptionKey); - return true; - } finally { - _lock.ExitReadLock(); - } - } - - /// - /// Tries to get the values for the and write it to a - /// - /// - /// Reserved capacity after the values, useful to write additional data - /// - /// A rented buffer writer containing the values if they were found, otherwise a disabled buffer writer (can be checked with ) - /// - public RentedBufferWriter TryReadToRentedBuffer(string key, int reservedCapacity = 0) { - return TryReadToRentedBuffer(key, string.Empty, reservedCapacity); - } - - - /// - /// Tries to get the values for the and write it to a - /// - /// - /// - /// Reserved capacity after the values, useful to write additional data - /// - /// A rented buffer writer containing the values if they were found, otherwise a disabled buffer writer (can be checked with ) - /// - public RentedBufferWriter TryReadToRentedBuffer(string key, string encryptionKey = "", int reservedCapacity = 0) { - try { - _lock.EnterReadLock(); - // Get val reference - if (!_data.TryGetValue(key, out byte[]? val)) { // Not found - return new RentedBufferWriter(0); - } - if (encryptionKey.Length is 0) { // Not encrypted - var buffer = new RentedBufferWriter(val!.Length + reservedCapacity); - buffer.WriteAndAdvance(val); - return buffer; - } else { - ReadOnlySpan valSpan = val; - var buffer = new RentedBufferWriter(valSpan.Length + AesProvider.ReservedBufferSize + reservedCapacity); - int numWritten = Helper.Instance.Decrypt(valSpan, buffer.Buffer, encryptionKey); - buffer.Advance(numWritten); - return buffer; - } - } finally { - _lock.ExitReadLock(); - } - } - - /// - /// Tries to get the value for the . - /// - /// The type of object to retrieve. - /// The key used to identify the object in the database. - /// The retrieved object of type T, or default if the object does not exist. - /// True if the value was found, otherwise false. - public bool TryGetValue(string key, out T value) where T : IMemoryPackable { - return TryGetValue(key, string.Empty, out value); - } - - - /// - /// Tries to get the value for the . - /// - /// The type of object to retrieve. - /// The key used to identify the object in the database. - /// The encryption key used to decrypt the object if it is encrypted. - /// The retrieved object of type T, or default if the object does not exist. - /// True if the value was found, otherwise false. - public bool TryGetValue(string key, string encryptionKey, out T value) where T : IMemoryPackable { - try { - _lock.EnterReadLock(); - // Get val reference - if (!_data.TryGetValue(key, out byte[]? val)) { // Not found - value = default!; - return false; - } - ReadOnlySpan valSpan = val; - if (encryptionKey.Length is 0) { // Not encrypted - value = MemoryPackSerializer.Deserialize(valSpan, _serializer.SerializerOptions)!; - return true; - } - // Encrypted -> Decrypt - using var buffer = new RentedBufferWriter(valSpan.Length + AesProvider.ReservedBufferSize); - int length = Helper.Instance.Decrypt(valSpan, buffer.GetSpan(), encryptionKey); - buffer.Advance(length); - if (length is 0) { - value = default!; - return false; - } else { - value = MemoryPackSerializer.Deserialize(buffer.WrittenSpan, _serializer.SerializerOptions)!; - return true; - } - } finally { - _lock.ExitReadLock(); - } - } - - /// - /// Tries to get the value array stored in . - /// - /// The type of object to retrieve. - /// The key used to identify the object in the database. - /// The retrieved object of type T, or default if the object does not exist. - /// True if the value was found, otherwise false. - public bool TryGetValues(string key, out T[] value) where T : IMemoryPackable { - return TryGetValues(key, string.Empty, out value); - } - - - /// - /// Tries to get the value array stored in . - /// - /// The type of object to retrieve. - /// The key used to identify the object in the database. - /// The encryption key used to decrypt the object if it is encrypted. - /// The retrieved object of type T, or default if the object does not exist. - /// True if the value was found, otherwise false. - public bool TryGetValues(string key, string encryptionKey, out T[] values) where T : IMemoryPackable { - try { - _lock.EnterReadLock(); - // Get val reference - if (!_data.TryGetValue(key, out byte[]? val)) { // Not found - values = Array.Empty(); - return false; - } - ReadOnlySpan valSpan = val; - if (encryptionKey.Length is 0) { // Not encrypted - values = MemoryPackSerializer.Deserialize(valSpan, _serializer.SerializerOptions)!; - return true; - } - // Encrypted -> Decrypt - using var buffer = new RentedBufferWriter(valSpan.Length + AesProvider.ReservedBufferSize); - int length = Helper.Instance.Decrypt(valSpan, buffer.GetSpan(), encryptionKey); - buffer.Advance(length); - if (length is 0) { - values = default!; - return false; - } else { - values = MemoryPackSerializer.Deserialize(buffer.WrittenSpan, _serializer.SerializerOptions)!; - return true; - } - } finally { - _lock.ExitReadLock(); - } - } - - /// - /// Tries to get the values for the and write it to a - /// - /// - /// Reserved capacity after the values, useful to write additional data - /// - /// A rented buffer writer containing the values if they were found, otherwise a disabled buffer writer (can be checked with ) - /// - public RentedBufferWriter TryReadToRentedBuffer(string key, int reservedCapacity = 0) where T : IMemoryPackable { - return TryReadToRentedBuffer(key, string.Empty, reservedCapacity); - } - - - /// - /// Tries to get the values for the and write it to a - /// - /// - /// - /// Reserved capacity after the values, useful to write additional data - /// - /// A rented buffer writer containing the values if they were found, otherwise a disabled buffer writer (can be checked with ) - /// - public RentedBufferWriter TryReadToRentedBuffer(string key, string encryptionKey = "", int reservedCapacity = 0) where T : IMemoryPackable { - if (!TryGetValue(key, encryptionKey, out ReadOnlyMemory data)) { - return new RentedBufferWriter(0); - } - int dataLength = Helper.GetRequiredLength(data.Span); - int bufferLength = dataLength + reservedCapacity; - var buffer = new RentedBufferWriter(bufferLength); - Helper.ReadToRenterBufferWriter(ref buffer, data.Span, dataLength); - return buffer; - } - - /// - /// Tries to get the value for the . - /// - /// The key used to identify the object in the database. - /// The retrieved object of type T, or default if the object does not exist. - /// True if the value was found, otherwise false. - public bool TryGetString(string key, out string value) { - return TryGetString(key, string.Empty, out value); - } - - - /// - /// Tries to get the value for the . - /// - /// The key used to identify the object in the database. - /// The encryption key used to decrypt the object if it is encrypted. - /// The retrieved object of type T, or default if the object does not exist. - /// True if the value was found, otherwise false. - public bool TryGetString(string key, string encryptionKey, out string value) { - try { - _lock.EnterReadLock(); - // Get val reference - if (!_data.TryGetValue(key, out byte[]? val)) { // Not found - value = ""; - return false; - } - ReadOnlySpan valSpan = val; - if (encryptionKey.Length is 0) { // Not encrypted - value = MemoryPackSerializer.Deserialize(valSpan, _serializer.SerializerOptions)!; - return true; - } - // Encrypted -> Decrypt - using var buffer = new RentedBufferWriter(valSpan.Length + AesProvider.ReservedBufferSize); - int length = Helper.Instance.Decrypt(valSpan, buffer.GetSpan(), encryptionKey); - buffer.Advance(length); - if (length is 0) { - value = ""; - return false; - } else { - value = MemoryPackSerializer.Deserialize(buffer.WrittenSpan, _serializer.SerializerOptions)!; - return true; - } - } finally { - _lock.ExitReadLock(); - } - } - - /// - /// Tries to get the value for the . - /// - /// The key used to identify the object in the database. - /// - /// The retrieved object of type T, or default if the object does not exist. - /// True if the value was found, otherwise false. - public bool TryGetValue(string key, JsonTypeInfo jsonTypeInfo, out T value) { - return TryGetValue(key, string.Empty, jsonTypeInfo, out value); - } - - - /// - /// Tries to get the value for the . - /// - /// The key used to identify the object in the database. - /// The encryption key used to decrypt the object if it is encrypted. - /// - /// The retrieved object of type T, or default if the object does not exist. - /// True if the value was found, otherwise false. - public bool TryGetValue(string key, string encryptionKey, JsonTypeInfo jsonTypeInfo, out T value) { - if (!TryGetValue(key, encryptionKey, out ReadOnlyMemory bytes)) { - value = default!; - return false; - } - value = JsonSerializer.Deserialize(bytes.Span, jsonTypeInfo)!; - return true; - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/DatabaseRemovals.cs b/src/Sharpify.Data/DatabaseRemovals.cs deleted file mode 100644 index e660091..0000000 --- a/src/Sharpify.Data/DatabaseRemovals.cs +++ /dev/null @@ -1,118 +0,0 @@ -namespace Sharpify.Data; - -public sealed partial class Database { - /// - /// Removes the and its value from the inner dictionary. - /// - /// - /// True if the key was removed, false if it didn't exist or couldn't be removed. - public bool Remove(string key) { - try { - _lock.EnterWriteLock(); - if (!_data.Remove(key, out var val)) { - return false; - } - var estimatedSize = Helper.GetEstimatedSize(key, val); - Interlocked.Add(ref _estimatedSize, -estimatedSize); - Interlocked.Increment(ref _updatesCount); - if (Config.SerializeOnUpdate) { - Serialize(); - } - if (Config.TriggerUpdateEvents) { - InvokeDataEvent(new DataChangedEventArgs { - Key = key, - Value = val, - ChangeType = DataChangeType.Remove - }); - } - return true; - } finally { - _lock.ExitWriteLock(); - } - } - - /// - /// Removes all keys that match the . - /// - /// A predicate for the key - /// - /// - /// This method is thread-safe and will lock the database while removing the keys. - /// - /// - /// If TriggerUpdateEvents is enabled, this method will trigger a event for each key removed. - /// - /// - public void Remove(Func keySelector) => Remove(keySelector, null); - - /// - /// Removes all keys that match the . - /// - /// A predicate for the key - /// A prefix to be removed from the keys prior to the keySelector (mainly used for IDatabaseFilter implementations), leaving it as null will skip pre-filtering - /// - /// - /// This method is thread-safe and will lock the database while removing the keys. - /// - /// - /// If TriggerUpdateEvents is enabled, this method will trigger a event for each key removed. - /// - /// - public void Remove(Func keySelector, string? keyPrefix) { - try { - _lock.EnterWriteLock(); - - var predicate = keyPrefix is null - ? keySelector - : key => key.StartsWith(keyPrefix) && keySelector(key.Substring(keyPrefix.Length)); - - var matches = _data.Keys.Where(predicate); - - foreach (var key in matches) { - _data.Remove(key, out var val); - var estimatedSize = Helper.GetEstimatedSize(key, val); - Interlocked.Add(ref _estimatedSize, -estimatedSize); - Interlocked.Increment(ref _updatesCount); - - if (Config.TriggerUpdateEvents) { - InvokeDataEvent(new DataChangedEventArgs { - Key = key, - Value = val, - ChangeType = DataChangeType.Remove - }); - } - } - - if (Config.SerializeOnUpdate) { - Serialize(); - } - - } finally { - _lock.ExitWriteLock(); - } - } - - /// - /// Clears all keys and values from the database. - /// - public void Clear() { - try { - _lock.EnterWriteLock(); - _data.Clear(); - Interlocked.Exchange(ref _estimatedSize, 0); - Interlocked.Increment(ref _updatesCount); - if (Config.SerializeOnUpdate) { - Serialize(); - } - if (Config.TriggerUpdateEvents) { - InvokeDataEvent(new DataChangedEventArgs { - Key = "ALL", - Value = null, - ChangeType = DataChangeType.Remove - }); - } - } finally { - _lock.ExitWriteLock(); - } - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/DatabaseSerialization.cs b/src/Sharpify.Data/DatabaseSerialization.cs deleted file mode 100644 index f2d36e0..0000000 --- a/src/Sharpify.Data/DatabaseSerialization.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System.Diagnostics; - -namespace Sharpify.Data; - -public sealed partial class Database { - private void EnsureUpsertsAreFinished() { - if (!Config.SerializeOnUpdate) { - while (_queue.TryDequeue(out var kvp)) { - _data[kvp.Key] = kvp.Value; - int estimatedSize = Helper.GetEstimatedSize(kvp); - Interlocked.Add(ref _estimatedSize, estimatedSize); - Interlocked.Increment(ref _updatesCount); - } - } - } - - /// - /// Checks if the database needs to be serialized. - /// - /// - private bool IsSerializationNecessary() { - if (_isInMemory) { - return false; - } - lock (_sLock) { - if (_updatesCount == _serializationReference) { - return false; - } - _serializationReference = _updatesCount; - return true; - } - } - - /// - /// Saves the database to the hard disk. - /// - public void Serialize() { - EnsureUpsertsAreFinished(); - - if (!IsSerializationNecessary()) { - return; - } - - Debug.Assert(!_isInMemory); - - int estimatedSize = GetOverestimatedSize(); - _serializer.Serialize(_data, estimatedSize); - } - - /// - /// Saves the database to the hard disk asynchronously. - /// - public ValueTask SerializeAsync(CancellationToken cancellationToken = default) { - EnsureUpsertsAreFinished(); - - if (!IsSerializationNecessary()) { - return ValueTask.CompletedTask; - } - - Debug.Assert(!_isInMemory); - - return _serializer.SerializeAsync(_data, cancellationToken); - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/DatabaseUpserts.cs b/src/Sharpify.Data/DatabaseUpserts.cs deleted file mode 100644 index 8a148bb..0000000 --- a/src/Sharpify.Data/DatabaseUpserts.cs +++ /dev/null @@ -1,223 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization.Metadata; - -using MemoryPack; - -namespace Sharpify.Data; - -public sealed partial class Database { - /// - /// Updates or inserts a new @ . - /// - /// - /// - /// individual encryption key for this specific value - /// - /// - /// This pure method which accepts the value as ReadOnlySpan{byte} allows you to use more complex but also more efficient serializers. - /// - /// - public void Upsert(string key, ReadOnlySpan value, string encryptionKey = "") { - if (encryptionKey.Length is 0) { - _queue.Enqueue(new KeyValuePair(key, value.ToArray())); - } else { - byte[] encrypted = Helper.Instance.Encrypt(value, encryptionKey); - _queue.Enqueue(new KeyValuePair(key, encrypted)); - } - - if (Config.TriggerUpdateEvents) { - InvokeDataEvent(new DataChangedEventArgs { - Key = key, - Value = value.ToArray(), - ChangeType = DataChangeType.Upsert - }); - } - - EmptyQueue(); - } - - /// - /// Updates or inserts a new @ . - /// - /// - /// - /// individual encryption key for this specific value - /// - /// - /// This method directly inserts the array reference in to the database to reduce copying. - /// - /// - /// If you cannot ensure that this reference doesn't change, for example if using a pooled array, use the method instead. - /// - /// - public void Upsert(string key, byte[] value, string encryptionKey = "") { - if (encryptionKey.Length is 0) { - _queue.Enqueue(new KeyValuePair(key, value)); - } else { - ReadOnlySpan valueSpan = value; - byte[] encrypted = Helper.Instance.Encrypt(valueSpan, encryptionKey); - _queue.Enqueue(new KeyValuePair(key, encrypted)); - } - - if (Config.TriggerUpdateEvents) { - InvokeDataEvent(new DataChangedEventArgs { - Key = key, - Value = value, - ChangeType = DataChangeType.Upsert - }); - } - - EmptyQueue(); - } - - /// - /// Upserts a value into the database using the specified key. - /// - /// The type of the value being upserted. - /// The key used to identify the value. - /// The value to be upserted. - /// The encryption key used to encrypt the value. - /// a conditional check that the previously stored value must pass before being updated - /// - /// The upsert operation will either insert a new value if the key does not exist, - /// or update the existing value if the key already exists. - /// - /// Null values are disallowed and will cause an exception to be thrown. - /// - /// - /// - /// False if the previous value exists, is not null, and the update condition is not met, otherwise True. - /// - public bool Upsert(string key, T value, string encryptionKey = "", Func? updateCondition = null) where T : IMemoryPackable { - if (updateCondition is not null) { - if (TryGetValue(key, encryptionKey, out var existingValue) && !updateCondition(existingValue)) { - return false; - } - } - byte[] bytes = MemoryPackSerializer.Serialize(value, _serializer.SerializerOptions); - Upsert(key, bytes, encryptionKey); - return true; - } - - /// - /// Upserts values into the database using the specified key. - /// - /// The type of the values being upserted. - /// The key used to identify the values. - /// The values to be upserted. - /// The encryption key used to encrypt the values. - /// a conditional check that the previously stored value must pass before being updated - /// - /// The upsert operation will either insert if the key does not exist, - /// or update the existing values if the key already exists. - /// - /// Null values are disallowed and will cause an exception to be thrown. - /// - /// - /// - /// False if the previous values exist, is not null, and the update condition is not met, otherwise True. - /// - public bool UpsertMany(string key, T[] values, string encryptionKey = "", Func? updateCondition = null) where T : IMemoryPackable { - ArgumentNullException.ThrowIfNull(values, nameof(values)); - if (updateCondition is not null) { - if (TryGetValues(key, encryptionKey, out var existingValues) && !updateCondition(existingValues)) { - return false; - } - } - byte[] bytes = MemoryPackSerializer.Serialize(values, _serializer.SerializerOptions); - Upsert(key, bytes, encryptionKey); - return true; - } - - /// - /// Upserts values into the database using the specified key. - /// - /// The type of the values being upserted. - /// The key used to identify the values. - /// The values to be upserted. - /// The encryption key used to encrypt the values. - /// a conditional check that the previously stored value must pass before being updated - /// - /// The upsert operation will either insert if the key does not exist, - /// or update the existing values if the key already exists. - /// - /// Null values are disallowed and will cause an exception to be thrown. - /// - /// - /// - /// False if the previous values exist, is not null, and the update condition is not met, otherwise True. - /// - public bool UpsertMany(string key, ReadOnlySpan values, string encryptionKey = "", Func? updateCondition = null) where T : IMemoryPackable { - return UpsertMany(key, values.ToArray(), encryptionKey, updateCondition); - } - - - /// - /// Updates or inserts a new @ . - /// - /// - /// - /// individual encryption key for this specific value - /// - /// - /// Null values are disallowed and will cause an exception to be thrown. - /// - /// - public void Upsert(string key, string value, string encryptionKey = "") { - byte[] bytes = value.Length is 0 - ? Array.Empty() - : MemoryPackSerializer.Serialize(value, _serializer.SerializerOptions); - - Upsert(key, bytes, encryptionKey); - } - - /// - /// Updates or inserts a new @ . - /// - /// - /// - /// That can be used to serialize T - /// individual encryption key for this specific value - /// a conditional check that the previously stored value must pass before being updated - /// - /// - /// Null values are disallowed and will cause an exception to be thrown. - /// - /// - /// - /// False if the previous value exists, is not null, and the update condition is not met, otherwise True. - /// - public bool Upsert(string key, T value, JsonTypeInfo jsonTypeInfo, string encryptionKey = "", Func? updateCondition = null) { - if (updateCondition is not null) { - if (!TryGetValue(key, encryptionKey, jsonTypeInfo, out var existingValue) || !updateCondition(existingValue)) { - return false; - } - } - byte[] bytes = JsonSerializer.SerializeToUtf8Bytes(value, jsonTypeInfo); - Upsert(key, bytes, encryptionKey); - return true; - } - - // Adds items to the dictionary and serializes if needed at the end. - // This enables us to add multiple items at once without serializing multiple times. - // Essentially synchronizing concurrent writes. - // While the inner sequential addition to the dictionary makes it thread safe. - private void EmptyQueue() { - try { - _lock.EnterWriteLock(); - nint itemsAdded = 0; - while (_queue.TryDequeue(out var kvp)) { - _data[kvp.Key] = kvp.Value; - itemsAdded++; - int estimatedSize = Helper.GetEstimatedSize(kvp); - Interlocked.Add(ref _estimatedSize, estimatedSize); - Interlocked.Increment(ref _updatesCount); - } - if (itemsAdded is not 0 && Config.SerializeOnUpdate) { - Serialize(); - } - } finally { - _lock.ExitWriteLock(); - } - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/FlexibleDatabaseFilter{T}.cs b/src/Sharpify.Data/FlexibleDatabaseFilter{T}.cs deleted file mode 100644 index 7e2ece1..0000000 --- a/src/Sharpify.Data/FlexibleDatabaseFilter{T}.cs +++ /dev/null @@ -1,130 +0,0 @@ -using System.Runtime.CompilerServices; - -using Sharpify.Collections; - -namespace Sharpify.Data; - -/// -/// Provides a light database filter by type. -/// -/// -/// Items that are upserted into the database using the filter, should not be retrieved without the filter as the key is modified. -/// -/// -public class FlexibleDatabaseFilter : IDatabaseFilter where T : IFilterable { - /// - /// The key filter, statically created for the type. - /// - public static readonly string KeyFilter = $"{typeof(T).Name}:"; - - /// - /// Creates a combined key (filter) for the specified key. - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - protected string AcquireKey(ReadOnlySpan key) { - return string.Intern(KeyFilter.Concat(key)); - } - - /// - /// The database. - /// - protected readonly Database _database; - - /// - /// Creates a new database filter. - /// - /// - public FlexibleDatabaseFilter(Database database) { - _database = database; - } - - /// - public bool ContainsKey(string key) { - return _database.ContainsKey(AcquireKey(key)); - } - - - /// - public bool TryGetValue(string key, string encryptionKey, out T value) { - if (!_database.TryGetValue(AcquireKey(key), encryptionKey, out var data)) { - value = default!; - return false; - } - value = T.Deserialize(data.Span)!; - return true; - } - - /// - public bool TryGetValues(string key, string encryptionKey, out T[] values) { - if (!_database.TryGetValue(AcquireKey(key), encryptionKey, out ReadOnlyMemory data)) { - values = default!; - return false; - } - values = T.DeserializeMany(data.Span)!; - return true; - } - - /// - public RentedBufferWriter TryReadToRentedBuffer(string key, string encryptionKey = "", int reservedCapacity = 0) { - if (!_database.TryGetValue(AcquireKey(key), encryptionKey, out ReadOnlyMemory data)) { - return new RentedBufferWriter(0); - } - T[] values = T.DeserializeMany(data.Span)!; - var buffer = new RentedBufferWriter(values.Length + reservedCapacity); - buffer.WriteAndAdvance(values); - return buffer; - } - - /// - public bool Upsert(string key, T value, string encryptionKey = "", Func? updateCondition = null) { - if (updateCondition is not null) { - if (TryGetValue(key, encryptionKey, out var existingValue) && !updateCondition(existingValue)) { - return false; - } - } - var bytes = T.Serialize(value)!; - _database.Upsert(AcquireKey(key), bytes, encryptionKey); - return true; - } - - /// - public bool UpsertMany(string key, T[] values, string encryptionKey = "", Func? updateCondition = null) { - ArgumentNullException.ThrowIfNull(values, nameof(values)); - if (updateCondition is not null) { - if (TryGetValues(key, encryptionKey, out var existingValues) && !updateCondition(existingValues)) { - return false; - } - } - var bytes = T.SerializeMany(values)!; - _database.Upsert(AcquireKey(key), bytes, encryptionKey); - return true; - } - - /// - public bool UpsertMany(string key, ReadOnlySpan values, string encryptionKey = "", Func? updateCondition = null) { - return UpsertMany(key, values.ToArray(), encryptionKey, updateCondition); - } - - /// - public bool Remove(string key) { - return _database.Remove(AcquireKey(key)); - } - - - /// - public void Remove(Func keySelector) { - _database.Remove(keySelector, KeyFilter); - } - - - /// - public void Serialize() { - _database.Serialize(); - } - - - /// - public ValueTask SerializeAsync(CancellationToken cancellationToken = default) { - return _database.SerializeAsync(cancellationToken); - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/GlobalSuppressions.cs b/src/Sharpify.Data/GlobalSuppressions.cs deleted file mode 100644 index 817119a..0000000 --- a/src/Sharpify.Data/GlobalSuppressions.cs +++ /dev/null @@ -1,8 +0,0 @@ -// This file is used by Code Analysis to maintain SuppressMessage -// attributes that are applied to this project. -// Project-level suppressions either have no target or are given -// a specific target and scoped to a namespace, type, member, etc. - -using System.Diagnostics.CodeAnalysis; - -[assembly: SuppressMessage("Trimming", "IL2091:Target generic argument does not satisfy 'DynamicallyAccessedMembersAttribute' in target method or type. The generic parameter of the source method or type does not have matching annotations.", Justification = "See \"NativeAot Guide\" in the README.md", Scope = "member", Target = "~M:Sharpify.Data.Database.TryGetValue``1(System.String,System.String,``0@)~System.Boolean")] diff --git a/src/Sharpify.Data/Helper.cs b/src/Sharpify.Data/Helper.cs deleted file mode 100644 index 7c004ee..0000000 --- a/src/Sharpify.Data/Helper.cs +++ /dev/null @@ -1,167 +0,0 @@ -using System.Buffers.Binary; -using System.Collections.Concurrent; -using System.Runtime.CompilerServices; -using System.Security.Cryptography; - -using MemoryPack; - -using Sharpify.Collections; - -namespace Sharpify.Data; - -internal sealed class Helper : IDisposable { - internal static readonly Helper Instance = new(); - - private bool _disposed; - - private readonly ConcurrentDictionary _cachedProviders = new(Environment.ProcessorCount, 1); - - /// - /// Returns the encrypted version of the specified value using the specified key. - /// - /// - /// - public byte[] Encrypt(ReadOnlySpan value, string key) { - if (_cachedProviders.TryGetValue(key, out AesProvider? provider)) { - return provider!.EncryptBytes(value); - } - var newProvider = new AesProvider(key); - _cachedProviders.TryAdd(key, newProvider); - return newProvider.EncryptBytes(value); - } - - /// - /// Gets the encryptor for the specified key. - /// - /// - public ICryptoTransform GetEncryptor(string key) { - if (_cachedProviders.TryGetValue(key, out AesProvider? provider)) { - return provider!.CreateEncryptor(); - } - var newProvider = new AesProvider(key); - _cachedProviders.TryAdd(key, newProvider); - return newProvider.CreateEncryptor(); - } - - /// - /// Returns the decrypted version of the specified value using the specified key. - /// - /// - /// - public byte[] Decrypt(ReadOnlySpan value, string key) { - if (_cachedProviders.TryGetValue(key, out AesProvider? provider)) { - return provider!.DecryptBytes(value); - } - var newProvider = new AesProvider(key); - _cachedProviders.TryAdd(key, newProvider); - return newProvider.DecryptBytes(value, false); - } - - /// - /// Decrypts the specified value using the specified key and writes the result to the destination. - /// - /// - /// - /// - public int Decrypt(ReadOnlySpan value, Span destination, string key) { - if (_cachedProviders.TryGetValue(key, out AesProvider? provider)) { - return provider!.DecryptBytes(value, destination); - } - var newProvider = new AesProvider(key); - _cachedProviders.TryAdd(key, newProvider); - return newProvider.DecryptBytes(value, destination, false); - } - - /// - /// Gets the decryptor for the specified key. - /// - /// - /// - public ICryptoTransform GetDecryptor(string key) { - if (_cachedProviders.TryGetValue(key, out AesProvider? provider)) { - return provider!.CreateDecryptor(); - } - var newProvider = new AesProvider(key); - _cachedProviders.TryAdd(key, newProvider); - return newProvider.CreateDecryptor(); - } - - public void Dispose() { - if (_disposed) { - return; - } - foreach (var provider in _cachedProviders.Values) { - provider.Dispose(); - } - _disposed = true; - } - - /// - /// Returns the size of the serialized collection from the header - /// - /// - /// - /// Only use with MemoryPack - /// - public static int GetRequiredLength(ReadOnlySpan data) { - const int lengthSize = 4; // 4 bytes for the length - - if (data.Length < lengthSize) { - return 0; - } - - var length = BinaryPrimitives.ReadInt32LittleEndian(data.Slice(0, lengthSize)); - length = length == -1 ? 0 : length; - - return Math.Min(length, data.Length); - } - - /// - /// Gets the size of the file. - /// - /// - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static int GetFileSize(string path) { - var info = new FileInfo(path); - return unchecked((int)info.Length); - } - - /// - /// Gets the estimated size of the key-value pair. - /// - /// - public static int GetEstimatedSize(KeyValuePair kvp) - => GetEstimatedSize(kvp.Key, kvp.Value); - - - /// - /// Gets the estimated size of a key-value pair. - /// - /// - /// - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static int GetEstimatedSize(ReadOnlySpan key, ReadOnlySpan value) - => key.Length * sizeof(char) + value.Length; - - /// - /// Reads the data to the buffer - /// - /// - /// - /// - /// - public static void ReadToRenterBufferWriter(ref RentedBufferWriter buffer, ReadOnlySpan data, int length) { - var reader = new MemoryPackReader(data, NullOptionalState); - ref var arr = ref buffer.GetReferenceUnsafe(); - Span span = arr.AsSpan(0, length)!; - reader.ReadSpan(ref span); - buffer.Advance(length); - } - - /// - /// A null optional state for use with - /// - private static readonly MemoryPackReaderOptionalState NullOptionalState = MemoryPackReaderOptionalStatePool.Rent(null); -} \ No newline at end of file diff --git a/src/Sharpify.Data/IDatabaseFilter{T}.cs b/src/Sharpify.Data/IDatabaseFilter{T}.cs deleted file mode 100644 index 7c467e2..0000000 --- a/src/Sharpify.Data/IDatabaseFilter{T}.cs +++ /dev/null @@ -1,144 +0,0 @@ -using Sharpify.Collections; - -namespace Sharpify.Data; - -/// -/// Represents a filter for a database that provides operations for querying, retrieving, and modifying data. -/// -/// The type of data stored in the database. -public interface IDatabaseFilter { - /// - /// Checks if the filtered database contains the specified key. - /// - /// The key to check. - /// true if the database contains the key; otherwise, false. - bool ContainsKey(string key); - - /// - /// Gets the value for the specified key from the database. - /// - /// The key to retrieve the value for. - /// When this method returns, contains the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter. - /// true if the value was successfully retrieved; otherwise, false. - bool TryGetValue(string key, out T value) => TryGetValue(key, string.Empty, out value); - - /// - /// Gets the value for the specified key from the database using the specified encryption key. - /// - /// The key to retrieve the value for. - /// The encryption key to use. - /// When this method returns, contains the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter. - /// true if the value was successfully retrieved; otherwise, false. - bool TryGetValue(string key, string encryptionKey, out T value); - - /// - /// Tries to get the values for the and write it to a - /// - /// - /// Reserved capacity after the values, useful to write additional data - /// - /// A rented buffer writer containing the values if they were found, otherwise a disabled buffer writer (can be checked with ) - /// - RentedBufferWriter TryReadToRentedBuffer(string key, int reservedCapacity = 0) => TryReadToRentedBuffer(key, string.Empty, reservedCapacity); - - /// - /// Tries to get the values for the and write it to a - /// - /// - /// - /// Reserved capacity after the values, useful to write additional data - /// - /// A rented buffer writer containing the values if they were found, otherwise a disabled buffer writer (can be checked with ) - /// - RentedBufferWriter TryReadToRentedBuffer(string key, string encryptionKey = "", int reservedCapacity = 0); - - /// - /// Gets the values for the specified key from the database. - /// - /// The key to retrieve the value for. - /// When this method returns, contains the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter. - /// true if the value was successfully retrieved; otherwise, false. - bool TryGetValues(string key, out T[] values) => TryGetValues(key, string.Empty, out values); - - /// - /// Gets the values for the specified key from the database using the specified encryption key. - /// - /// The key to retrieve the value for. - /// The encryption key to use. - /// When this method returns, contains the value associated with the specified key, if the key is found; otherwise, the default value for the type of the value parameter. - /// true if the value was successfully retrieved; otherwise, false. - bool TryGetValues(string key, string encryptionKey, out T[] values); - - /// - /// Upserts the value into the database. - /// - /// The key to upsert the value for. - /// The value to upsert. - /// The encryption key to use. - /// a conditional check that the previously stored value must pass before being updated - /// - /// Null values are disallowed and will cause an exception to be thrown. - /// - /// - /// False if the previous value exists, is not null, and the update condition is not met, otherwise True. - /// - bool Upsert(string key, T value, string encryptionKey = "", Func? updateCondition = null); - - /// - /// Upserts multiple values into the database under a single key. - /// - /// The key to upsert the values for. - /// The values to upsert. - /// The encryption key to use. - /// a conditional check that the previously stored value must pass before being updated - /// - /// Null values are disallowed and will cause an exception to be thrown. - /// - /// - /// False if the previous values exist, is not null, and the update condition is not met, otherwise True. - /// - bool UpsertMany(string key, T[] values, string encryptionKey = "", Func? updateCondition = null); - - /// - /// Upserts multiple values into the database under a single key. - /// - /// The key to upsert the values for. - /// The values to upsert. - /// The encryption key to use. - /// a conditional check that the previously stored value must pass before being updated - /// - /// False if the previous values exist, is not null, and the update condition is not met, otherwise True. - /// - bool UpsertMany(string key, ReadOnlySpan values, string encryptionKey = "", Func? updateCondition = null); - - /// - /// Removes the item with the specified key from the filtered database. - /// - /// The key of the item to remove. - /// true if the item was successfully removed; otherwise, false. - bool Remove(string key); - - /// - /// Removes all keys that match the , while applying the key filtering - /// - /// - /// - /// - /// This method is thread-safe and will lock the database while removing the keys. - /// - /// - /// If TriggerUpdateEvents is enabled, this method will trigger a event for each key removed. - /// - /// - void Remove(Func keySelector); - - /// - /// Serializes the database. - /// - public void Serialize(); - - /// - /// Serializes the database asynchronously. - /// - public ValueTask SerializeAsync(CancellationToken cancellationToken = default); -} \ No newline at end of file diff --git a/src/Sharpify.Data/IFilterable{T}.cs b/src/Sharpify.Data/IFilterable{T}.cs deleted file mode 100644 index 6e7b101..0000000 --- a/src/Sharpify.Data/IFilterable{T}.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace Sharpify.Data; - -/// -/// Represents a filterable type. -/// -/// The type of the filterable object. -public interface IFilterable { - /// - /// Serializes the specified value into a byte array. - /// - /// - /// - static abstract byte[]? Serialize(T? value); - - /// - /// Serializes multiple values into a byte array. - /// - /// - /// - static abstract byte[]? SerializeMany(T[]? values); - - /// - /// Deserializes the specified data into a value. - /// - /// - /// - static abstract T? Deserialize(ReadOnlySpan data); - - /// - /// Deserializes the specified data into multiple values. - /// - /// - /// - static abstract T[]? DeserializeMany(ReadOnlySpan data); -} diff --git a/src/Sharpify.Data/MemoryPackDatabaseFilter{T}.cs b/src/Sharpify.Data/MemoryPackDatabaseFilter{T}.cs deleted file mode 100644 index 36ce80e..0000000 --- a/src/Sharpify.Data/MemoryPackDatabaseFilter{T}.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System.Runtime.CompilerServices; - -using MemoryPack; - -using Sharpify.Collections; - -namespace Sharpify.Data; - -/// -/// Provides a light database filter by type. -/// -/// -/// Items that are upserted into the database using the filter, should not be retrieved without the filter as the key is modified. -/// -/// -public class MemoryPackDatabaseFilter : IDatabaseFilter where T : IMemoryPackable { - /// - /// The key filter, statically created for the type. - /// - public static readonly string KeyFilter = $"{typeof(T).Name}:"; - - /// - /// Creates a combined key (filter) for the specified key. - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - protected string AcquireKey(ReadOnlySpan key) { - return string.Intern(KeyFilter.Concat(key)); - } - - /// - /// The database. - /// - protected readonly Database _database; - - /// - /// Creates a new database filter. - /// - /// - public MemoryPackDatabaseFilter(Database database) { - _database = database; - } - - /// - public bool ContainsKey(string key) { - return _database.ContainsKey(AcquireKey(key)); - } - - /// - public bool TryGetValue(string key, string encryptionKey, out T value) { - return _database.TryGetValue(AcquireKey(key), encryptionKey, out value); - } - - /// - public bool TryGetValues(string key, string encryptionKey, out T[] values) { - return _database.TryGetValues(AcquireKey(key), encryptionKey, out values); - } - - /// - public RentedBufferWriter TryReadToRentedBuffer(string key, string encryptionKey = "", int reservedCapacity = 0) { - return _database.TryReadToRentedBuffer(AcquireKey(key), encryptionKey, reservedCapacity); - } - - /// - public bool Upsert(string key, T value, string encryptionKey = "", Func? updateCondition = null) { - return _database.Upsert(AcquireKey(key), value, encryptionKey, updateCondition); - } - - /// - public bool UpsertMany(string key, T[] values, string encryptionKey = "", Func? updateCondition = null) { - return _database.UpsertMany(AcquireKey(key), values, encryptionKey, updateCondition); - } - - /// - public bool UpsertMany(string key, ReadOnlySpan values, string encryptionKey = "", Func? updateCondition = null) { - return _database.UpsertMany(AcquireKey(key), values, encryptionKey, updateCondition); - } - - /// - public bool Remove(string key) { - return _database.Remove(AcquireKey(key)); - } - - /// - public void Remove(Func keySelector) { - _database.Remove(keySelector, KeyFilter); - } - - /// - public void Serialize() { - _database.Serialize(); - } - - /// - public ValueTask SerializeAsync(CancellationToken cancellationToken = default) { - return _database.SerializeAsync(cancellationToken); - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/README.md b/src/Sharpify.Data/README.md deleted file mode 100644 index f6a1ba8..0000000 --- a/src/Sharpify.Data/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# Sharpify.Data - -An extension of `Sharpify` focused on data. - -## Features - -* `Database` is the base type for the data base, it is key-value-pair based local database - saved on disk. -* `IDatabaseFilter` is an interface which acts as an alternative to `DbContext` and provides enhanced type safety for contexts. -* `MemoryPackDatabaseFilter` is an implementation which focuses on types that implement `IMemoryPackable` from `MemoryPack`. -* `FlexibleDatabaseFilter` is an implementation focusing on types which need custom serialization logic. To use this, you type `T` will need to implement `IFilterable` which has methods for serialization and deserialization of single `T` and `T[]`. If you can choose to implement only one of the two. -* **Concurrency** - `Database` uses highly performant synchronous concurrency models and is completely thread-safe. -* **Disk Usage** - `Database` tracks inner changes and skips serialization if no changes occurred, enabling usage of periodic serialization without resource waste. -* **GC Optimization** - `Database` heavily uses pooling for encryption, decryption, type conversion, serialization and deserialization to minimize GC overhead, very rarely does it allocate single-use memory and only when absolutely necessary. -* **HotPath APIs** - `Database` is optimized for hot paths, as such it provides a number of APIs that specifically combine features for maximum performance and minimal GC overhead. Like the `TryReadToRentedBuffer` methods which is optimized for adding data to a table. -* **Runtime Optimization** - Upon initialization, `Database` chooses specific serializers and deserializers tailored for specific configurations, minimizing the amount of runnable code during runtime that would've been wasted on different checks. - -## Notes - -* Initialization of with regular and async factory methods, they will guide you for using the options of configuration. -* It is crucial to use the factory methods for database initialization, and **NOT** use activators or constructors, the factory methods select configuration specific abstractions that are optimized per the the type of database you want. -* The heart of the performance of these databases which use [MemoryPack](https://github.com/Cysharp/MemoryPack) for extreme performance binary serialization. -* `Database` has upsert overloads which support any `IMemoryPackable` from [MemoryPack](https://github.com/Cysharp/MemoryPack). -* Both `Database` implements `IDisposable` and should be disposed after usage to make sure all resources are released, this should also prevent possible issues if the object is removed from memory while an operation is ongoing (i.e the user closes the application when a write isn't finished) -* The database is key-value-pair based, and operation on each key have O(1) complexity, serialization scales rather linearly (No way around it). -* For very large datasets, there might be more suitable databases, but if you still want to use this, you could enable `[gcAllowVeryLargeObjects](https://learn.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/gcallowverylargeobjects-element), as per the Microsoft docs, on 64 bit system it should allow the object to be larger than 2GB, which is normally the limit. -* To ensure integrity data copies are kept to a minimum, and allocations are designed to happen only when required to ensure data integrity (i.e to ensure the database stores real data, and to ensure the actual data is not exposed to the outside), the database uses pooling for any disposable memory operations to ensure minimal GC overhead. - -## NativeAot Guide - -As of writing this, `MemoryPack`'s NativeAot support is broken, for any type that isn't already in their cached types, the `MemoryPackFormatterProvider` uses reflection to get the formatter (that includes types decorated with `MemoryPackable` which in turn implement `IMemoryPackable`), which fails in NativeAot. -As a workaround, we need to add the formatters ourselves, to do this, take any 1 static entry point, that activates before the database is loaded, and add this: - -```csharp -// for every T type that relies on MemoryPack for serialization, and their inheritance hierarchy -// This includes types that implement IMemoryPackable (i.e types that are decorated with MemoryPackable) -MemoryPackFormatterProvider.Register(); -// If the type is a collection or dictionary use the other corresponding overloads: -MemoryPackFormatterProvider.RegisterCollection(); -// or -MemoryPackFormatterProvider.RegisterDictionary(); -// and so on... -// for all overloads check peek the definition of MemoryPackFormatterProvider, or their Github Repo -``` - -**Note:** Make sure you don't create a new static constructor in those types, `MemoryPack` already creates those, you will need to find a different entry point. - -With this the serializer should be able to bypass the part using reflection, and thus work even on NativeAot. - -P.S. The base type of the Database is already registered the same way on its own static constructor. - -## Contact - -For bug reports, feature requests or offers of support/sponsorship contact diff --git a/src/Sharpify.Data/Serializers/AbstractSerializer.cs b/src/Sharpify.Data/Serializers/AbstractSerializer.cs deleted file mode 100644 index 283971b..0000000 --- a/src/Sharpify.Data/Serializers/AbstractSerializer.cs +++ /dev/null @@ -1,66 +0,0 @@ -using MemoryPack; - -namespace Sharpify.Data.Serializers; - -/// -/// Provides an abstraction for creating a readonly serializer -/// -internal abstract class AbstractSerializer { - protected readonly string _path; - internal readonly MemoryPackSerializerOptions SerializerOptions; - - protected AbstractSerializer(string path, StringEncoding encoding = StringEncoding.Utf8) { - _path = path; - SerializerOptions = encoding switch { - StringEncoding.Utf8 => MemoryPackSerializerOptions.Utf8, - StringEncoding.Utf16 => MemoryPackSerializerOptions.Utf16, - _ => MemoryPackSerializerOptions.Default - }; - } - - /// - /// Serializes the given dictionary - /// - /// - /// - internal abstract void Serialize(Dictionary dict, int estimatedSize); - - /// - /// Serializes the given dictionary asynchronously - /// - /// - /// - /// - internal abstract ValueTask SerializeAsync(Dictionary dict, CancellationToken cancellationToken = default); - - /// - /// Deserializes the path to a dictionary - /// - /// - internal abstract Dictionary Deserialize(int estimatedSize); - - /// - /// Deserializes the path to a dictionary asynchronously - /// - /// - /// - internal abstract ValueTask> DeserializeAsync(int estimatedSize, CancellationToken cancellationToken = default); - - /// - /// Creates a serializer based on the given configuration - /// - /// - /// - /// - internal static AbstractSerializer Create(DatabaseConfiguration configuration) { - return configuration switch { - { Path: "", IgnoreCase: false } => new DisabledSerializer(configuration.Path, configuration.Encoding), - { Path: "", IgnoreCase: true } => new DisabledIgnoreCaseSerializer(configuration.Path, configuration.Encoding), - { HasEncryption: true, IgnoreCase: true } => new IgnoreCaseEncryptedSerializer(configuration.Path, configuration.EncryptionKey), - { HasEncryption: true, IgnoreCase: false } => new EncryptedSerializer(configuration.Path, configuration.EncryptionKey), - { HasEncryption: false, IgnoreCase: true } => new IgnoreCaseSerializer(configuration.Path), - { HasEncryption: false, IgnoreCase: false } => new Serializer(configuration.Path), - _ => throw new ArgumentException("Invalid configuration") - }; - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/Serializers/DisabledSerializers.cs b/src/Sharpify.Data/Serializers/DisabledSerializers.cs deleted file mode 100644 index 87182d3..0000000 --- a/src/Sharpify.Data/Serializers/DisabledSerializers.cs +++ /dev/null @@ -1,37 +0,0 @@ -using MemoryPack; - -namespace Sharpify.Data.Serializers; - -/// -/// A serializer for a database without encryption and case sensitive keys -/// -internal class DisabledSerializer : AbstractSerializer { - internal DisabledSerializer(string path, StringEncoding encoding = StringEncoding.Utf8) : base(path, encoding) { - } - - /// - internal override Dictionary Deserialize(int estimatedSize) => new(); - - /// - internal override ValueTask> DeserializeAsync(int estimatedSize, CancellationToken cancellationToken = default) => ValueTask.FromResult(new Dictionary()); - - /// - internal override void Serialize(Dictionary dict, int estimatedSize) { } - -/// - internal override ValueTask SerializeAsync(Dictionary dict, CancellationToken cancellationToken = default) => ValueTask.CompletedTask; -} - -/// -/// A serializer for a database without encryption and case sensitive keys -/// -internal class DisabledIgnoreCaseSerializer : DisabledSerializer { - internal DisabledIgnoreCaseSerializer(string path, StringEncoding encoding = StringEncoding.Utf8) : base(path, encoding) { - } - - /// - internal override Dictionary Deserialize(int estimatedSize) => new(StringComparer.OrdinalIgnoreCase); - - /// - internal override ValueTask> DeserializeAsync(int estimatedSize, CancellationToken cancellationToken = default) => ValueTask.FromResult(new Dictionary(StringComparer.OrdinalIgnoreCase)); -} \ No newline at end of file diff --git a/src/Sharpify.Data/Serializers/EncryptedSerializer.cs b/src/Sharpify.Data/Serializers/EncryptedSerializer.cs deleted file mode 100644 index 0b81d50..0000000 --- a/src/Sharpify.Data/Serializers/EncryptedSerializer.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System.Security.Cryptography; - -using MemoryPack; - -using Sharpify.Collections; - -namespace Sharpify.Data.Serializers; - -/// -/// A serializer for a database encryption and case sensitive keys -/// -internal class EncryptedSerializer : AbstractSerializer { - protected readonly string _key; - - internal EncryptedSerializer(string path, string key, StringEncoding encoding = StringEncoding.Utf8) : base(path, encoding) { - _key = key; - } - -/// - internal override Dictionary Deserialize(int estimatedSize) { - if (estimatedSize is 0) { - return new Dictionary(); - } - - using var rawBuffer = new RentedBufferWriter(estimatedSize); - using var file = new FileStream(_path, FileMode.Open); - int rawRead = file.Read(rawBuffer.GetSpan()); - rawBuffer.Advance(rawRead); - ReadOnlySpan rawSpan = rawBuffer.WrittenSpan; - using var decryptedBuffer = new RentedBufferWriter(rawSpan.Length); - int decryptedRead = Helper.Instance.Decrypt(rawSpan, decryptedBuffer.GetSpan(), _key); - decryptedBuffer.Advance(decryptedRead); - ReadOnlySpan decrypted = decryptedBuffer.WrittenSpan; - var dict = MemoryPackSerializer.Deserialize>(decrypted, SerializerOptions); - return dict ?? new Dictionary(); - } - -/// - internal override async ValueTask> DeserializeAsync(int estimatedSize, CancellationToken cancellationToken = default) { - if (estimatedSize is 0) { - return new Dictionary(); - } - using var file = new FileStream(_path, FileMode.Open); - using var transform = Helper.Instance.GetDecryptor(_key); - using var cryptoStream = new CryptoStream(file, transform, CryptoStreamMode.Read); - var dict = await MemoryPackSerializer.DeserializeAsync>(cryptoStream, SerializerOptions, cancellationToken: cancellationToken).ConfigureAwait(false); - return dict ?? new Dictionary(); - } - -/// - internal override void Serialize(Dictionary dict, int estimatedSize) { - using var buffer = new RentedBufferWriter(estimatedSize + AesProvider.ReservedBufferSize); - MemoryPackSerializer.Serialize(buffer, dict, SerializerOptions); - using var file = new FileStream(_path, FileMode.Create); - using ICryptoTransform transform = Helper.Instance.GetEncryptor(_key); - using var cryptoStream = new CryptoStream(file, transform, CryptoStreamMode.Write); - cryptoStream.Write(buffer.WrittenSpan); - } - -/// - internal override async ValueTask SerializeAsync(Dictionary dict, CancellationToken cancellationToken = default) { - using var file = new FileStream(_path, FileMode.Create); - using ICryptoTransform transform = Helper.Instance.GetEncryptor(_key); - using var cryptoStream = new CryptoStream(file, transform, CryptoStreamMode.Write); - await MemoryPackSerializer.SerializeAsync(cryptoStream, dict, SerializerOptions, cancellationToken: cancellationToken).ConfigureAwait(false); - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/Serializers/IgnoreCaseEncryptedSerializer.cs b/src/Sharpify.Data/Serializers/IgnoreCaseEncryptedSerializer.cs deleted file mode 100644 index 3458c25..0000000 --- a/src/Sharpify.Data/Serializers/IgnoreCaseEncryptedSerializer.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System.Security.Cryptography; - -using MemoryPack; - -using Sharpify.Collections; - -namespace Sharpify.Data.Serializers; - -/// -/// A serializer for a database encryption and case-sensitive keys -/// -internal class IgnoreCaseEncryptedSerializer : EncryptedSerializer { - internal IgnoreCaseEncryptedSerializer(string path, string key, StringEncoding encoding = StringEncoding.Utf8) : base(path, key, encoding) { - } - -/// - internal override Dictionary Deserialize(int estimatedSize) { - if (estimatedSize is 0) { - return new Dictionary(StringComparer.OrdinalIgnoreCase); - } - using var rawBuffer = new RentedBufferWriter(estimatedSize); - using var file = new FileStream(_path, FileMode.Open); - int rawRead = file.Read(rawBuffer.GetSpan()); - rawBuffer.Advance(rawRead); - ReadOnlySpan rawSpan = rawBuffer.WrittenSpan; - using var decryptedBuffer = new RentedBufferWriter(rawSpan.Length); - int decryptedRead = Helper.Instance.Decrypt(rawSpan, decryptedBuffer.GetSpan(), _key); - decryptedBuffer.Advance(decryptedRead); - ReadOnlySpan decrypted = decryptedBuffer.WrittenSpan; - Dictionary dict = IgnoreCaseSerializer.FromSpan(decrypted); - return dict; - } - -/// - internal override async ValueTask> DeserializeAsync(int estimatedSize, CancellationToken cancellationToken = default) { - if (estimatedSize is 0) { - return new Dictionary(StringComparer.OrdinalIgnoreCase); - } - using var buffer = new RentedBufferWriter(estimatedSize); - using var file = new FileStream(_path, FileMode.Open); - using ICryptoTransform transform = Helper.Instance.GetDecryptor(_key); - using var cryptoStream = new CryptoStream(file, transform, CryptoStreamMode.Read); - int numRead = await cryptoStream.ReadAsync(buffer.GetMemory(), cancellationToken).ConfigureAwait(false); - buffer.Advance(numRead); - Dictionary dict = IgnoreCaseSerializer.FromSpan(buffer.WrittenMemory); - return dict; - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/Serializers/IgnoreCaseSerializer.cs b/src/Sharpify.Data/Serializers/IgnoreCaseSerializer.cs deleted file mode 100644 index 23cea88..0000000 --- a/src/Sharpify.Data/Serializers/IgnoreCaseSerializer.cs +++ /dev/null @@ -1,57 +0,0 @@ -using MemoryPack; - -using Sharpify.Collections; - -namespace Sharpify.Data.Serializers; - -/// -/// A serializer for a database without encryption and case sensitive keys -/// -internal class IgnoreCaseSerializer : Serializer { - internal IgnoreCaseSerializer(string path, StringEncoding encoding = StringEncoding.Utf8) : base(path, encoding) { - } - - internal static Dictionary FromSpan(ReadOnlyMemory bin) { - ReadOnlySpan data = bin.Span; - return FromSpan(data); - } - - internal static Dictionary FromSpan(ReadOnlySpan bin) { - if (bin.Length is 0) { - return new Dictionary(StringComparer.OrdinalIgnoreCase); - } - var formatter = new OrdinalIgnoreCaseStringDictionaryFormatter(); - var state = MemoryPackReaderOptionalStatePool.Rent(MemoryPackSerializerOptions.Default); - var reader = new MemoryPackReader(bin, state); - Dictionary? dict = null; - formatter.GetFormatter().Deserialize(ref reader, ref dict); - return dict ?? new Dictionary(StringComparer.OrdinalIgnoreCase); - } - - /// - internal override Dictionary Deserialize(int estimatedSize) { - if (estimatedSize is 0) { - return new Dictionary(StringComparer.OrdinalIgnoreCase); - } - using var buffer = new RentedBufferWriter(estimatedSize); - using var file = new FileStream(_path, FileMode.Open); - int numRead = file.Read(buffer.Buffer, 0, estimatedSize); - buffer.Advance(numRead); - ReadOnlySpan deserialized = buffer.WrittenSpan; - Dictionary dict = FromSpan(deserialized); - return dict; - } - - /// - internal override async ValueTask> DeserializeAsync(int estimatedSize, CancellationToken cancellationToken = default) { - if (estimatedSize is 0) { - return new Dictionary(StringComparer.OrdinalIgnoreCase); - } - using var buffer = new RentedBufferWriter(estimatedSize); - using var file = new FileStream(_path, FileMode.Open); - int numRead = await file.ReadAsync(buffer.GetMemory(), cancellationToken).ConfigureAwait(false); - buffer.Advance(numRead); - Dictionary dict = FromSpan(buffer.WrittenMemory); - return dict; - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/Serializers/Serializer.cs b/src/Sharpify.Data/Serializers/Serializer.cs deleted file mode 100644 index 1c98f88..0000000 --- a/src/Sharpify.Data/Serializers/Serializer.cs +++ /dev/null @@ -1,52 +0,0 @@ -using MemoryPack; - -using Sharpify.Collections; - -namespace Sharpify.Data.Serializers; - -/// -/// A serializer for a database without encryption and case sensitive keys -/// -internal class Serializer : AbstractSerializer { - internal Serializer(string path, StringEncoding encoding = StringEncoding.Utf8) : base(path, encoding) { - } - -/// - internal override Dictionary Deserialize(int estimatedSize) { - if (estimatedSize is 0) { - return new Dictionary(); - } - using var buffer = new RentedBufferWriter(estimatedSize); - using var file = new FileStream(_path, FileMode.Open); - int numRead = file.Read(buffer.Buffer, 0, estimatedSize); - buffer.Advance(numRead); - Dictionary dict = - MemoryPackSerializer.Deserialize>(buffer.WrittenSpan, SerializerOptions) - ?? new Dictionary(); - return dict; - } - -/// - internal override async ValueTask> DeserializeAsync(int estimatedSize, CancellationToken cancellationToken = default) { - if (estimatedSize is 0) { - return new Dictionary(); - } - using var file = new FileStream(_path, FileMode.Open); - var dict = await MemoryPackSerializer.DeserializeAsync>(file, SerializerOptions, cancellationToken: cancellationToken).ConfigureAwait(false); - return dict ?? new Dictionary(); - } - -/// - internal override void Serialize(Dictionary dict, int estimatedSize) { - using var file = new FileStream(_path, FileMode.Create); - using var buffer = new RentedBufferWriter(estimatedSize); - MemoryPackSerializer.Serialize(in buffer, in dict, SerializerOptions); - file.Write(buffer.WrittenSpan); - } - -/// - internal override async ValueTask SerializeAsync(Dictionary dict, CancellationToken cancellationToken = default) { - using var file = new FileStream(_path, FileMode.Create); - await MemoryPackSerializer.SerializeAsync(file, dict, SerializerOptions, cancellationToken: cancellationToken).ConfigureAwait(false); - } -} \ No newline at end of file diff --git a/src/Sharpify.Data/Sharpify.Data.csproj b/src/Sharpify.Data/Sharpify.Data.csproj deleted file mode 100644 index 27e0c62..0000000 --- a/src/Sharpify.Data/Sharpify.Data.csproj +++ /dev/null @@ -1,45 +0,0 @@ - - - - net9.0;net8.0 - enable - 2.6.0 - enable - true - David Shnayder - David Shnayder - MIT - CHANGELOGLATEST.md - True - Sharpify.Data - An extension of Sharpify, focused on Data - https://github.com/dusrdev/Sharpify - https://github.com/dusrdev/Sharpify - git - Extensions;HighPerformance;Data;Database - true - true - false - true - true - - - - - - - - - - - - - - - - - <_Parameter1>Sharpify.Data.Tests - - - - \ No newline at end of file diff --git a/tests/Sharpify.CommandLineInterface.Tests/AddCommand.cs b/tests/Sharpify.CommandLineInterface.Tests/AddCommand.cs deleted file mode 100644 index 4d2484b..0000000 --- a/tests/Sharpify.CommandLineInterface.Tests/AddCommand.cs +++ /dev/null @@ -1,40 +0,0 @@ -namespace Sharpify.CommandLineInterface.Tests; - -public sealed class AddCommand : Command { - public override string Name => "add"; - - public override string Description => "Adds 2 numbers."; - - public override string Usage => "add "; - - public override ValueTask ExecuteAsync(Arguments args) { - if (!args.TryGetValue(0, 0, out var number1)) { - return OutputHelper.Return(" not specified", 404, true); - } - if (!args.TryGetValue(1, 0, out var number2)) { - return OutputHelper.Return(" not specified", 404, true); - } - return OutputHelper.Return($"{number1} + {number2} = {number1 + number2}", 0); - } -} - -public sealed class SynchronousAddCommand : SynchronousCommand { - public override string Name => "sadd"; - - public override string Description => "Adds 2 numbers."; - - public override string Usage => "sadd "; - - public override int Execute(Arguments args) { - if (!args.TryGetValue(0, 0, out var number1)) { - Console.WriteLine(" not specified"); - return 404; - } - if (!args.TryGetValue(1, 0, out var number2)) { - Console.WriteLine(" not specified"); - return 404; - } - Console.WriteLine($"{number1} + {number2} = {number1 + number2}"); - return 0; - } -} \ No newline at end of file diff --git a/tests/Sharpify.CommandLineInterface.Tests/ArgumentsIsolatedTests.cs b/tests/Sharpify.CommandLineInterface.Tests/ArgumentsIsolatedTests.cs deleted file mode 100644 index 455f9d2..0000000 --- a/tests/Sharpify.CommandLineInterface.Tests/ArgumentsIsolatedTests.cs +++ /dev/null @@ -1,269 +0,0 @@ -namespace Sharpify.CommandLineInterface.Tests; - -/// -/// This test class specifically tests that arguments are parsed correctly, and more importantly non-positional arguments are not lost during forwarding (Which happens with the cli builder naturally) -/// -public class ArgumentsIsolatedTests { - private static readonly Arguments Args = Parser.ParseArguments( - "command positional --named1 Harold --named2 Finch positional2 --flag --words \"word1|word2\" --numbers \"1|2\"")!; - [Fact] - public void Arguments_Positional_BeforeForwarding() { - // Positional 0 [Command] - Assert.True(Args.TryGetValue(0, out var pos0)); - Assert.Equal("command", pos0); - - // Positional 0 [positional] - Assert.True(Args.TryGetValue(1, out var pos1)); - Assert.Equal("positional", pos1); - - // Positional 0 [positional2] - Assert.True(Args.TryGetValue(2, out var pos2)); - Assert.Equal("positional2", pos2); - } - - [Fact] - public void Arguments_Positional_AfterForwarding() { - var forwarded = Args.ForwardPositionalArguments(); - - // "command" no longer exists - // positional should be at 0, and positional2 at 1. - - // Positional 0 [positional] - Assert.True(forwarded.TryGetValue(0, out var pos0)); - Assert.Equal("positional", pos0); - - // Positional 1 [positional2] - Assert.True(forwarded.TryGetValue(1, out var pos1)); - Assert.Equal("positional2", pos1); - } - - [Fact] - public void Arguments_Named_BeforeForwarding() { - // named1 - Harold - // named2 - Finch - - Assert.True(Args.TryGetValue("named1", out var firstName)); - Assert.Equal("Harold", firstName); - - Assert.True(Args.TryGetValue("named2", out var lastName)); - Assert.Equal("Finch", lastName); - } - - [Fact] - public void Arguments_Named_AfterForwarding() { - var forwarded = Args.ForwardPositionalArguments(); - - // named1 - Harold - // named2 - Finch - - Assert.True(forwarded.TryGetValue("named1", out var firstName)); - Assert.Equal("Harold", firstName); - - Assert.True(forwarded.TryGetValue("named2", out var lastName)); - Assert.Equal("Finch", lastName); - } - - [Fact] - public void Arguments_Flag_BeforeForwarding() { - Assert.True(Args.HasFlag("flag")); - } - - [Fact] - public void Arguments_Flag_AfterForwarding() { - var forwarded = Args.ForwardPositionalArguments(); - Assert.True(forwarded.HasFlag("flag")); - } - - [Fact] - public void Arguments_Contains_Key() { - Assert.True(Args.Contains("named1")); - } - - [Fact] - public void Arguments_Contains_Position() { - Assert.True(Args.Contains(0)); - } - - [Fact] - public void Arguments_Named_Array_String() { - Assert.True(Args.TryGetValues("words", "|", out var words)); - Assert.Equal(["word1", "word2"], words); - } - - [Fact] - public void Arguments_Named_MultipleKeys_Array_String() { - var args = Parser.ParseArguments("command --words word1|word2")!; - Assert.True(args.TryGetValues(["words", "w"], "|", out var words)); - Assert.Equal(["word1", "word2"], words); - args = Parser.ParseArguments("command --w word1|word2")!; - Assert.True(args.TryGetValues(["words", "w"], "|", out var w)); - Assert.Equal(["word1", "word2"], w); - } - - [Fact] - public void Arguments_Named_MultipleKeys_Array_Int() { - var args = Parser.ParseArguments("command --numbers 1|2")!; - Assert.True(args.TryGetValues(["numbers", "n"], "|", out var numbers)); - Assert.Equal([1, 2], numbers); - args = Parser.ParseArguments("command -n 1|2")!; - Assert.True(args.TryGetValues(["numbers", "n"], "|", out var n)); - Assert.Equal([1, 2], n); - } - - [Fact] - public void Arguments_Positional_Array_String() { - var args = Parser.ParseArguments("command q1|q2")!; - Assert.True(args.TryGetValues(1, "|", out var words)); - Assert.Equal(["q1", "q2"], words); - } - - [Fact] - public void Arguments_Named_Array_Int() { - Assert.True(Args.TryGetValues("numbers", "|", out var numbers)); - Assert.Equal([1, 2], numbers); - } - - [Fact] - public void Arguments_Positional_Array_Int() { - var args = Parser.ParseArguments("command 1|2")!; - Assert.True(args.TryGetValues(1, "|", out var numbers)); - Assert.Equal([1, 2], numbers); - } - - [Fact] - public void Arguments_TryGetValue_Named_Int() { - var args = Parser.ParseArguments("command -x 5 -y Hello")!; - Assert.True(args.TryGetValue("x", 0, out int x)); - Assert.Equal(5, x); - Assert.False(args.TryGetValue("y", 0, out int y)); - Assert.Equal(0, y); - } - - [Fact] - public void Arguments_TryGetValue_Named_Double() { - var args = Parser.ParseArguments("command -x 5 -y Hello")!; - Assert.True(args.TryGetValue("x", 0, out double x)); - Assert.Equal(5, x); - Assert.False(args.TryGetValue("y", 0, out double y)); - Assert.Equal(0, y); - } - - [Fact] - public void Arguments_GetValue_Named_Int() { - var args = Parser.ParseArguments("command -x 5 -y Hello")!; - Assert.Equal(5, args.GetValue("x", 0)); - Assert.Equal(0, args.GetValue("y", 0)); - } - - [Fact] - public void Arguments_GetValue_Named_MultipleKeys_Int() { - var args = Parser.ParseArguments("command -x 5 -y Hello")!; - Assert.Equal(5, args.GetValue(["x", "one"], 0)); - args = Parser.ParseArguments("command --one 5 -y Hello")!; - Assert.Equal(5, args.GetValue(["x", "one"], 0)); - } - - [Fact] - public void Arguments_TryGetValue_Positional_Int() { - var args = Parser.ParseArguments("command 5 Hello")!; - Assert.True(args.TryGetValue(1, 0, out double x)); - Assert.Equal(5, x); - Assert.False(args.TryGetValue(2, 0, out double y)); - Assert.Equal(0, y); - } - - [Fact] - public void Arguments_GetValue_Positional_Int() { - var args = Parser.ParseArguments("command 5 Hello")!; - Assert.Equal(5, args.GetValue(1, 0)); - Assert.Equal(0, args.GetValue(2, 0)); - } - - [Fact] - public void Arguments_TryGetEnum_Positional() { - var args = Parser.ParseArguments("command Blue")!; - Assert.True(args.TryGetEnum(1, out ConsoleColor color)); - Assert.Equal(ConsoleColor.Blue, color); - } - - [Fact] - public void Arguments_TryGetEnum_Positional_IgnoreCase() { - var args = Parser.ParseArguments("command bLue")!; - Assert.True(args.TryGetEnum(1, true, out ConsoleColor color)); - Assert.Equal(ConsoleColor.Blue, color); - } - - [Fact] - public void Arguments_TryGetEnum_Named() { - var args = Parser.ParseArguments("command --color Blue")!; - Assert.True(args.TryGetEnum("color", out ConsoleColor color)); - Assert.Equal(ConsoleColor.Blue, color); - } - - [Fact] - public void Arguments_TryGetEnum_Named_IgnoreCase() { - var args = Parser.ParseArguments("command --color bLue")!; - Assert.True(args.TryGetEnum("color", true, out ConsoleColor color)); - Assert.Equal(ConsoleColor.Blue, color); - } - - [Fact] - public void Arguments_TryGetEnum_Named_MultipleKeys() { - var args = Parser.ParseArguments("command --color Blue")!; - Assert.True(args.TryGetEnum(["color", "c"], out ConsoleColor color)); - Assert.Equal(ConsoleColor.Blue, color); - args = Parser.ParseArguments("command -c Blue")!; - Assert.True(args.TryGetEnum(["color", "c"], out ConsoleColor c)); - Assert.Equal(ConsoleColor.Blue, c); - } - - [Fact] - public void Arguments_TryGetEnum_Named_MultipleKeys_IgnoreCase() { - var args = Parser.ParseArguments("command --color bLue")!; - Assert.True(args.TryGetEnum(["color", "c"], true, out ConsoleColor color)); - Assert.Equal(ConsoleColor.Blue, color); - args = Parser.ParseArguments("command -c bLue")!; - Assert.True(args.TryGetEnum(["color", "c"], true, out ConsoleColor c)); - Assert.Equal(ConsoleColor.Blue, c); - } - - [Fact] - public void Arguments_GetEnum_Positional() { - var args = Parser.ParseArguments("command Blue")!; - Assert.Equal(ConsoleColor.Blue, args.GetEnum(1, ConsoleColor.Black)); - } - - [Fact] - public void Arguments_GetEnum_Positional_IgnoreCase() { - var args = Parser.ParseArguments("command bLue")!; - Assert.Equal(ConsoleColor.Blue, args.GetEnum(1, ConsoleColor.Black, true)); - } - - [Fact] - public void Arguments_GetEnum_Named() { - var args = Parser.ParseArguments("command --color Blue")!; - Assert.Equal(ConsoleColor.Blue, args.GetEnum("color", ConsoleColor.Black)); - } - - [Fact] - public void Arguments_GetEnum_Named_IgnoreCase() { - var args = Parser.ParseArguments("command --color bLue")!; - Assert.Equal(ConsoleColor.Blue, args.GetEnum("color", ConsoleColor.Black, true)); - } - - [Fact] - public void Arguments_GetEnum_Named_MultipleKeys() { - var args = Parser.ParseArguments("command --color Blue")!; - Assert.Equal(ConsoleColor.Blue, args.GetEnum(["color", "c"], ConsoleColor.Black)); - args = Parser.ParseArguments("command -c Blue")!; - Assert.Equal(ConsoleColor.Blue, args.GetEnum(["color", "c"], ConsoleColor.Black)); - } - - [Fact] - public void Arguments_GetEnum_Named_MultipleKeys_IgnoreCase() { - var args = Parser.ParseArguments("command --color bLue")!; - Assert.Equal(ConsoleColor.Blue, args.GetEnum(["color", "c"], ConsoleColor.Black, true)); - args = Parser.ParseArguments("command -c bLue")!; - Assert.Equal(ConsoleColor.Blue, args.GetEnum(["color", "c"], ConsoleColor.Black, true)); - } -} \ No newline at end of file diff --git a/tests/Sharpify.CommandLineInterface.Tests/CliBuilderTests.cs b/tests/Sharpify.CommandLineInterface.Tests/CliBuilderTests.cs deleted file mode 100644 index 5542b3b..0000000 --- a/tests/Sharpify.CommandLineInterface.Tests/CliBuilderTests.cs +++ /dev/null @@ -1,273 +0,0 @@ -using System.Globalization; -using System.Runtime.CompilerServices; -using System.Text; - -namespace Sharpify.CommandLineInterface.Tests; - -public class CliBuilderTests { - [Fact] - public void Build_WhenEmpty_ReturnsEmpty() { - var action = () => CliRunner.CreateBuilder().Build(); - - Assert.Throws(action); - } - - [Fact] - public void Build_WhenNotEmpty_ReturnsCliRunner() { - var action = () => CliRunner.CreateBuilder().AddCommand(new EchoCommand()).Build(); - - action(); - } - - [Fact] - public void Build_WhenNotEmpty_ReturnsCliRunnerWithCommands() { - var echo = new EchoCommand(); - - var cliRunner = CliRunner.CreateBuilder().AddCommand(echo).Build(); - - Assert.Contains(echo, cliRunner.Commands); - } - - [Fact] - public async Task Runner_WithCustomWriter_OutputsCommandHelpToWriter() { - var echo = new EchoCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(echo) - .SetOutputWriter(writer) - .Build(); - await cliRunner.RunAsync("echo --help"); - - Assert.Contains("echo ", writer.ToString()); - } - - [Fact] - public async Task Runner_WithCustomWriter_SingleCommand_HelpCommand_OutputsAllInfo() { - var single = new SingleCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(single) - .SetOutputWriter(writer) - .WithMetadata(options => { - options.Name = "Single"; - options.Description = "A single command"; - options.Version = "1.0.0"; - options.Author = "David"; - options.License = "MIT"; - }) - .Build(); - await cliRunner.RunAsync("help", false); - - var output = writer.ToString(); - Assert.Contains("Single", output); - Assert.Contains("A single command", output); - Assert.Contains("Version: 1.0.0", output); - Assert.Contains("Author: David", output); - Assert.Contains("License: MIT", output); - Assert.Contains(single.Usage, output); - } - - [Theory] - [InlineData("help")] - [InlineData("--help")] - public async Task Runner_WithCustomWriter_SingleCommand_HelpCommand_OutputsCommandUsageToWriter(string input) { - var single = new SingleCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(single) - .SetOutputWriter(writer) - .Build(); - await cliRunner.RunAsync(input, false); - - Assert.Contains(single.Usage, writer.ToString()); - } - - [Theory] - [InlineData("version")] - [InlineData("--version")] - public async Task Runner_WithCustomWriter_SingleCommand_VersionCommand_OutputsVersionToWriter(string input) { - var single = new SingleCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(single) - .SetOutputWriter(writer) - .WithMetadata(options => options.Version = "1.0.0") - .Build(); - await cliRunner.RunAsync(input, false); - - Assert.Contains("Version: 1.0.0", writer.ToString()); - } - - [Fact] - public async Task Runner_WithCustomWriterMultipleCommands_OutputsGeneralHelpToWriter() { - var echo = new EchoCommand(); - var add = new AddCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(echo) - .AddCommand(add) - .SetOutputWriter(writer) - .Build(); - await cliRunner.RunAsync("--help"); - - Assert.Contains("Echo", writer.ToString()); - Assert.Contains("Add", writer.ToString()); - } - - [Fact] - public async Task Runner_WithCustomWriterAddCommand_ReadOnlySpanInput() { - var add = new AddCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(add) - .SetOutputWriter(writer) - .Build(); - await cliRunner.RunAsync(["add", "1", "2"]); - - Assert.Contains("3", writer.ToString()); - } - - [Fact] - public async Task Runner_WithCustomWriterAndMetadata_HelpCommand_OutputsGeneralHelpToWriter() { - var echo = new EchoCommand(); - var add = new AddCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(echo) - .AddCommand(add) - .SetOutputWriter(writer) - .WithMetadata(options => options.Author = "Dave") - .Build(); - await cliRunner.RunAsync("help"); - - Assert.Contains("Dave", writer.ToString()); - } - - [Fact] - public async Task Runner_WithCustomWriterAndMetadata_HelpFlag_OutputsGeneralHelpToWriter() { - var echo = new EchoCommand(); - var add = new AddCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(echo) - .AddCommand(add) - .SetOutputWriter(writer) - .WithMetadata(options => options.Author = "Dave") - .Build(); - await cliRunner.RunAsync("--help"); - - Assert.Contains("Dave", writer.ToString()); - } - - [Fact] - public async Task Runner_WithCustomWriterAndMetadata_VersionCommand_OutputsVersionToWriter() { - var echo = new EchoCommand(); - var add = new AddCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(echo) - .AddCommand(add) - .SetOutputWriter(writer) - .WithMetadata(options => { - options.Author = "Dave"; - options.Version = "1.0.0"; - }) - .Build(); - await cliRunner.RunAsync("version"); - - Assert.Contains("Version: 1.0.0", writer.ToString()); - } - - [Fact] - public async Task Runner_WithCustomWriterAndMetadata_VersionFlag_OutputsVersionToWriter() { - var echo = new EchoCommand(); - var add = new AddCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(echo) - .AddCommand(add) - .SetOutputWriter(writer) - .WithMetadata(options => { - options.Author = "Dave"; - options.Version = "1.0.0"; - }) - .Build(); - await cliRunner.RunAsync("--version"); - - Assert.Contains("Version: 1.0.0", writer.ToString()); - } - - [Fact] - public async Task Runner_WithCustomWriterAndCustomHeader_OutputsGeneralHelpToWriter() { - var echo = new EchoCommand(); - var add = new AddCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(echo) - .AddCommand(add) - .SetOutputWriter(writer) - .WithCustomHeader("Dave") - .SetHelpTextSource(HelpTextSource.CustomHeader) - .Build(); - await cliRunner.RunAsync("--help"); - - Assert.Contains("Dave", writer.ToString()); - } - - [Fact] - public void Runner_WithOrderedCommands_IsOrdered() { - var echo = new EchoCommand(); - var add = new AddCommand(); - var sAdd = new SynchronousAddCommand(); - var writer = new StringWriter(new StringBuilder(), CultureInfo.CurrentCulture); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(echo) - .AddCommand(add) - .AddCommand(sAdd) - .SortCommandsAlphabetically() - .SetOutputWriter(writer) - .Build(); - var copy = cliRunner.Commands; - Assert.Equal(add, copy[0]); - Assert.Equal(echo, copy[1]); - Assert.Equal(sAdd, copy[2]); - } - - [Fact] - public async Task Runner_WithSingleCommand_NoParams() { - StrongBox value = new(false); - - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(new SingleCommandNoParams(value)) - .ConfigureEmptyInputBehavior(EmptyInputBehavior.AttemptToProceed) - .Build(); - var exitCode = await cliRunner.RunAsync("", false); - - Assert.Equal(0, exitCode); - Assert.True(value.Value); - } - - [Fact] - public async Task Runner_WithMultipleCommands_CaseSensitive() { - var cliRunner = CliRunner.CreateBuilder() - .AddCommand(new AddCommand()) - .AddCommand(new EchoCommand()) - .ConfigureArgumentCaseHandling(ArgumentCaseHandling.CaseSensitive) - .Build(); - var exitCode = await cliRunner.RunAsync("aDD 1 2"); - - Assert.NotEqual(0, exitCode); - } -} \ No newline at end of file diff --git a/tests/Sharpify.CommandLineInterface.Tests/EchoCommand.cs b/tests/Sharpify.CommandLineInterface.Tests/EchoCommand.cs deleted file mode 100644 index aa9faee..0000000 --- a/tests/Sharpify.CommandLineInterface.Tests/EchoCommand.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Sharpify.CommandLineInterface.Tests; - -public sealed class EchoCommand : Command { - public override string Name => "echo"; - - public override string Description => "Echoes the specified message."; - - public override string Usage => "echo "; - - public override ValueTask ExecuteAsync(Arguments args) { - if (!args.TryGetValue("message", out string message)) { - return OutputHelper.Return("No message specified", 404, true); - } - return OutputHelper.Return(message, 0); - } -} \ No newline at end of file diff --git a/tests/Sharpify.CommandLineInterface.Tests/GlobalUsings.cs b/tests/Sharpify.CommandLineInterface.Tests/GlobalUsings.cs deleted file mode 100644 index 8c927eb..0000000 --- a/tests/Sharpify.CommandLineInterface.Tests/GlobalUsings.cs +++ /dev/null @@ -1 +0,0 @@ -global using Xunit; \ No newline at end of file diff --git a/tests/Sharpify.CommandLineInterface.Tests/Helper.cs b/tests/Sharpify.CommandLineInterface.Tests/Helper.cs deleted file mode 100644 index 9778dff..0000000 --- a/tests/Sharpify.CommandLineInterface.Tests/Helper.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Sharpify.CommandLineInterface.Tests; - -public static class Helper { - public static Dictionary GetMapped(params (string, string)[] parameters) { - var dict = new Dictionary(StringComparer.CurrentCultureIgnoreCase); - foreach (var (key, value) in parameters) { - dict[key] = value; - } - return dict; - } -} \ No newline at end of file diff --git a/tests/Sharpify.CommandLineInterface.Tests/ParserArgumentsTests.cs b/tests/Sharpify.CommandLineInterface.Tests/ParserArgumentsTests.cs deleted file mode 100644 index ba5749e..0000000 --- a/tests/Sharpify.CommandLineInterface.Tests/ParserArgumentsTests.cs +++ /dev/null @@ -1,178 +0,0 @@ -using System.Collections.ObjectModel; - -namespace Sharpify.CommandLineInterface.Tests; - -public class ParserArgumentsTests { - [Fact] - public void Split_WhenEmpty_ReturnsEmptyList() { - Assert.Empty(Parser.Split("")); - } - - [Theory] - [InlineData("hello", new[] { "hello" })] - [InlineData("hello world", new[] { "hello", "world" })] - [InlineData("\"hello world\"", new[] { "hello world" })] - [InlineData("\"hello world\" \"hello world\"", new[] { "hello world", "hello world" })] - public void Split_WhenValid_ReturnsValid(string input, string[] expected) { - Assert.Equal(expected, Parser.Split(input)); - } - - [Fact] - public void MapArguments_Valid() { - var args = new string[][] { - ["command", "--message", "hello world", "--code", "404", "--force"], // combined - ["command", "--m", "hello world", "--c", "404", "--force"], // named + switch - ["command", "-m", "hello world", "-c", "404", "--force"], // short + switch - ["command", "--attribute", "hidden", "--file", "file.txt"], // combined - ["command", "--a", "hidden", "--f", "file.txt"], // named - ["do-this", "--n", "name", "--f", "file1.txt file2.txt"], // named - ["test", "one", "--param", "value", "two"], // positional after named - }; - var expected = new Dictionary[] { - Helper.GetMapped(("0", "command"), ("message", "hello world"), ("code", "404"), ("force", "")), - Helper.GetMapped(("0", "command"), ("m", "hello world"), ("c", "404"), ("force", "")), - Helper.GetMapped(("0", "command"), ("m", "hello world"), ("c", "404"), ("force", "")), - Helper.GetMapped(("0", "command"), ("attribute", "hidden"), ("file", "file.txt")), - Helper.GetMapped(("0", "command"), ("a", "hidden"), ("f", "file.txt")), - Helper.GetMapped(("0", "do-this"), ("n", "name"), ("f", "file1.txt file2.txt")), - Helper.GetMapped(("0", "test"), ("1", "one"), ("param", "value"), ("2", "two")), - }; - for (var i = 0; i < args.Length; i++) { - var localArgs = args[i].AsReadOnly(); - var localArguments = Parser.MapArguments(localArgs, StringComparer.CurrentCultureIgnoreCase); - Assert.Equal(expected[i], localArguments); - } - } - - [Fact] - public void Parse_WhenEmpty_ReturnsValidButEmptyArguments() { - Assert.Equal(0, Parser.ParseArguments("").Count); - } - - [Fact] - public void ParseArguments_ForCollection_List() { - List args = ["command", "--message", "hello world", "--code", "404", "--force"]; - var arguments = Parser.ParseArguments(args, StringComparer.OrdinalIgnoreCase); - Assert.NotNull(arguments); - Assert.Equal(4, arguments.Count); - Assert.Equal("command", arguments.GetValue(0, "")); - Assert.Equal("hello world", arguments.GetValue("message", "")); - Assert.Equal(404, arguments.GetValue("code", 0)); - Assert.True(arguments.HasFlag("force")); - } - - [Fact] - public void ParseArguments_ForCollection_Array() { - string[] args = ["command", "--message", "hello world", "--code", "404", "--force"]; - var arguments = Parser.ParseArguments(args, StringComparer.OrdinalIgnoreCase); - Assert.NotNull(arguments); - Assert.Equal(4, arguments.Count); - Assert.Equal("command", arguments.GetValue(0, "")); - Assert.Equal("hello world", arguments.GetValue("message", "")); - Assert.Equal(404, arguments.GetValue("code", 0)); - Assert.True(arguments.HasFlag("force")); - } - - [Fact] - public void ParseArguments_ForCollection_ReadOnlyCollection() { - ReadOnlyCollection roc = new(["command", "--message", "hello world", "--code", "404", "--force"]); - var arguments = Parser.ParseArguments(roc, StringComparer.OrdinalIgnoreCase); - Assert.NotNull(arguments); - Assert.Equal(4, arguments.Count); - Assert.Equal("command", arguments.GetValue(0, "")); - Assert.Equal("hello world", arguments.GetValue("message", "")); - Assert.Equal(404, arguments.GetValue("code", 0)); - Assert.True(arguments.HasFlag("force")); - } - - [Fact] - public void Parse_And_Arguments_Command_Name() { - const string input = "command --message \"hello world\" --code 404 --force"; - var arguments = Parser.ParseArguments(input); - Assert.NotNull(arguments); - Assert.True(arguments!.TryGetValue(0, out var command)); - Assert.Equal("command", command); - } - - [Fact] - public void Parse_And_Arguments_Named_Argument() { - const string input = "command --message \"hello world\" --code 404 --force"; - var arguments = Parser.ParseArguments(input); - Assert.NotNull(arguments); - Assert.True(arguments!.TryGetValue("message", out var message)); - Assert.Equal("hello world", message); - } - - [Fact] - public void Parse_And_Arguments_Named_Argument_Multiple() { - const string input = "command --message \"hello world\" --code 404 --force"; - var arguments = Parser.ParseArguments(input); - Assert.NotNull(arguments); - Assert.True(arguments!.TryGetValues("message", " ", out var message)); - Assert.Equal(["hello", "world"], message); - } - - [Fact] - public void Parse_And_Arguments_Named_Argument_With_Aliases() { - const string input = "command --message \"hello world\" --code 404 --force"; - var arguments = Parser.ParseArguments(input); - Assert.NotNull(arguments); - Assert.True(arguments!.TryGetValue(["message", "m"], out var message)); - Assert.Equal("hello world", message); - } - - [Fact] - public void Parse_And_Arguments_Named_Argument_With_Aliases_Inverted() { - const string input = "command -m \"hello world\" --code 404 --force"; - var arguments = Parser.ParseArguments(input); - Assert.NotNull(arguments); - Assert.True(arguments!.TryGetValue(["message", "m"], out var message)); - Assert.Equal("hello world", message); - } - - [Fact] - public void Parse_And_Arguments_Named_Argument_Integer_WithDefault() { - const string input = "command --message \"hello world\" --code 404 --force"; - var arguments = Parser.ParseArguments(input); - Assert.NotNull(arguments); - Assert.True(arguments!.TryGetValue("code", 12, out var code)); - Assert.Equal(404, code); - } - - [Fact] - public void Parse_And_Arguments_With_Flag() { - const string input = "command --message \"hello world\" --code 404 --force"; - var arguments = Parser.ParseArguments(input); - Assert.NotNull(arguments); - Assert.True(arguments!.HasFlag("force")); - } - - [Fact] - public void Parse_And_Arguments_Positional_Negative_Numeric() { - const string input = "command -5 -9"; - var arguments = Parser.ParseArguments(input); - Assert.NotNull(arguments); - Assert.True(arguments!.TryGetValue(1, 0, out int num)); - Assert.Equal(-5, num); - Assert.True(arguments!.TryGetValue(2, 0, out int num2)); - Assert.Equal(-9, num2); - } - - [Fact] - public void Arguments_ForwardPositional_Works() { - const string input = "command delete --code 404 --force"; - var arguments = Parser.ParseArguments(input); - Assert.NotNull(arguments); - var containsCommandAtPosition0 = arguments!.TryGetValue(0, out var command); - Assert.True(containsCommandAtPosition0); - Assert.Equal("command", command); - var containsDelete = arguments.TryGetValue(1, out var delete); - Assert.True(containsDelete); - Assert.Equal("delete", delete); - var forwarded = arguments.ForwardPositionalArguments(); - Assert.NotNull(forwarded); - var first = forwarded!.TryGetValue(0, out var firstArg); - Assert.True(first); - Assert.Equal("delete", firstArg); - } -} \ No newline at end of file diff --git a/tests/Sharpify.CommandLineInterface.Tests/Sharpify.CommandLineInterface.Tests.csproj b/tests/Sharpify.CommandLineInterface.Tests/Sharpify.CommandLineInterface.Tests.csproj deleted file mode 100644 index 1c472a6..0000000 --- a/tests/Sharpify.CommandLineInterface.Tests/Sharpify.CommandLineInterface.Tests.csproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - net9.0 - true - true - enable - enable - Exe - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - \ No newline at end of file diff --git a/tests/Sharpify.CommandLineInterface.Tests/SingleCommand.cs b/tests/Sharpify.CommandLineInterface.Tests/SingleCommand.cs deleted file mode 100644 index ddae9ea..0000000 --- a/tests/Sharpify.CommandLineInterface.Tests/SingleCommand.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Runtime.CompilerServices; - -namespace Sharpify.CommandLineInterface.Tests; - -public sealed class SingleCommand : Command { - public override string Name => ""; - - public override string Description => "Echoes the specified message."; - - public override string Usage => "Single "; - - public override ValueTask ExecuteAsync(Arguments args) { - if (!args.TryGetValue("message", out string message)) { - return OutputHelper.Return("No message specified", 404, true); - } - return OutputHelper.Return(message, 0); - } -} - -public sealed class SingleCommandNoParams : SynchronousCommand { - public override string Name => ""; - - public override string Description => "Changes the inner boxed value to true."; - - public override string Usage => ""; - - private readonly StrongBox _value; - - public SingleCommandNoParams(StrongBox value) { - _value = value; - } - - public override int Execute(Arguments args) { - _value.Value = true; - return 0; - } -} \ No newline at end of file diff --git a/tests/Sharpify.CommandLineInterface.Tests/xunit.runner.json b/tests/Sharpify.CommandLineInterface.Tests/xunit.runner.json deleted file mode 100644 index 7d6ce78..0000000 --- a/tests/Sharpify.CommandLineInterface.Tests/xunit.runner.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "$schema": "https://xunit.net/schema/current/xunit.runner.schema.json", - "diagnosticMessages": true, - "parallelizeAssembly": false, - "parallelizeTestCollections": false, - "showLiveOutput": true -} diff --git a/tests/Sharpify.Data.Tests/AssemblyInfo.cs b/tests/Sharpify.Data.Tests/AssemblyInfo.cs deleted file mode 100644 index b0b47aa..0000000 --- a/tests/Sharpify.Data.Tests/AssemblyInfo.cs +++ /dev/null @@ -1 +0,0 @@ -[assembly: CollectionBehavior(DisableTestParallelization = true)] \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/Color.cs b/tests/Sharpify.Data.Tests/Color.cs deleted file mode 100644 index caea671..0000000 --- a/tests/Sharpify.Data.Tests/Color.cs +++ /dev/null @@ -1,10 +0,0 @@ -using MemoryPack; - -namespace Sharpify.Data.Tests; - -public record Color { - public string Name { get; set; } = ""; - public byte Red { get; set; } - public byte Green { get; set; } - public byte Blue { get; set; } -} \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/DatabaseEncryptedIgnoreCaseTests.cs b/tests/Sharpify.Data.Tests/DatabaseEncryptedIgnoreCaseTests.cs deleted file mode 100644 index 5216fe3..0000000 --- a/tests/Sharpify.Data.Tests/DatabaseEncryptedIgnoreCaseTests.cs +++ /dev/null @@ -1,369 +0,0 @@ -namespace Sharpify.Data.Tests; - -public class DatabaseEncryptedIgnoreCaseTests { - private static Func> Factory => p => { - var path = p.Length is 0 ? - Path.GetTempFileName() - : p; - var database = Database.CreateOrLoad(new() { - Path = path, - EncryptionKey = "test", - IgnoreCase = true, - SerializeOnUpdate = true, - TriggerUpdateEvents = true, - }); - return new(path, database); - }; - - private static Func>> AsyncFactory => async p => { - var path = p.Length is 0 ? - Path.GetTempFileName() - : p; - var database = await Database.CreateOrLoadAsync(new() { - Path = path, - IgnoreCase = true, - SerializeOnUpdate = false, - TriggerUpdateEvents = false, - }); - return new(path, database); - }; - - [Fact] - public void SerializeAndDeserialize() { - using var database = Database.CreateOrLoad(new() { - Path = Path.GetTempFileName(), - EncryptionKey = "test", - IgnoreCase = true, - }); - - database.Upsert("test", new Person("David", 27)); - database.Serialize(); - var length = new FileInfo(database.Config.Path).Length; - - using var database2 = Database.CreateOrLoad(new() { - Path = database.Config.Path, - EncryptionKey = "test", - IgnoreCase = true, - }); - - Assert.True(database2.TryGetValue("TEST", out Person result)); - Assert.Equal(new Person("David", 27), result); - } - - [Fact] - public async Task AsyncSerializeDeserialize() { - // Arrange - using var db = await AsyncFactory(""); - - // Act - db.Database.Upsert("test", new Person("David", 27)); - - await db.Database.SerializeAsync(); - - // Arrange - using var db2 = await AsyncFactory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("TEST", out Person result)); - Assert.Equal(new Person("David", 27), result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Upsert() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Serialize(); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetString("TEST", out string result)); - Assert.Equal("test", result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertEncrypted() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test", "enc"); - db.Database.Serialize(); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetString("TEST", "enc", out string result)); - Assert.Equal("test", result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertBytes() { - // Arrange - using var db = Factory(""); - - // Act - var bytes = new byte[] { 1, 2, 3, 4, 5 }; - db.Database.Upsert("test", bytes); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("TEST", out var result)); - Assert.Equal(bytes, result.Span); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertMemoryPackable() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - db.Database.Upsert("1", p1); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("1", out var p2)); - Assert.Equal(p1, p2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertMany() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - var p2 = new Person("John", 30); - db.Database.UpsertMany("1", [p1, p2]); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValues("1", out var arr)); - Assert.Equal([p1, p2], arr); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertJson() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Color { - Name = "Red", - Red = 255, - Green = 0, - Blue = 0 - }; - db.Database.Upsert("1", p1, JsonContext.Default.Color); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("1", JsonContext.Default.Color, out var p2)); - Assert.Equal(p1, p2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void GeneralFilterTest() { - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - var d1 = new Dog("Buddy", 5); - - db.Database.CreateMemoryPackFilter().Upsert("David", p1); - db.Database.CreateMemoryPackFilter().Upsert("Buddy", d1); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.False(db2.Database.ContainsKey("David")); - Assert.False(db2.Database.ContainsKey("Buddy")); - Assert.True(db.Database.CreateMemoryPackFilter().TryGetValue("DAVID", out var p2)); - Assert.True(db.Database.CreateMemoryPackFilter().TryGetValue("BUDDY", out var d2)); - Assert.Equal(p1, p2); - Assert.Equal(d1, d2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public async Task UpsertConcurrently() { - // Arrange - using var db = Factory(""); - - // Act - var items = Enumerable.Range(0, 100).ToArray(); - var test = new ConcurrentTest(db.Database); - await items.ForAllAsync(test); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.Equal(100, db2.Database.Count); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Contains() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - - // Assert - Assert.True(db.Database.ContainsKey("TEST")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void ContainsFiltered() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - - // Assert - Assert.True(db.Database.CreateMemoryPackFilter().ContainsKey("TEST")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Remove() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Remove("test"); - - // Assert - Assert.False(db.Database.ContainsKey("TEST")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemovePredicate() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Remove(key => key == "test"); - - // Assert - Assert.False(db.Database.ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemoveFiltered() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - db.Database.CreateMemoryPackFilter().Remove("test"); - - // Assert - Assert.False(db.Database.CreateMemoryPackFilter().ContainsKey("TEST")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemoveFilteredPredicate() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - db.Database.CreateMemoryPackFilter().Remove(key => key == "test"); - - // Assert - Assert.False(db.Database.CreateMemoryPackFilter().ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Clear() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Clear(); - - // Assert - Assert.False(db.Database.ContainsKey("TEST")); - - // Cleanup - File.Delete(db.Path); - } - - private class ConcurrentTest : IAsyncAction { - private readonly Database _database; - - public ConcurrentTest(Database database) { - _database = database; - } - - public Task InvokeAsync(int item, CancellationToken token = default) { - var rnd = Random.Shared.Next(10_000, 200_000); - _database.Upsert(item.ToString(), rnd.ToString()); - return Task.CompletedTask; - } - } -} \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/DatabaseEncryptedTests.cs b/tests/Sharpify.Data.Tests/DatabaseEncryptedTests.cs deleted file mode 100644 index 2946a65..0000000 --- a/tests/Sharpify.Data.Tests/DatabaseEncryptedTests.cs +++ /dev/null @@ -1,365 +0,0 @@ -namespace Sharpify.Data.Tests; - -public class DatabaseEncryptedTests { - private static Func> Factory => p => { - var path = p.Length is 0 ? - Path.GetTempFileName() - : p; - var database = Database.CreateOrLoad(new() { - Path = path, - EncryptionKey = "test", - SerializeOnUpdate = true, - TriggerUpdateEvents = true, - }); - return new(path, database); - }; - - private static Func>> AsyncFactory => async p => { - var path = p.Length is 0 ? - Path.GetTempFileName() - : p; - var database = await Database.CreateOrLoadAsync(new() { - Path = path, - SerializeOnUpdate = false, - TriggerUpdateEvents = false, - }); - return new(path, database); - }; - - [Fact] - public void SerializeAndDeserialize() { - using var database = Database.CreateOrLoad(new() { - Path = Path.GetTempFileName(), - EncryptionKey = "test" - }); - - database.Upsert("test", new Person("David", 27)); - database.Serialize(); - var length = new FileInfo(database.Config.Path).Length; - - using var database2 = Database.CreateOrLoad(new() { - Path = database.Config.Path, - EncryptionKey = "test" - }); - - Assert.True(database2.TryGetValue("test", out Person result)); - Assert.Equal(new Person("David", 27), result); - } - - [Fact] - public async Task AsyncSerializeDeserialize() { - // Arrange - using var db = await AsyncFactory(""); - - // Act - db.Database.Upsert("test", new Person("David", 27)); - - await db.Database.SerializeAsync(); - - // Arrange - using var db2 = await AsyncFactory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("test", out Person result)); - Assert.Equal(new Person("David", 27), result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Upsert() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Serialize(); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetString("test", out string result)); - Assert.Equal("test", result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertEncrypted() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test", "enc"); - db.Database.Serialize(); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetString("test", "enc", out string result)); - Assert.Equal("test", result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertBytes() { - // Arrange - using var db = Factory(""); - - // Act - byte[] bytes = [1, 2, 3, 4, 5]; - db.Database.Upsert("test", bytes); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("test", out var result)); - Assert.Equal(bytes, result.Span); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertMemoryPackable() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - db.Database.Upsert("1", p1); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("1", out var p2)); - Assert.Equal(p1, p2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertMany() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - var p2 = new Person("John", 30); - db.Database.UpsertMany("1", [p1, p2]); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValues("1", out var arr)); - Assert.Equal([p1, p2], arr); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertJson() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Color { - Name = "Red", - Red = 255, - Green = 0, - Blue = 0 - }; - db.Database.Upsert("1", p1, JsonContext.Default.Color); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("1", JsonContext.Default.Color, out var p2)); - Assert.Equal(p1, p2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void GeneralFilterTest() { - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - var d1 = new Dog("Buddy", 5); - - db.Database.CreateMemoryPackFilter().Upsert("David", p1); - db.Database.CreateMemoryPackFilter().Upsert("Buddy", d1); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.False(db2.Database.ContainsKey("David")); - Assert.False(db2.Database.ContainsKey("Buddy")); - Assert.True(db.Database.CreateMemoryPackFilter().TryGetValue("David", out var p2)); - Assert.True(db.Database.CreateMemoryPackFilter().TryGetValue("Buddy", out var d2)); - Assert.Equal(p1, p2); - Assert.Equal(d1, d2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public async Task UpsertConcurrently() { - // Arrange - using var db = Factory(""); - - // Act - var items = Enumerable.Range(0, 100).ToArray(); - var test = new ConcurrentTest(db.Database); - await items.ForAllAsync(test); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.Equal(100, db2.Database.Count); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Contains() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - - // Assert - Assert.True(db.Database.ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void ContainsFiltered() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - - // Assert - Assert.True(db.Database.CreateMemoryPackFilter().ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Remove() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Remove("test"); - - // Assert - Assert.False(db.Database.ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemovePredicate() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Remove(key => key == "test"); - - // Assert - Assert.False(db.Database.ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemoveFiltered() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - db.Database.CreateMemoryPackFilter().Remove("test"); - - // Assert - Assert.False(db.Database.CreateMemoryPackFilter().ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemoveFilteredPredicate() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - db.Database.CreateMemoryPackFilter().Remove(key => key == "test"); - - // Assert - Assert.False(db.Database.CreateMemoryPackFilter().ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Clear() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Clear(); - - // Assert - Assert.False(db.Database.ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - private class ConcurrentTest : IAsyncAction { - private readonly Database _database; - - public ConcurrentTest(Database database) { - _database = database; - } - - public Task InvokeAsync(int item, CancellationToken token = default) { - var rnd = Random.Shared.Next(10_000, 200_000); - _database.Upsert(item.ToString(), rnd.ToString()); - return Task.CompletedTask; - } - } -} \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/DatabaseIgnoreCaseTests.cs b/tests/Sharpify.Data.Tests/DatabaseIgnoreCaseTests.cs deleted file mode 100644 index 607230e..0000000 --- a/tests/Sharpify.Data.Tests/DatabaseIgnoreCaseTests.cs +++ /dev/null @@ -1,368 +0,0 @@ -namespace Sharpify.Data.Tests; - -public class DatabaseIgnoreCaseTests { - private static Func> Factory => p => { - var path = p.Length is 0 ? - Path.GetTempFileName() - : p; - var database = Database.CreateOrLoad(new() { - Path = path, - IgnoreCase = true, - SerializeOnUpdate = true, - TriggerUpdateEvents = true, - }); - return new(path, database); - }; - - private static Func>> AsyncFactory => async p => { - var path = p.Length is 0 ? - Path.GetTempFileName() - : p; - var database = await Database.CreateOrLoadAsync(new() { - Path = path, - IgnoreCase = true, - SerializeOnUpdate = false, - TriggerUpdateEvents = false, - }); - return new(path, database); - }; - - [Fact] - public void SerializeAndDeserialize() { - using var database = Database.CreateOrLoad(new() { - Path = Path.GetTempFileName(), - EncryptionKey = "test", - IgnoreCase = true, - }); - - database.Upsert("test", new Person("David", 27)); - database.Serialize(); - var length = new FileInfo(database.Config.Path).Length; - - using var database2 = Database.CreateOrLoad(new() { - Path = database.Config.Path, - EncryptionKey = "test", - IgnoreCase = true, - }); - - Assert.True(database2.TryGetValue("TEST", out Person result)); - Assert.Equal(new Person("David", 27), result); - } - - [Fact] - public async Task AsyncSerializeDeserialize() { - // Arrange - using var db = await AsyncFactory(""); - - // Act - db.Database.Upsert("test", new Person("David", 27)); - - await db.Database.SerializeAsync(); - - // Arrange - using var db2 = await AsyncFactory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("TEST", out Person result)); - Assert.Equal(new Person("David", 27), result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Upsert() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Serialize(); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetString("TEST", out string result)); - Assert.Equal("test", result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertEncrypted() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test", "enc"); - db.Database.Serialize(); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetString("TEST", "enc", out string result)); - Assert.Equal("test", result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertBytes() { - // Arrange - using var db = Factory(""); - - // Act - byte[] bytes = [1, 2, 3, 4, 5]; - db.Database.Upsert("test", bytes); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("TEST", out var result)); - Assert.Equal(bytes, result.Span); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertMemoryPackable() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - db.Database.Upsert("1", p1); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("1", out var p2)); - Assert.Equal(p1, p2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertMany() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - var p2 = new Person("John", 30); - db.Database.UpsertMany("1", [p1, p2]); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValues("1", out var arr)); - Assert.Equal([p1, p2], arr); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertJson() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Color { - Name = "Red", - Red = 255, - Green = 0, - Blue = 0 - }; - db.Database.Upsert("1", p1, JsonContext.Default.Color); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("1", JsonContext.Default.Color, out var p2)); - Assert.Equal(p1, p2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void GeneralFilterTest() { - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - var d1 = new Dog("Buddy", 5); - - db.Database.CreateMemoryPackFilter().Upsert("David", p1); - db.Database.CreateMemoryPackFilter().Upsert("Buddy", d1); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.False(db2.Database.ContainsKey("David")); - Assert.False(db2.Database.ContainsKey("Buddy")); - Assert.True(db.Database.CreateMemoryPackFilter().TryGetValue("DAVID", out var p2)); - Assert.True(db.Database.CreateMemoryPackFilter().TryGetValue("BUDDY", out var d2)); - Assert.Equal(p1, p2); - Assert.Equal(d1, d2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public async Task UpsertConcurrently() { - // Arrange - using var db = Factory(""); - - // Act - var items = Enumerable.Range(0, 100).ToArray(); - var test = new ConcurrentTest(db.Database); - await items.ForAllAsync(test); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.Equal(100, db2.Database.Count); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Contains() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - - // Assert - Assert.True(db.Database.ContainsKey("TEST")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void ContainsFiltered() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - - // Assert - Assert.True(db.Database.CreateMemoryPackFilter().ContainsKey("TEST")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Remove() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Remove("test"); - - // Assert - Assert.False(db.Database.ContainsKey("TEST")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemovePredicate() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Remove(key => key == "test"); - - // Assert - Assert.False(db.Database.ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemoveFiltered() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - db.Database.CreateMemoryPackFilter().Remove("test"); - - // Assert - Assert.False(db.Database.CreateMemoryPackFilter().ContainsKey("TEST")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemoveFilteredPredicate() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - db.Database.CreateMemoryPackFilter().Remove(key => key == "test"); - - // Assert - Assert.False(db.Database.CreateMemoryPackFilter().ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Clear() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Clear(); - - // Assert - Assert.False(db.Database.ContainsKey("TEST")); - - // Cleanup - File.Delete(db.Path); - } - - private class ConcurrentTest : IAsyncAction { - private readonly Database _database; - - public ConcurrentTest(Database database) { - _database = database; - } - - public Task InvokeAsync(int item, CancellationToken token = default) { - var rnd = Random.Shared.Next(10_000, 200_000); - _database.Upsert(item.ToString(), rnd.ToString()); - return Task.CompletedTask; - } - } -} \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/DatabaseTests.cs b/tests/Sharpify.Data.Tests/DatabaseTests.cs deleted file mode 100644 index aa88a88..0000000 --- a/tests/Sharpify.Data.Tests/DatabaseTests.cs +++ /dev/null @@ -1,441 +0,0 @@ -using System.Buffers; - -namespace Sharpify.Data.Tests; - -public class DatabaseTests { - private static Func> Factory => p => { - var path = p.Length is 0 ? - Path.GetTempFileName() - : p; - var database = Database.CreateOrLoad(new() { - Path = path, - SerializeOnUpdate = true, - TriggerUpdateEvents = true, - }); - return new(path, database); - }; - - private static Func>> AsyncFactory => async p => { - var path = p.Length is 0 ? - Path.GetTempFileName() - : p; - var database = await Database.CreateOrLoadAsync(new() { - Path = path, - SerializeOnUpdate = false, - TriggerUpdateEvents = false, - }); - return new(path, database); - }; - - [Fact] - public void SerializeAndDeserialize() { - using var database = Database.CreateOrLoad(new() { - Path = Path.GetTempFileName(), - EncryptionKey = "test" - }); - - database.Upsert("test", new Person("David", 27)); - database.Serialize(); - var length = new FileInfo(database.Config.Path).Length; - - using var database2 = Database.CreateOrLoad(new() { - Path = database.Config.Path, - EncryptionKey = "test" - }); - - Assert.True(database2.TryGetValue("test", out Person result)); - Assert.Equal(new Person("David", 27), result); - } - - [Fact] - public async Task AsyncSerializeDeserialize() { - // Arrange - using var db = await AsyncFactory(""); - - // Act - db.Database.Upsert("test", new Person("David", 27)); - - await db.Database.SerializeAsync(); - - // Arrange - using var db2 = await AsyncFactory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("test", out Person result)); - Assert.Equal(new Person("David", 27), result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Upsert() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Serialize(); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetString("test", out string result)); - Assert.Equal("test", result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertEncrypted() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test", "enc"); - db.Database.Serialize(); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetString("test", "enc", out string result)); - Assert.Equal("test", result); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertBytes() { - // Arrange - using var db = Factory(""); - - // Act - byte[] bytes = [1, 2, 3, 4, 5]; - db.Database.Upsert("test", bytes); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("test", out var result)); - Assert.Equal(bytes, result.Span); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void SpanBasedByteReadWrite() { - // Arrange - using var db = Factory(""); - - // Act - byte[] bytes = [1, 2, 3, 4, 5]; - db.Database.Upsert("test", bytes); - - using var buffer = db.Database.TryReadToRentedBuffer("test", "", 1); - buffer.WriteAndAdvance(6); - db.Database.Upsert("test", buffer.WrittenSpan); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("test", out var result)); - Assert.Equal(new byte[] { 1, 2, 3, 4, 5, 6 }, result.Span); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertMemoryPackable() { - // Arrange - using var db = Factory(""); - - var filter = db.Database.CreateMemoryPackFilter(); - - // Act - var p1 = new Person("David", 27); - db.Database.Upsert("1", p1); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("1", out var p2)); - Assert.Equal(p1, p2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertMany() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - var p2 = new Person("John", 30); - db.Database.UpsertMany("1", [p1, p2]); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValues("1", out var arr)); - Assert.Equal([p1, p2], arr); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertManySpan() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - var p2 = new Person("John", 30); - Span span = [p1, p2]; - db.Database.UpsertMany("1", span); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValues("1", out var arr)); - Assert.Equal([p1, p2], arr); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void SpanBasedTReadWrite() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - var p2 = new Person("John", 30); - var p3 = new Person("Jane", 25); - Span span = [p1, p2]; - db.Database.UpsertMany("1", span); - - using var buffer = db.Database.TryReadToRentedBuffer("1", "", 1); - buffer.WriteAndAdvance(p3); - db.Database.UpsertMany("1", buffer.WrittenSpan); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValues("1", out var arr)); - Assert.Equal([p1, p2, p3], arr); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void UpsertJson() { - // Arrange - using var db = Factory(""); - - // Act - var p1 = new Color { - Name = "Red", - Red = 255, - Green = 0, - Blue = 0 - }; - db.Database.Upsert("1", p1, JsonContext.Default.Color); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.True(db2.Database.TryGetValue("1", JsonContext.Default.Color, out var p2)); - Assert.Equal(p1, p2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void GeneralFilterTest() { - using var db = Factory(""); - - // Act - var p1 = new Person("David", 27); - var d1 = new Dog("Buddy", 5); - - db.Database.CreateMemoryPackFilter().Upsert("David", p1); - db.Database.CreateMemoryPackFilter().Upsert("Buddy", d1); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.False(db2.Database.ContainsKey("David")); - Assert.False(db2.Database.ContainsKey("Buddy")); - Assert.True(db.Database.CreateMemoryPackFilter().TryGetValue("David", out var p2)); - Assert.True(db.Database.CreateMemoryPackFilter().TryGetValue("Buddy", out var d2)); - Assert.Equal(p1, p2); - Assert.Equal(d1, d2); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public async Task UpsertConcurrently() { - // Arrange - using var db = Factory(""); - - // Act - var items = Enumerable.Range(0, 100).ToArray(); - var test = new ConcurrentTest(db.Database); - await items.ForAllAsync(test); - - // Arrange - using var db2 = Factory(db.Path); - - // Assert - Assert.Equal(100, db2.Database.Count); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Contains() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - - // Assert - Assert.True(db.Database.ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void ContainsFiltered() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - - // Assert - Assert.True(db.Database.CreateMemoryPackFilter().ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Remove() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Remove("test"); - - // Assert - Assert.False(db.Database.ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemovePredicate() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Remove(key => key == "test"); - - // Assert - Assert.False(db.Database.ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemoveFiltered() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - db.Database.CreateMemoryPackFilter().Remove("test"); - - // Assert - Assert.False(db.Database.CreateMemoryPackFilter().ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void RemoveFilteredPredicate() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.CreateMemoryPackFilter().Upsert("test", new Person("David", 27)); - db.Database.CreateMemoryPackFilter().Remove(key => key == "test"); - - // Assert - Assert.False(db.Database.CreateMemoryPackFilter().ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - [Fact] - public void Clear() { - // Arrange - using var db = Factory(""); - - // Act - db.Database.Upsert("test", "test"); - db.Database.Clear(); - - // Assert - Assert.False(db.Database.ContainsKey("test")); - - // Cleanup - File.Delete(db.Path); - } - - private class ConcurrentTest : IAsyncAction { - private readonly Database _database; - - public ConcurrentTest(Database database) { - _database = database; - } - - public Task InvokeAsync(int item, CancellationToken token = default) { - var rnd = Random.Shared.Next(10_000, 200_000); - _database.Upsert(item.ToString(), rnd.ToString()); - return Task.CompletedTask; - } - } -} \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/Dog.cs b/tests/Sharpify.Data.Tests/Dog.cs deleted file mode 100644 index 71b2790..0000000 --- a/tests/Sharpify.Data.Tests/Dog.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System.Text.Json.Serialization; - -using MemoryPack; - -namespace Sharpify.Data.Tests; - -[MemoryPackable] -public readonly partial record struct Dog(string Name, int Age); \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/FactoryResult.cs b/tests/Sharpify.Data.Tests/FactoryResult.cs deleted file mode 100644 index 2d7de90..0000000 --- a/tests/Sharpify.Data.Tests/FactoryResult.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Sharpify.Data.Tests; - -public record FactoryResult(string Path, T Database) : IDisposable where T : IDisposable { - public void Dispose() => Database.Dispose(); -} \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/GlobalUsings.cs b/tests/Sharpify.Data.Tests/GlobalUsings.cs deleted file mode 100644 index 8c927eb..0000000 --- a/tests/Sharpify.Data.Tests/GlobalUsings.cs +++ /dev/null @@ -1 +0,0 @@ -global using Xunit; \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/HelperTests.cs b/tests/Sharpify.Data.Tests/HelperTests.cs deleted file mode 100644 index 77c985e..0000000 --- a/tests/Sharpify.Data.Tests/HelperTests.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Bogus; - -using MemoryPack; - -using Sharpify.Collections; - -namespace Sharpify.Data.Tests; - -public class HelperTests { - [Theory] - [InlineData(new byte[] { 1, 2, 3, 4, 5, 6 }, 6)] - [InlineData(new[] { 1, 2, 3, 4, 5, 6 }, 6)] - [InlineData(new double[] { 1, 2, 3, 4, 5, 6 }, 6)] - [InlineData(new[] { "1", "2", "3", "4", "5", "6" }, 6)] - public void GetRequiredLength_Unmanaged(T[] data, int expectedLength) { - var serialized = MemoryPackSerializer.Serialize(data); - var requiredLength = Helper.GetRequiredLength(serialized); - Assert.Equal(expectedLength, requiredLength); - } - - [Fact] - public void GetRequiredLength_Person() { - var faker = new Faker(); - var data = Enumerable.Range(1, faker.Random.Int(10, 100)).Select(_ => new Person(faker.Name.FullName(), faker.Random.Int(1, 100))).ToArray(); - var serialized = MemoryPackSerializer.Serialize(data); - var requiredLength = Helper.GetRequiredLength(serialized); - Assert.Equal(data.Length, requiredLength); - } - - [Theory] - [InlineData(new byte[] { 1, 2, 3, 4, 5, 6 }, 6)] - [InlineData(new[] { 1, 2, 3, 4, 5, 6 }, 6)] - [InlineData(new double[] { 1, 2, 3, 4, 5, 6 }, 6)] - [InlineData(new[] { "1", "2", "3", "4", "5", "6" }, 6)] - public void ReadToRentedBufferWriter_Unmanaged(T[] data, int expectedLength) { - var serialized = MemoryPackSerializer.Serialize(data); - var requiredLength = Helper.GetRequiredLength(serialized); - var buffer = new RentedBufferWriter(requiredLength + 5); - try { - Helper.ReadToRenterBufferWriter(ref buffer, serialized, requiredLength); - Assert.Equal(expectedLength, buffer.Position); - } finally { - buffer?.Dispose(); - } - } - - [Fact] - public void ReadToRentedBufferWriter_Person() { - var faker = new Faker(); - var data = Enumerable.Range(1, faker.Random.Int(10, 100)).Select(_ => new Person(faker.Name.FullName(), faker.Random.Int(1, 100))).ToArray(); - var serialized = MemoryPackSerializer.Serialize(data); - var requiredLength = Helper.GetRequiredLength(serialized); - var buffer = new RentedBufferWriter(requiredLength + 5); - try { - Helper.ReadToRenterBufferWriter(ref buffer, serialized, requiredLength); - Assert.Equal(requiredLength, buffer.Position); - } finally { - buffer?.Dispose(); - } - } -} \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/JsonContext.cs b/tests/Sharpify.Data.Tests/JsonContext.cs deleted file mode 100644 index 39974bf..0000000 --- a/tests/Sharpify.Data.Tests/JsonContext.cs +++ /dev/null @@ -1,7 +0,0 @@ -using System.Text.Json.Serialization; - -namespace Sharpify.Data.Tests; - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(Color))] -public partial class JsonContext : JsonSerializerContext { } \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/Person.cs b/tests/Sharpify.Data.Tests/Person.cs deleted file mode 100644 index c28fdb7..0000000 --- a/tests/Sharpify.Data.Tests/Person.cs +++ /dev/null @@ -1,6 +0,0 @@ -using MemoryPack; - -namespace Sharpify.Data.Tests; - -[MemoryPackable] -public readonly partial record struct Person(string Name, int Age); \ No newline at end of file diff --git a/tests/Sharpify.Data.Tests/Sharpify.Data.Tests.csproj b/tests/Sharpify.Data.Tests/Sharpify.Data.Tests.csproj deleted file mode 100644 index 987cc84..0000000 --- a/tests/Sharpify.Data.Tests/Sharpify.Data.Tests.csproj +++ /dev/null @@ -1,31 +0,0 @@ - - - - net9.0;net8.0 - enable - latest - enable - - false - true - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - diff --git a/tests/Sharpify.Data.Tests/User.cs b/tests/Sharpify.Data.Tests/User.cs deleted file mode 100644 index 810ef1c..0000000 --- a/tests/Sharpify.Data.Tests/User.cs +++ /dev/null @@ -1,36 +0,0 @@ - -using MemoryPack; - -namespace Sharpify.Data.Tests; - -public sealed class User : IFilterable { - public Person Person { get; init; } - - public User(Person person) { - Person = person; - } - - public static User Deserialize(ReadOnlySpan data) { - var p = MemoryPackSerializer.Deserialize(data); - return new(p); - } - - public static User[]? DeserializeMany(ReadOnlySpan data) { - var persons = MemoryPackSerializer.Deserialize(data); - return persons!.Select(p => new User(p)).ToArray(); - } - - public static byte[]? Serialize(User? value) { - if (value is null) { - return null; - } - return MemoryPackSerializer.Serialize(value.Person); - } - - public static byte[]? SerializeMany(User[]? values) { - if (values is null) { - return null; - } - return MemoryPackSerializer.Serialize(values.Select(v => v.Person).ToArray()); - } -} \ No newline at end of file From eee0f5b1c49307312ef9df2347c9c4e50a51c1ca Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 11:35:43 +0200 Subject: [PATCH 05/26] Add solution file --- Sharpify.slnx | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Sharpify.slnx diff --git a/Sharpify.slnx b/Sharpify.slnx new file mode 100644 index 0000000..fd6cf51 --- /dev/null +++ b/Sharpify.slnx @@ -0,0 +1,8 @@ + + + + + + + + From aeeae5672ccfe19ad01775f24e81ef1c06388b5c Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 11:36:40 +0200 Subject: [PATCH 06/26] Update unit tests workflow --- .github/workflows/Tests.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/Tests.yaml b/.github/workflows/Tests.yaml index dc174c8..af197c4 100644 --- a/.github/workflows/Tests.yaml +++ b/.github/workflows/Tests.yaml @@ -10,9 +10,8 @@ jobs: fail-fast: false matrix: platform: [ubuntu-latest, windows-latest, macos-latest] - project: [tests/Sharpify.Tests/Sharpify.Tests.csproj, tests/Sharpify.CommandLineInterface.Tests/Sharpify.CommandLineInterface.Tests.csproj] uses: dusrdev/actions/.github/workflows/reusable-dotnet-test-mtp.yaml@main with: platform: ${{ matrix.platform }} dotnet-version: 9.0.x - test-project-path: ${{ matrix.project }} \ No newline at end of file + test-project-path: tests/Sharpify.Tests/Sharpify.Tests.csproj \ No newline at end of file From f460605d3f08e47cd1d8b201e160eebdeb044f25 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 11:38:21 +0200 Subject: [PATCH 07/26] Updated versions and runtimes --- src/Sharpify/Sharpify.csproj | 5 ++--- tests/Sharpify.Tests/Sharpify.Tests.csproj | 11 +++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Sharpify/Sharpify.csproj b/src/Sharpify/Sharpify.csproj index 1956604..8ebcca8 100644 --- a/src/Sharpify/Sharpify.csproj +++ b/src/Sharpify/Sharpify.csproj @@ -1,8 +1,8 @@ - net9.0;net8.0 + net9.0 enable - 2.6.0 + 3.0.0 enable true David Shnayder @@ -27,5 +27,4 @@ - diff --git a/tests/Sharpify.Tests/Sharpify.Tests.csproj b/tests/Sharpify.Tests/Sharpify.Tests.csproj index e4e0fb8..4b85404 100644 --- a/tests/Sharpify.Tests/Sharpify.Tests.csproj +++ b/tests/Sharpify.Tests/Sharpify.Tests.csproj @@ -10,14 +10,17 @@ - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + runtime; build; native; contentfiles; analyzers; buildtransitive all - + From b48f1b248f45763908c13249b7bbaa3e18f37a5c Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 11:40:28 +0200 Subject: [PATCH 08/26] Remove no longer supported features - 1 --- src/Sharpify/Collections/BufferWrapper{T}.cs | 4 +- .../LazyLocalPersistentDictionary.cs | 101 --------- .../Collections/LocalPersistentDictionary.cs | 47 ----- .../Collections/PersistentDictionary.cs | 182 ----------------- .../Collections/RentedBufferWriter{T}.cs | 191 ------------------ .../LazyLocalPersistentDictionaryTests.cs | 45 ----- .../LocalPersistentDictionaryTests.cs | 138 ------------- .../Collections/RentedBufferWriterTests.cs | 167 --------------- 8 files changed, 1 insertion(+), 874 deletions(-) delete mode 100644 src/Sharpify/Collections/LazyLocalPersistentDictionary.cs delete mode 100644 src/Sharpify/Collections/LocalPersistentDictionary.cs delete mode 100644 src/Sharpify/Collections/PersistentDictionary.cs delete mode 100644 src/Sharpify/Collections/RentedBufferWriter{T}.cs delete mode 100644 tests/Sharpify.Tests/Collections/LazyLocalPersistentDictionaryTests.cs delete mode 100644 tests/Sharpify.Tests/Collections/LocalPersistentDictionaryTests.cs delete mode 100644 tests/Sharpify.Tests/Collections/RentedBufferWriterTests.cs diff --git a/src/Sharpify/Collections/BufferWrapper{T}.cs b/src/Sharpify/Collections/BufferWrapper{T}.cs index f991fc1..28d1a20 100644 --- a/src/Sharpify/Collections/BufferWrapper{T}.cs +++ b/src/Sharpify/Collections/BufferWrapper{T}.cs @@ -2,7 +2,6 @@ namespace Sharpify.Collections; -#if NET9_0_OR_GREATER /// /// Represents a buffer than be used to efficiently append items to a span. /// @@ -80,5 +79,4 @@ public void Append(ReadOnlySpan items) { /// Returns the used portion of the buffer as a readonly span. ///
public readonly ReadOnlySpan WrittenSpan => _buffer.Slice(0, Position); -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/src/Sharpify/Collections/LazyLocalPersistentDictionary.cs b/src/Sharpify/Collections/LazyLocalPersistentDictionary.cs deleted file mode 100644 index bc1e4cf..0000000 --- a/src/Sharpify/Collections/LazyLocalPersistentDictionary.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System.Text.Json; - -namespace Sharpify.Collections; - -/// -/// Represents a dictionary that persists its data to a local file but not in memory. -/// -public class LazyLocalPersistentDictionary : PersistentDictionary { - private readonly string _path; - private readonly StringComparer _stringComparer; - private static readonly Dictionary Empty = []; - - /// - /// Creates a new instance of with the and specified. - /// - /// The full path to the file to persist the dictionary to. - /// The comparer to use for the dictionary. - public LazyLocalPersistentDictionary(string path, StringComparer comparer) { - _path = path; - _stringComparer = comparer; - } - - /// - /// Creates a new instance of with the and . - /// - /// The path to the file to persist the dictionary to. - public LazyLocalPersistentDictionary(string path) : this(path, StringComparer.Ordinal) { } - - /// - /// Retrieves the value associated with the specified key from the persistent dictionary. - /// - /// The key of the value to retrieve. - /// - /// The value associated with the specified key if it exists in the dictionary; otherwise, null. - /// - protected override string? GetValueByKey(string key) { - if (!File.Exists(_path)) { - return null; - } - var length = checked((int)new FileInfo(_path).Length); - if (length is 0) { - return null; - } - using var buffer = new RentedBufferWriter(length); - using var file = File.Open(_path, FileMode.Open); - var numRead = file.Read(buffer.GetSpan()); - buffer.Advance(numRead); - ReadOnlySpan jsonUtf8Bytes = buffer.WrittenSpan; - var reader = new Utf8JsonReader(jsonUtf8Bytes, InternalHelper.JsonReaderOptions); - while (reader.Read()) { - if (reader.TokenType is not JsonTokenType.PropertyName) { - continue; - } - var property = reader.GetString(); - if (!_stringComparer.Equals(property, key)) { - _ = reader.TrySkip(); - continue; - } - reader.Read(); - var value = reader.GetString(); - return value; - } - return null; - } - - /// - /// Sets the key and value in the dictionary. - /// If the dictionary file does not exist, a new dictionary is created and the key-value pair is added. - /// If the dictionary file exists, the dictionary is deserialized and the key-value pair is added or updated. - /// - /// The key to set. - /// The value to set. - protected override void SetKeyAndValue(string key, string value) { - if (!File.Exists(_path)) { - _dict ??= new Dictionary(_stringComparer); - _dict[key] = value; - return; - } - var sDict = Deserialize(); - if (sDict is null) { - _dict ??= new Dictionary(_stringComparer); - _dict[key] = value; - return; - } - _dict = sDict; - _dict[key] = value; - } - - /// - protected override Dictionary? Deserialize() { - using var file = File.Open(_path, FileMode.Open); - return JsonSerializer.Deserialize(file, JsonContext.Default.DictionaryStringString); - } - - /// - protected override async Task SerializeAsync() { - await using var file = File.Open(_path, FileMode.Create); - await JsonSerializer.SerializeAsync(file, _dict, JsonContext.Default.DictionaryStringString).ConfigureAwait(false); - _dict = Empty; - } -} \ No newline at end of file diff --git a/src/Sharpify/Collections/LocalPersistentDictionary.cs b/src/Sharpify/Collections/LocalPersistentDictionary.cs deleted file mode 100644 index 8177462..0000000 --- a/src/Sharpify/Collections/LocalPersistentDictionary.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.Text.Json; - -namespace Sharpify.Collections; - -/// -/// Represents a dictionary that persists its data to a local file. -/// -public class LocalPersistentDictionary : PersistentDictionary { - private readonly string _path; - - /// - /// Creates a new instance of with the and specified. - /// - /// The full path to the file to persist the dictionary to. - /// The comparer to use for the dictionary. - public LocalPersistentDictionary(string path, StringComparer comparer) { - _path = path; - if (!File.Exists(_path)) { - _dict = new Dictionary(comparer); - return; - } - var sDict = Deserialize(); - if (sDict is null) { - _dict = new Dictionary(comparer); - return; - } - _dict = new Dictionary(sDict, comparer); - } - - /// - /// Creates a new instance of with the and . - /// - /// The path to the file to persist the dictionary to. - public LocalPersistentDictionary(string path) : this(path, StringComparer.Ordinal) { } - - /// - protected override Dictionary? Deserialize() { - using var file = File.Open(_path, FileMode.Open); - return JsonSerializer.Deserialize(file, JsonContext.Default.DictionaryStringString); - } - - /// - protected override async Task SerializeAsync() { - await using var file = File.Open(_path, FileMode.Create); - await JsonSerializer.SerializeAsync(file, _dict, JsonContext.Default.DictionaryStringString).ConfigureAwait(false); - } -} \ No newline at end of file diff --git a/src/Sharpify/Collections/PersistentDictionary.cs b/src/Sharpify/Collections/PersistentDictionary.cs deleted file mode 100644 index 42e753f..0000000 --- a/src/Sharpify/Collections/PersistentDictionary.cs +++ /dev/null @@ -1,182 +0,0 @@ -using System.Collections.Concurrent; -using System.Globalization; -using System.Runtime.CompilerServices; - -namespace Sharpify.Collections; - -/// -/// Provides a thread-safe dictionary that can be efficiently persisted. -/// -public abstract class PersistentDictionary : IDisposable{ - /// - /// A thread-safe dictionary that stores string keys and values. - /// - protected Dictionary _dict = []; - - private readonly ConcurrentQueue> _queue = new(); - - private readonly SemaphoreSlim _semaphore = new(1, 1); - - private volatile bool _disposed; - - /// - /// Gets the number of key-value pairs contained in the PersistentDictionary. - /// - public int Count => _dict.Count; - - /// - /// Gets the value associated with the specified key. - /// - /// The key to retrieve the value for. - /// The value associated with the specified key, or null if the key is not found. - protected virtual string? GetValueByKey(string key) { - if (Count is 0) { - return null; - } - ref var value = ref _dict.GetValueRefOrNullRef(key); - return Unsafe.IsNullRef(ref value) ? null : value; - } - - /// - /// Gets the value associated with the specified key. - /// - public virtual string? this[string key] => GetValueByKey(key); - - /// - /// Gets the value associated with the specified key, or creates a new key-value pair if the key does not exist. - /// - /// The key of the element to get or create. - /// The default value to use if the key does not exist. - /// The value associated with the specified key, or the default value if the key does not exist. - public virtual async ValueTask GetOrCreateAsync(string key, string @default) { - if (string.IsNullOrWhiteSpace(key)) { - throw new ArgumentNullException(nameof(key)); - } - - var value = GetValueByKey(key); - if (value is not null) { - return value; - } - - await UpsertAsync(key, @default); - return @default; - } - - /// - /// Gets the value associated with the specified key, or creates a new value if the key does not exist. - /// - /// The type of the value. - /// The key of the value. - /// The default value to create if the key does not exist. - /// The value associated with the key, or the created default value. - public async ValueTask GetOrCreateAsync(string key, T @default) where T : struct, IParsable { - var value = await GetOrCreateAsync(key, @default.ToString() ?? ""); - return T.Parse(value, CultureInfo.InvariantCulture); - } - - /// - /// Sets the specified key and value in the dictionary. - /// - /// The key to set. - /// The value to set. - protected virtual void SetKeyAndValue(string key, string value) => _dict![key] = value; - - /// - /// Inserts or updates a key-value pair in the dictionary and serializes. - /// - /// The key to insert or update. - /// The value to insert or update. - public virtual async ValueTask UpsertAsync(string key, string value) { - if (string.IsNullOrWhiteSpace(key) || string.IsNullOrWhiteSpace(value)) { - return; - } - - // Skip updating if the key exists and the value is the same - var existingValue = GetValueByKey(key); - if (existingValue is not null && Equals(existingValue, value, StringComparison.Ordinal)) { - return; - } - - // Each call adds the key-value pair to the queue, and then tries to acquire the semaphore. - _queue.Enqueue(new(key, value)); - - // Concurrent calls, will be stuck here until the semaphore is released. - // Upon which the other thread inside might have already added the key-value pair to the dictionary. - // And serialized. - // We check after the release if anything left is in the queue and repeat the process. - // In perfect conditions with truly concurrent writes, it will cause the serialization to happen only once. - // Improving performance and reducing resource usage for writes. - try { - await _semaphore.WaitAsync(); - - if (_queue.IsEmpty) { - return; - } - - while (_queue.TryDequeue(out var item)) { - SetKeyAndValue(item.Key, item.Value); - } - await SerializeDictionaryAsync(); - } finally { - _semaphore.Release(); - } - - static bool Equals(ReadOnlySpan left, ReadOnlySpan right, StringComparison comparison) { - return left.Equals(right, comparison); - } - } - - /// - /// Upserts a value in the persistent dictionary based on the specified key. - /// - /// The type of the value. - /// The key to upsert the value for. - /// The value to upsert. - /// A representing the asynchronous operation. - public ValueTask UpsertAsync(string key, T value) where T : struct, IConvertible { - if (string.IsNullOrWhiteSpace(key)) { - throw new ArgumentNullException(nameof(key)); - } - - return UpsertAsync(key, value.ToString() ?? ""); - } - - /// - /// Deserializes the dictionary from its persisted state. - /// - protected abstract Dictionary? Deserialize(); - - /// - /// Removes all keys and values from the dictionary. - /// - /// A representing the asynchronous operation. - public virtual async ValueTask ClearAsync() { - if (Count is 0) { - return; - } - _dict.Clear(); - await SerializeDictionaryAsync(); - } - - /// - /// Serializes the contents of the dictionary to a persistent store. - /// - protected abstract Task SerializeAsync(); - - /// - /// Serializes the dictionary to a persistent store, while ensuring thread safety. - /// - /// It is executed automatically after . - public virtual async Task SerializeDictionaryAsync() => await SerializeAsync(); - - /// - /// Disposes of the resources used by the persistent dictionary. - /// - public void Dispose() { - if (_disposed) { - return; - } - _semaphore?.Dispose(); - _disposed = true; - } -} \ No newline at end of file diff --git a/src/Sharpify/Collections/RentedBufferWriter{T}.cs b/src/Sharpify/Collections/RentedBufferWriter{T}.cs deleted file mode 100644 index 818cccf..0000000 --- a/src/Sharpify/Collections/RentedBufferWriter{T}.cs +++ /dev/null @@ -1,191 +0,0 @@ -using System.Buffers; -using System.Runtime.CompilerServices; - -namespace Sharpify.Collections; - -/// -/// A buffer writer that uses an array rented from the shared array pool -/// -/// -/// -/// Essentially an allocation free alternative to -/// -public sealed class RentedBufferWriter : IBufferWriter, IDisposable { - private readonly T[] _buffer; - private volatile bool _disposed; - - /// - /// The current position in the buffer - /// - public int Position { get; private set; } - - /// - /// The actual capacity of the rented buffer - /// - public readonly int ActualCapacity; - - /// - /// If the is disabled, it means that it is not usable, doesn't contain a backing array and all operations will throw an exception - /// - public readonly bool IsDisabled; - - /// - /// Creates a new rented buffer writer with the at least the given capacity - /// - /// - public static RentedBufferWriter Create(int capacity) => new(capacity); - - /// - /// Creates a new rented buffer writer with the at least the given capacity - /// - /// The actual buffer will be at least this size - public RentedBufferWriter(int capacity) { - ArgumentOutOfRangeException.ThrowIfNegative(capacity); - - if (capacity is 0) { - _buffer = Array.Empty(); - IsDisabled = true; - return; - } - _buffer = ArrayPool.Shared.Rent(capacity); - ActualCapacity = _buffer.Length; - } - - /// - public void Advance(int count) { - if (IsDisabled) { - throw new InvalidOperationException("The buffer writer is disabled."); - } - - ArgumentOutOfRangeException.ThrowIfNegative(count); - ArgumentOutOfRangeException.ThrowIfGreaterThan(Position, _buffer.Length - count); - - Position += count; - } - - /// - /// Attempts to write a sequence of elements to the buffer and advances the position - /// - /// - /// true if the operation is successful, false if there is not enough space available - /// if the buffer is disabled - public bool WriteAndAdvance(T item) { - if (IsDisabled) { - throw new InvalidOperationException("The buffer writer is disabled."); - } - - if (FreeCapacity is 0) { - return false; - } - - GetSpan()[0] = item; - Advance(1); - return true; - } - - /// - /// Attempts to write a sequence of elements to the buffer and advances the position - /// - /// - /// true if the operation is successful, false if there is not enough space available - /// if the buffer is disabled - public bool WriteAndAdvance(ReadOnlySpan data) { - if (IsDisabled) { - throw new InvalidOperationException("The buffer writer is disabled."); - } - - if (data.Length > FreeCapacity) { - return false; - } - - data.CopyTo(GetSpan()); - Advance(data.Length); - return true; - } - - /// - /// Returns the underlying buffer - /// - public T[] Buffer => _buffer; - - /// - /// Returns a readonly reference to the underlying buffer - /// - public ref T[] GetReferenceUnsafe() => ref Unsafe.AsRef(in _buffer); - - /// - /// Gets the portion of the free buffer that can be written to, beginning at - /// - /// Not regarded - /// - public Memory GetMemory(int sizeHint = 0) => _buffer.AsMemory(Position); - - /// - /// Gets the portion of the free buffer that can be written to, beginning at - /// - /// Not regarded - /// - public Span GetSpan(int sizeHint = 0) => _buffer.AsSpan(Position); - - /// - /// Gets the portion of the buffer that has been written to, beginning at index 0 - /// - public ArraySegment WrittenSegment => new(_buffer, 0, Position); - - /// - /// Gets the portion of the buffer that has been written to, beginning at index 0 - /// - public ReadOnlyMemory WrittenMemory => _buffer.AsMemory(0, Position); - - /// - /// Gets the portion of the buffer that has been written to, beginning at index 0 - /// - public ReadOnlySpan WrittenSpan => _buffer.AsSpan(0, Position); - - /// - /// Returns the number of elements that can be written to the buffer - /// - public int FreeCapacity => _buffer.Length - Position; - - /// - /// Resets the buffer writer to its initial state by setting to 0 - /// - public void Reset() => Position = 0; - - /// - /// Returns a slice of the buffer - /// - /// - /// - /// - public ReadOnlyMemory GetMemorySlice(int start, int length) { - ArgumentOutOfRangeException.ThrowIfGreaterThan(start + length, _buffer.Length); - - return _buffer.AsMemory(start, length); - } - - /// - /// Returns a slice of the buffer - /// - /// - /// - /// - public ReadOnlySpan GetSpanSlice(int start, int length) { - ArgumentOutOfRangeException.ThrowIfGreaterThan(start + length, _buffer.Length); - - return _buffer.AsSpan(start, length); - } - - /// - /// Returns the rented buffer to the shared array pool - /// - public void Dispose() { - if (_disposed) { - return; - } - if (!IsDisabled) { - ArrayPool.Shared.Return(_buffer); - } - _disposed = true; - } -} \ No newline at end of file diff --git a/tests/Sharpify.Tests/Collections/LazyLocalPersistentDictionaryTests.cs b/tests/Sharpify.Tests/Collections/LazyLocalPersistentDictionaryTests.cs deleted file mode 100644 index 172dc1c..0000000 --- a/tests/Sharpify.Tests/Collections/LazyLocalPersistentDictionaryTests.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System.Text.Json; - -using Sharpify.Collections; - -namespace Sharpify.Tests.Collections; - -public class LazyLocalPersistentDictionaryTests { - [Fact] - public void LazyLocalPersistentDictionary_ReadKey_Null_WhenDoesNotExist() { - // Arrange - var path = Utils.Env.PathInBaseDirectory("lpdict.json"); - if (File.Exists(path)) { - File.Delete(path); - } - var dict = new LazyLocalPersistentDictionary(path); - - // Act - var result = dict["test"]; - - // Assert - Assert.Null(result); - } - - [Fact] - public async Task LazyLocalPersistentDictionary_ReadKey_Valid_WhenExists() { - // Arrange - var path = Utils.Env.PathInBaseDirectory("lpdict.json"); - if (File.Exists(path)) { - File.Delete(path); - } - var dict = new LazyLocalPersistentDictionary(path); - - var testJson = new { - Name = "test", - Age = 21 - }; - - // Act - await dict.UpsertAsync("one", JsonSerializer.Serialize(testJson)); - await dict.UpsertAsync("two", "2"); - - // Assert - Assert.Equal("2", dict["two"]); - } -} \ No newline at end of file diff --git a/tests/Sharpify.Tests/Collections/LocalPersistentDictionaryTests.cs b/tests/Sharpify.Tests/Collections/LocalPersistentDictionaryTests.cs deleted file mode 100644 index bd8e327..0000000 --- a/tests/Sharpify.Tests/Collections/LocalPersistentDictionaryTests.cs +++ /dev/null @@ -1,138 +0,0 @@ -using Sharpify.Collections; - -namespace Sharpify.Tests.Collections; - -public class LocalPersistentDictionaryTests { - private readonly ITestOutputHelper _testOutputHelper; - - public LocalPersistentDictionaryTests(ITestOutputHelper testOutputHelper) { - _testOutputHelper = testOutputHelper; - } - - [Fact] - public void LocalPersistentDictionary_ReadKey_Null_WhenDoesNotExist() { - // Arrange - var path = Utils.Env.PathInBaseDirectory("pdict.json"); - if (File.Exists(path)) { - File.Delete(path); - } - var dict = new TestLocalPersistentDictionary(path); - - // Act - var result = dict["test"]; - - // Assert - Assert.Null(result); - } - - [Fact] - public async Task LocalPersistentDictionary_ReadKey_Valid_WhenExists() { - // Arrange - var path = Utils.Env.PathInBaseDirectory("pdict.json"); - if (File.Exists(path)) { - File.Delete(path); - } - var dict = new TestLocalPersistentDictionary(path); - - // Act - await dict.UpsertAsync("one", "1"); - - // Assert - Assert.Equal("1", dict["one"]); - } - - [Fact] - public async Task LocalPersistentDictionary_GetOrCreate() { - // Arrange - var path = Utils.Env.PathInBaseDirectory("pdict.json"); - if (File.Exists(path)) { - File.Delete(path); - } - var dict = new TestLocalPersistentDictionary(path); - - // Act - var result = await dict.GetOrCreateAsync("one", "1"); - var check = dict["one"] is "1"; - - // Assert - Assert.Equal("1", result); - Assert.True(check); - } - - [Fact] - public async Task LocalPersistentDictionary_Upsert_Concurrent() { - // Arrange - var filename = Random.Shared.Next(999, 10000).ToString(); - var path = Utils.Env.PathInBaseDirectory($"{filename}.json"); - if (File.Exists(path)) { - File.Delete(path); - } - var dict = new TestLocalPersistentDictionary(path); - - // Act - Task[] upsertTasks = [ - Task.Run(async () => await dict.UpsertAsync("one", "1"), TestContext.Current.CancellationToken), - Task.Run(async () => await dict.UpsertAsync("two", "2"), TestContext.Current.CancellationToken), - Task.Run(async () => await dict.UpsertAsync("three", "3"), TestContext.Current.CancellationToken), - Task.Run(async () => await dict.UpsertAsync("four", "4"), TestContext.Current.CancellationToken), - Task.Run(async () => await dict.UpsertAsync("five", "5"), TestContext.Current.CancellationToken), - ]; - await Task.WhenAll(upsertTasks); - - // Assert - // dict.SerializedCount.Should().BeLessThanOrEqualTo(upsertTasks.Length); - _testOutputHelper.WriteLine($"PersistentDictionary serialized count: {dict.SerializedCount}"); - // This is checking that the dictionary was serialized less than the number of upserts. - // Ideally with perfectly concurrent updates, the dictionary would only be serialized once. - // The reason not to check for 1 is that the tasks may not be executed perfectly in parallel. - var sdict = new LocalPersistentDictionary(path); - Assert.Equal(upsertTasks.Length, sdict.Count); - File.Delete(path); - } - - [Fact] - public async Task LocalPersistentDictionary_Upsert_Sequential_NoItemsMissing() { - // Arrange - var filename = Random.Shared.Next(999, 10000).ToString(); - var path = Utils.Env.PathInBaseDirectory($"{filename}.json"); - if (File.Exists(path)) { - File.Delete(path); - } - var dict = new TestLocalPersistentDictionary(path); - - // Act - await dict.UpsertAsync("one", "1"); - await dict.UpsertAsync("two", "2"); - await dict.UpsertAsync("three", "3"); - await dict.UpsertAsync("four", "4"); - await dict.UpsertAsync("five", "5"); - - // Assert - var sdict = new LocalPersistentDictionary(path); - Assert.Equal(5, sdict.Count); - File.Delete(path); - } - - [Fact] - public async Task LocalPersistentDictionary_GenericGetAndUpsert() { - // Arrange - var filename = Random.Shared.Next(999, 10000).ToString(); - var path = Utils.Env.PathInBaseDirectory($"{filename}.json"); - if (File.Exists(path)) { - File.Delete(path); - } - var dict = new TestLocalPersistentDictionary(path); - - // Act - await dict.UpsertAsync("one", 1); - await dict.UpsertAsync("two", 2); - var sdict = new LocalPersistentDictionary(path); - int one = await sdict.GetOrCreateAsync("one", 0); - int two = await sdict.GetOrCreateAsync("two", 0); - - // Assert - Assert.Equal(1, one); - Assert.Equal(2, two); - File.Delete(path); - } -} \ No newline at end of file diff --git a/tests/Sharpify.Tests/Collections/RentedBufferWriterTests.cs b/tests/Sharpify.Tests/Collections/RentedBufferWriterTests.cs deleted file mode 100644 index 24624d6..0000000 --- a/tests/Sharpify.Tests/Collections/RentedBufferWriterTests.cs +++ /dev/null @@ -1,167 +0,0 @@ -using Sharpify.Collections; - -namespace Sharpify.Tests.Collections; - -public class RentedBufferWriterTests { - [Fact] - public void RentedBufferWriter_InvalidCapacity_Throws() { - // Arrange - Action act = () => { - using var buffer = new RentedBufferWriter(-1); - }; - - // Act & Assert - Assert.Throws(act); - } - - [Fact] - public void RentedBufferWriter_Capacity0IsDisabled() { - // Arrange - using var buffer = new RentedBufferWriter(0); - - // Assert - Assert.True(buffer.IsDisabled); - } - - [Fact] - public void RentedBufferWriter_WriteToSpan() { - // Arrange - using var buffer = new RentedBufferWriter(20); - - // Act - var span = buffer.GetSpan(); - "Hello".AsSpan().CopyTo(span); - buffer.Advance(5); - - // Assert - Assert.Equal("Hello", buffer.WrittenSpan); - } - - [Fact] - public void RentedBufferWriter_WriteAndAdvance() { - // Arrange - using var buffer = new RentedBufferWriter(20); - - // Act - buffer.WriteAndAdvance("Hello"); - - // Assert - Assert.Equal("Hello", buffer.WrittenSpan); - } - - [Fact] - public void RentedBufferWriter_UseRefToWriteValue() { - // Arrange - using var buffer = new RentedBufferWriter(20); - - // Act - ref var arr = ref buffer.GetReferenceUnsafe(); - var length = WriteOnes(ref arr, 5); - buffer.Advance(length); - - // Assert - Assert.Equal([1, 1, 1, 1, 1], buffer.WrittenSpan); - - static int WriteOnes(ref int[] buffer, int length) { - for (var i = 0; i < length; i++) { - buffer[i] = 1; - } - - return length; - } - } - - [Fact] - public void RentedBufferWriter_GetSpanSlice() { - // Arrange - using var buffer = new RentedBufferWriter(20); - - // Act - var span = buffer.GetSpan(); - "Hello".AsSpan().CopyTo(span); - buffer.Advance(5); - - // Assert - Assert.Equal("Hel", buffer.GetSpanSlice(0, 3)); - } - - [Fact] - public void RentedBufferWriter_WriteToMemory() { - // Arrange - using var buffer = new RentedBufferWriter(20); - - // Act - var mem = buffer.GetMemory(); - "Hello".AsSpan().CopyTo(mem.Span); - buffer.Advance(5); - - // Assert - Assert.Equal("Hello".ToCharArray(), buffer.WrittenSegment); - } - - [Fact] - public void RentedBufferWriter_GetMemorySlice() { - // Arrange - using var buffer = new RentedBufferWriter(20); - - // Act - var mem = buffer.GetMemory(); - "Hello".AsSpan().CopyTo(mem.Span); - buffer.Advance(5); - - // Assert - Assert.Equal("Hello", buffer.GetMemorySlice(0, 5).Span); - } - - [Fact] - public void RentedBufferWriter_WrittenSegment() { - // Arrange - using var buffer = new RentedBufferWriter(20); - - // Act - var span = buffer.GetSpan(); - "Hello".AsSpan().CopyTo(span); - buffer.Advance(5); - - // Assert - Assert.Equal("Hello".ToCharArray(), buffer.WrittenSegment); - } - - [Fact] - public void RentedBufferWriter_Reset() { - // Arrange - using var buffer = new RentedBufferWriter(20); - - // Act - var span = buffer.GetSpan(); - "Hello".AsSpan().CopyTo(span); - buffer.Advance(5); - buffer.Reset(); - - // Assert - Assert.Equal(ReadOnlySpan.Empty, buffer.WrittenSpan); - } - - [Fact] - public void RentedBufferWriter_ActualCapacity() { - // Arrange - using var buffer = new RentedBufferWriter(20); - - // Assert - Assert.True(buffer.ActualCapacity >= 20); - } - - [Fact] - public void RentedBufferWriter_FreeCapacity() { - // Arrange - using var buffer = new RentedBufferWriter(20); - - // Act - var span = buffer.GetSpan(); - "Hello".AsSpan().CopyTo(span); - buffer.Advance(5); - - // Assert - Assert.True(buffer.FreeCapacity >= 15); - } -} \ No newline at end of file From 0bdd915e1d883d4ee95ee7dd6389a3d76315d86e Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 12:09:32 +0200 Subject: [PATCH 09/26] Added pooled array owner to replace RentedBufferWriter --- src/Sharpify/Collections/PooledArrayOwner.cs | 69 ++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/Sharpify/Collections/PooledArrayOwner.cs diff --git a/src/Sharpify/Collections/PooledArrayOwner.cs b/src/Sharpify/Collections/PooledArrayOwner.cs new file mode 100644 index 0000000..a24c63d --- /dev/null +++ b/src/Sharpify/Collections/PooledArrayOwner.cs @@ -0,0 +1,69 @@ +using System.Buffers; + +namespace Sharpify.Collections; + +/// +/// A struct that allows renting an array from and manage its return using the interface. +/// +/// +public partial struct PooledArrayOwner : IDisposable { + private readonly ArrayPool _pool; + private bool _disposed; + + /// + /// The rented array held by this object. + /// + public readonly T[] Value; + + private PooledArrayOwner(int minimumLength) { + _pool = ArrayPool.Shared; + Value = _pool.Rent(minimumLength); + } + + /// + /// Returns the rented array back to . + /// + public void Dispose() { + if (_disposed) return; + _pool.Return(Value); + _disposed = true; + } +} + +public partial struct PooledArrayOwner : IDisposable { + /// + /// Rent an array with from , returning a struct that will return it after being disposed, and also the held array reference. + /// + /// + /// + /// + public static PooledArrayOwner Rent(int minimumLength, out T[] array) { + PooledArrayOwner owner = new(minimumLength); + array = owner.Value; + return owner; + } + + /// + /// Rent an array with from , returning a struct that will return it after being disposed, and also a over the held array reference. + /// + /// + /// + /// + public static PooledArrayOwner Rent(int minimumLength, out Span span) { + PooledArrayOwner owner = new(minimumLength); + span = owner.Value.AsSpan(); + return owner; + } + + /// + /// Rent an array with from , returning a struct that will return it after being disposed, and also a over the held array reference. + /// + /// + /// + /// + public static PooledArrayOwner Rent(int minimumLength, out Memory memory) { + PooledArrayOwner owner = new(minimumLength); + memory = owner.Value.AsMemory(); + return owner; + } +} \ No newline at end of file From 6b035ca48c65d5612215d6372547b133bf4e207b Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 12:09:49 +0200 Subject: [PATCH 10/26] Update AesProvider by using PooledArrayOwner --- src/Sharpify/AesProvider.cs | 47 +++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/src/Sharpify/AesProvider.cs b/src/Sharpify/AesProvider.cs index aa388f1..e274795 100644 --- a/src/Sharpify/AesProvider.cs +++ b/src/Sharpify/AesProvider.cs @@ -41,9 +41,9 @@ public AesProvider(string strKey) { // Creates a usable fixed length key from the string password private static byte[] CreateKey(ReadOnlySpan strKey) { - using var buffer = new RentedBufferWriter(strKey.Length * sizeof(char)); - _ = Encoding.UTF8.GetBytes(strKey, buffer); - return SHA256.HashData(buffer.WrittenSpan); + using var owner = PooledArrayOwner.Rent(strKey.Length * sizeof(char), out Span span); + int written = Encoding.UTF8.GetBytes(strKey, span); + return SHA256.HashData(span.Slice(0, written)); } @@ -107,13 +107,13 @@ public static bool IsPasswordValid(string password, string hashedPassword) { /// original text /// Unicode string public string Encrypt(ReadOnlySpan unencrypted) { - using var bytesBuffer = new RentedBufferWriter(unencrypted.Length * sizeof(char)); - _ = Encoding.UTF8.GetBytes(unencrypted, bytesBuffer); // IBufferWriter overload advances automatically - var writtenSpan = bytesBuffer.WrittenSpan; - using var encryptedBuffer = new RentedBufferWriter(writtenSpan.Length + ReservedBufferSize); - int encryptedWritten = EncryptBytes(writtenSpan, encryptedBuffer.GetSpan()); - encryptedBuffer.Advance(encryptedWritten); - return Convert.ToBase64String(encryptedBuffer.WrittenSpan); + using var bytesOwner = PooledArrayOwner.Rent(unencrypted.Length * sizeof(char), out Span bytesBuffer); + int written = Encoding.UTF8.GetBytes(unencrypted, bytesBuffer); + var writtenSpan = bytesBuffer.Slice(0, written); + + using var encryptedOwner = PooledArrayOwner.Rent(writtenSpan.Length + ReservedBufferSize, out Span encryptedBuffer); + written = EncryptBytes(writtenSpan, encryptedBuffer); + return Convert.ToBase64String(encryptedBuffer.Slice(0, written)); } /// @@ -122,10 +122,9 @@ public string Encrypt(ReadOnlySpan unencrypted) { /// Returns an empty string if it fails public string Decrypt(string encrypted) { var buffer = Convert.FromBase64String(encrypted); - using var decryptedBuffer = new RentedBufferWriter(buffer.Length); - int decryptedWritten = DecryptBytes(buffer, decryptedBuffer.GetSpan()); - decryptedBuffer.Advance(decryptedWritten); - ReadOnlySpan decrypted = decryptedBuffer.WrittenSpan; + using var decryptedOwner = PooledArrayOwner.Rent(buffer.Length, out Span span); + int written = DecryptBytes(buffer, span); + ReadOnlySpan decrypted = span.Slice(0, written); return decrypted.Length is 0 ? string.Empty : Encoding.UTF8.GetString(decrypted); @@ -211,13 +210,12 @@ public int DecryptBytes(ReadOnlySpan encrypted, Span destination, bo /// original url /// Encrypted url with Base64Url encoding public string EncryptUrl(string url) { - using var buffer = new RentedBufferWriter(url.Length * sizeof(char)); - _ = Encoding.UTF8.GetBytes(url, buffer); // IBufferWriter overload advances automatically - ReadOnlySpan bytesSpan = buffer.WrittenSpan; - using var encryptedBuffer = new RentedBufferWriter(bytesSpan.Length + ReservedBufferSize); - int encryptedWritten = EncryptBytes(bytesSpan, encryptedBuffer.GetSpan()); - encryptedBuffer.Advance(encryptedWritten); - return Base64UrlEncode(encryptedBuffer.WrittenSpan); + using var bufferOwner = PooledArrayOwner.Rent(url.Length * sizeof(char), out Span buffer); + int written = Encoding.UTF8.GetBytes(url, buffer); // IBufferWriter overload advances automatically + ReadOnlySpan bytesSpan = buffer.Slice(0, written); + using var encryptedOwner = PooledArrayOwner.Rent(bytesSpan.Length + ReservedBufferSize, out Span encrypted); + written = EncryptBytes(bytesSpan, encrypted); + return Base64UrlEncode(encrypted.Slice(0, written)); } /// @@ -228,10 +226,9 @@ public string EncryptUrl(string url) { /// Returns an empty string if it fails public string DecryptUrl(string encryptedUrl) { var base64 = Base64UrlDecode(encryptedUrl); - using var decryptedBuffer = new RentedBufferWriter(base64.Length); - int decryptedWritten = DecryptBytes(base64, decryptedBuffer.GetSpan()); - decryptedBuffer.Advance(decryptedWritten); - ReadOnlySpan decrypted = decryptedBuffer.WrittenSpan; + using var decryptedOwner = PooledArrayOwner.Rent(base64.Length, out Span buffer); + int written = DecryptBytes(base64, buffer); + ReadOnlySpan decrypted = buffer.Slice(0, written); return decrypted.Length is 0 ? string.Empty : Encoding.UTF8.GetString(decrypted); From 79e050e36d378ab3af67fafd1ac83bbde888a8e2 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 12:13:12 +0200 Subject: [PATCH 11/26] Ignore collection expression suggestions --- .editorconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/.editorconfig b/.editorconfig index 30024f0..5f33bb7 100644 --- a/.editorconfig +++ b/.editorconfig @@ -85,6 +85,7 @@ dotnet_diagnostic.IDE0301.severity = none # simplify collection initialization dotnet_diagnostic.IDE0053.severity = none # expression body lambda dotnet_diagnostic.IDE0046.severity = none # simplify if(s) - conditional operator dotnet_diagnostic.IDE0305.severity = none # [, ...] instead of .ToArray() +dotnet_diagnostic.IDE0306.severity = none # Use collection expressions # namespace declaration From 78d6010f12e13b69fe7d36e57c4ecf03799e3891 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 12:13:30 +0200 Subject: [PATCH 12/26] Remove unused + add jit directives --- src/Sharpify/CollectionExtensions.cs | 50 ++-------------------------- 1 file changed, 3 insertions(+), 47 deletions(-) diff --git a/src/Sharpify/CollectionExtensions.cs b/src/Sharpify/CollectionExtensions.cs index 9c056b7..5cdff88 100644 --- a/src/Sharpify/CollectionExtensions.cs +++ b/src/Sharpify/CollectionExtensions.cs @@ -7,17 +7,10 @@ namespace Sharpify; public static partial class Extensions { - /// - /// Determines whether the specified collection is null or empty. - /// - /// The type of elements in the collection. - /// The collection to check. - /// true if the collection is null or empty; otherwise, false. - public static bool IsNullOrEmpty(this ICollection? collection) => collection is null or { Count: 0 }; - /// /// Returns the span of a list /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Span AsSpan(this List list) => CollectionsMarshal.AsSpan(list); /// @@ -29,6 +22,7 @@ public static partial class Extensions { /// Items should not be added or removed from the while the ref is in use. /// The ref null can be detected using Unsafe.IsNullRef{T}(ref readonly T)" /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static ref TValue GetValueRefOrNullRef( this Dictionary dictionary, TKey key) where TKey : notnull { @@ -44,6 +38,7 @@ public static ref TValue GetValueRefOrNullRef( /// /// Items should not be added to or removed from the while the ref is in use. /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static ref TValue? GetValueRefOrAddDefault( this Dictionary dictionary, TKey key, @@ -68,45 +63,6 @@ public static void CopyTo(this Dictionary dict, KeyV collection.CopyTo(arr, index); } - /// - /// Rents a buffer and copies the contents of the dictionary into it. - /// - /// The type of the dictionary keys. - /// The type of the dictionary values. - /// The dictionary to rent the buffer for. - /// A tuple containing the rented buffer as an array and an array segment representing the copied items. - /// - /// The array segment is required since the ArrayPool can return a buffer larger than the length of the dictionary, for any operations use the array segment - /// The array is returned as the reference for the buffer, and should be used to return the buffer to the array pool after use. You can use - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static (KeyValuePair[] rentedBuffer, ArraySegment> entries) RentBufferAndCopyEntries(this Dictionary dict) where TKey : notnull { - var count = dict.Count; - var arr = ArrayPool>.Shared.Rent(count); - dict.CopyTo(arr, 0); - var segment = new ArraySegment>(arr, 0, count); - return (arr, segment); - } - - /// - /// Returns a rented buffer to the shared . - /// - /// The type of elements in the array. - /// The array to return. - /// If used on a buffer that wasn't part of the shared array pool - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void ReturnBufferToSharedArrayPool(this T[] arr) => ArrayPool.Shared.Return(arr); - - /// - /// Returns a rented buffer to the . - /// - /// The type of elements in the array. - /// The array to return. - /// The array pool to return the buffer to. - /// If used on a buffer that wasn't part of the array pool - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void ReturnBufferToArrayPool(this T[] arr, ArrayPool pool) => pool.Return(arr); - /// /// Returns a new array with the elements sorted using the default comparer for the element type. /// From e1655dbc4bfca98f84109d723f4e511f9d8157b3 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 12:31:23 +0200 Subject: [PATCH 13/26] Remove unused --- src/Sharpify/InternalHelper.cs | 15 ----- src/Sharpify/ThreadSafe.cs | 88 ---------------------------- src/Sharpify/UnmanangedExtensions.cs | 15 ----- 3 files changed, 118 deletions(-) delete mode 100644 src/Sharpify/InternalHelper.cs delete mode 100644 src/Sharpify/ThreadSafe.cs delete mode 100644 src/Sharpify/UnmanangedExtensions.cs diff --git a/src/Sharpify/InternalHelper.cs b/src/Sharpify/InternalHelper.cs deleted file mode 100644 index 873cac4..0000000 --- a/src/Sharpify/InternalHelper.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace Sharpify; - -internal static class InternalHelper { - internal static readonly JsonReaderOptions JsonReaderOptions = new() { - AllowTrailingCommas = true, - CommentHandling = JsonCommentHandling.Skip - }; -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(Dictionary))] -internal partial class JsonContext : JsonSerializerContext { } \ No newline at end of file diff --git a/src/Sharpify/ThreadSafe.cs b/src/Sharpify/ThreadSafe.cs deleted file mode 100644 index d8d3bf3..0000000 --- a/src/Sharpify/ThreadSafe.cs +++ /dev/null @@ -1,88 +0,0 @@ -namespace Sharpify; - -/// -/// A wrapper around a value that makes it thread safe. -/// -public sealed class ThreadSafe : IEquatable, IEquatable> { - //TODO: Switch to NET9 new Lock type -#if NET9_0_OR_GREATER - private readonly Lock _lock = new(); -#elif NET8_0 - private readonly object _lock = new(); -#endif - private T _value; - - /// - /// Creates a new instance of ThreadSafe with an initial value. - /// - public ThreadSafe(T value) { - _value = value; - } - - /// - /// Creates a new instance of ThreadSafe with the default value of T. - /// - public ThreadSafe() : this(default!) { } - - /// - /// A public getter and setter for the value. - /// - /// - /// The inner operation are thread-safe, use this to change or access the value. - /// - public T Value { - get { - lock (_lock) { - return _value; - } - } - } - - /// - /// Provides a thread-safe way to modify the value. - /// - /// The value after the modification - public T Modify(Func modificationFunc) { - lock (_lock) { - _value = modificationFunc(_value); - return _value; - } - } - - /// - /// Checks if the value is equal to the other value. - /// - /// - /// - public bool Equals(ThreadSafe? other) => other is not null && Equals(other.Value); - - /// - /// Checks if the value is equal to the other value. - /// - /// - /// - public bool Equals(T? other) { - if (other is null) { - return false; - } - lock (_lock) { - return _value is not null && _value.Equals(other); - } - } - - /// - /// Checks if the value is equal to the other value. - /// - /// - /// - public override bool Equals(object? obj) { - return Equals(obj as ThreadSafe); - } - - /// - /// Gets the hash code of the value. - /// - /// - public override int GetHashCode() => Value!.GetHashCode(); - -} \ No newline at end of file diff --git a/src/Sharpify/UnmanangedExtensions.cs b/src/Sharpify/UnmanangedExtensions.cs deleted file mode 100644 index 1e124be..0000000 --- a/src/Sharpify/UnmanangedExtensions.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Runtime.CompilerServices; - -namespace Sharpify; - -public static partial class Extensions { - /// - /// Tries to parse an enum result from a string - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool TryParseAsEnum( - this string value, - out TEnum result) where TEnum : struct, Enum { - return Enum.TryParse(value, out result) && Enum.IsDefined(result); - } -} \ No newline at end of file From 9e4acbdc14cb0c8915c9f561c18bbe7002b04ae9 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 12:31:29 +0200 Subject: [PATCH 14/26] LangVersion preview --- src/Sharpify/Sharpify.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Sharpify/Sharpify.csproj b/src/Sharpify/Sharpify.csproj index 8ebcca8..11ece30 100644 --- a/src/Sharpify/Sharpify.csproj +++ b/src/Sharpify/Sharpify.csproj @@ -2,6 +2,7 @@ net9.0 enable + preview 3.0.0 enable true From 9328d189ab12a0592ee982a75eb8571d3f26c233 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 12:31:38 +0200 Subject: [PATCH 15/26] Added Synchronized --- src/Sharpify/Synchronized{T}.cs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/Sharpify/Synchronized{T}.cs diff --git a/src/Sharpify/Synchronized{T}.cs b/src/Sharpify/Synchronized{T}.cs new file mode 100644 index 0000000..08d7d36 --- /dev/null +++ b/src/Sharpify/Synchronized{T}.cs @@ -0,0 +1,32 @@ +namespace Sharpify; + +/// +/// Provides a wrapper around that allows thread-safe access and update, with an optional callback function whenever the value is updated. +/// +/// +public sealed class Synchronized { + private readonly Action? _onUpdate; + + /// + /// The value held by this reference of , get and set are both thread-safe. + /// + public T Value { + get { + return field; + } + set { + Interlocked.Exchange(ref field, value); + if (_onUpdate is not null) _onUpdate(field); + } + } + + /// + /// Creates a new instance of with an and optional callback. + /// + /// The initial value to used. + /// The action that will be executed when the value is updated. + public Synchronized(T initialValue, Action? onUpdate = null) { + Value = initialValue; + _onUpdate = onUpdate; + } +} \ No newline at end of file From 4d5d1ed1028eb551cc1ab30c80149e14197aaac0 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 12:31:42 +0200 Subject: [PATCH 16/26] formatting --- src/Sharpify/UnsafeSpanAccessor.cs | 53 ++++++++++-------------------- 1 file changed, 18 insertions(+), 35 deletions(-) diff --git a/src/Sharpify/UnsafeSpanAccessor.cs b/src/Sharpify/UnsafeSpanAccessor.cs index a1d8969..2153a78 100644 --- a/src/Sharpify/UnsafeSpanAccessor.cs +++ b/src/Sharpify/UnsafeSpanAccessor.cs @@ -11,8 +11,7 @@ namespace Sharpify; /// /// Only use it where you can guarantee the scope of the span, it is named "Unsafe" for a reason. /// -public unsafe readonly struct UnsafeSpanIterator : IEnumerable -{ +public unsafe readonly struct UnsafeSpanIterator : IEnumerable { private readonly void* _pointer; /// @@ -24,14 +23,12 @@ namespace Sharpify; /// Creates a new instance of over the specified span. /// /// - public UnsafeSpanIterator(ReadOnlySpan span) - { + public UnsafeSpanIterator(ReadOnlySpan span) { _pointer = Unsafe.AsPointer(ref MemoryMarshal.GetReference(span)); Length = span.Length; } - private UnsafeSpanIterator(void* start, int length) - { + private UnsafeSpanIterator(void* start, int length) { _pointer = start; Length = length; } @@ -42,8 +39,7 @@ private UnsafeSpanIterator(void* start, int length) /// /// /// - public UnsafeSpanIterator Slice(int start, int length) - { + public UnsafeSpanIterator Slice(int start, int length) { ArgumentOutOfRangeException.ThrowIfGreaterThan(start + length, Length); return new UnsafeSpanIterator(Unsafe.Add(_pointer, start), length); } @@ -53,10 +49,8 @@ public UnsafeSpanIterator Slice(int start, int length) /// /// /// - public ref readonly T this[int index] - { - get - { + public ref readonly T this[int index] { + get { ArgumentOutOfRangeException.ThrowIfGreaterThan(index, Length); void* item = Unsafe.Add(_pointer, index); return ref Unsafe.AsRef(item); @@ -67,10 +61,8 @@ public ref readonly T this[int index] /// Generates an IEnumerable of the elements in the span /// /// - public IEnumerable ToEnumerable() - { - for (var i = 0; i < Length; i++) - { + public IEnumerable ToEnumerable() { + for (var i = 0; i < Length; i++) { yield return this[i]; } } @@ -83,27 +75,23 @@ public IEnumerable ToEnumerable() IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); - internal struct UnsafeSpanIteratorEnumerator : IEnumerator - { + internal struct UnsafeSpanIteratorEnumerator : IEnumerator { private readonly UnsafeSpanIterator _source; private int _index; private T? _current; - internal UnsafeSpanIteratorEnumerator(UnsafeSpanIterator source) - { + internal UnsafeSpanIteratorEnumerator(UnsafeSpanIterator source) { _source = source; _index = 0; _current = default; } - public void Dispose() {} + public void Dispose() { } - public bool MoveNext() - { + public bool MoveNext() { UnsafeSpanIterator local = _source; - if ((uint)_index < (uint)local.Length) - { + if ((uint)_index < (uint)local.Length) { _current = local[_index]; _index++; return true; @@ -111,8 +99,7 @@ public bool MoveNext() return MoveNextRare(); } - private bool MoveNextRare() - { + private bool MoveNextRare() { _index = _source.Length + 1; _current = default; return false; @@ -120,20 +107,16 @@ private bool MoveNextRare() public readonly T Current => _current!; - readonly object? IEnumerator.Current - { - get - { - if ((uint)_index >= _source.Length + 1) - { + readonly object? IEnumerator.Current { + get { + if ((uint)_index >= _source.Length + 1) { throw new InvalidOperationException("The enumerator has not been started or has already finished."); } return Current; } } - void IEnumerator.Reset() - { + void IEnumerator.Reset() { _index = 0; _current = default; } From 4ae707c967235c1e87ee4f9ca9c5a3b75636df7b Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 13:12:21 +0200 Subject: [PATCH 17/26] Improvement and old code removal --- src/Sharpify/UtilsDateAndTime.cs | 162 ++++++------------------------- src/Sharpify/UtilsEnv.cs | 97 +++++------------- src/Sharpify/UtilsMathematics.cs | 91 ++++++++--------- src/Sharpify/UtilsStrings.cs | 96 +++++++----------- src/Sharpify/UtilsUnsafe.cs | 80 +++++++-------- 5 files changed, 169 insertions(+), 357 deletions(-) diff --git a/src/Sharpify/UtilsDateAndTime.cs b/src/Sharpify/UtilsDateAndTime.cs index 7925d01..cecada9 100644 --- a/src/Sharpify/UtilsDateAndTime.cs +++ b/src/Sharpify/UtilsDateAndTime.cs @@ -1,145 +1,41 @@ -using System.Buffers; using System.Globalization; -using Sharpify.Collections; - namespace Sharpify; public static partial class Utils { /// - /// Provides utility methods for - /// - public static class DateAndTime { - /// - /// Returns a of the current time - /// - /// - /// This is useful for firing off this task and awaiting it later, because actually takes quite a bit of time - /// - public static ValueTask GetCurrentTimeAsync() => ValueTask.FromResult(DateTime.Now); - - /// - /// Returns a of the current time in binary - /// - /// - /// This is useful for firing off this task and awaiting it later, because actually takes quite a bit of time - /// - public static ValueTask GetCurrentTimeInBinaryAsync() => ValueTask.FromResult(DateTime.Now.ToBinary()); - - private const int TimeSpanRequiredBufferLength = 30; + /// A format for timestamps + /// + public const string TimeStampFormat = "HHMM-dd-MMM-yy"; - /// - /// Formats a to a pretty string, with 2 sections, e.g., "12:34hr" or "05:12d" or "500ms" etc... - /// - /// The TimeSpan to format - /// The Buffer to use - /// - /// Ensure capacity >= 30 - /// - /// part of the written buffer - public static ReadOnlySpan FormatTimeSpan(TimeSpan timeSpan, Span buffer) { - var sb = StringBuffer.Create(buffer); - switch (timeSpan.TotalSeconds) { - case < 1: // Milliseconds: e.g., "500ms" - sb.Append(timeSpan.Milliseconds); - sb.Append("ms"); - break; - case < 60: - // Seconds:Milliseconds: e.g., "03:05s" - if (timeSpan.Seconds < 10) { - sb.Append('0'); - } - sb.Append(timeSpan.Seconds); - sb.Append(':'); - if (timeSpan.Milliseconds < 100) { - sb.Append('0'); - if (timeSpan.Milliseconds < 10) { - sb.Append('0'); - } - } - sb.Append(timeSpan.Milliseconds); - sb.Append("s"); - break; - case < 3600: - // Minutes:Seconds: e.g., "01:30m" - if (timeSpan.Minutes < 10) { - sb.Append('0'); - } - sb.Append(timeSpan.Minutes); - sb.Append(':'); - if (timeSpan.Seconds < 10) { - sb.Append('0'); - } - sb.Append(timeSpan.Seconds); - sb.Append("m"); - break; - case < 86400: - // Hours:Minutes e.g., "12:34hr" - if (timeSpan.Hours < 10) { - sb.Append('0'); - } - sb.Append(timeSpan.Hours); - sb.Append(':'); - if (timeSpan.Minutes < 10) { - sb.Append('0'); - } - sb.Append(timeSpan.Minutes); - sb.Append("hr"); - break; - default: - // Days:Hours e.g., "05:12d" - if (timeSpan.Days < 10) { - sb.Append('0'); - } - sb.Append(timeSpan.Days); - sb.Append(':'); - if (timeSpan.Hours < 10) { - sb.Append('0'); - } - sb.Append(timeSpan.Hours); - sb.Append("d"); - break; - } - - return sb.WrittenSpan; - } - - /// - /// Formats a to a pretty string, with 2 sections, e.g., "12:34hr" or "05:12d" or "500ms" etc... - /// - /// The TimeSpan to format - /// a string representing the TimeSpan - public static string FormatTimeSpan(TimeSpan timeSpan) { - using var owner = MemoryPool.Shared.Rent(TimeSpanRequiredBufferLength); - return new string(FormatTimeSpan(timeSpan, owner.Memory.Span)); + /// + /// Returns a slice over formatted as + /// + /// + /// Ensure capacity >= 30 + /// + public static ReadOnlySpan FormatTimeStamp(DateTime time, Span buffer) { + if (!time.TryFormat(buffer, out int written, TimeStampFormat, CultureInfo.CurrentCulture)) { + return ReadOnlySpan.Empty; } + return buffer.Slice(0, written); + } - /// - /// Returns a Time Stamp (HHMM-dd-mmm-yy) formatted into an existing buffer - /// - /// - /// - /// Ensure capacity >= 30 - /// - public static ReadOnlySpan FormatTimeStamp(DateTime time, Span buffer) { - return StringBuffer.Create(buffer) - .Append(time.Hour) - .Append(time.Minute) - .Append('-') - .Append(time.Day) - .Append('-') - .Append(CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(time.Month)) - .Append('-') - .Append(time.Year % 100) - .WrittenSpan; - } + /// + /// Returns formatted as + /// + public static string FormatTimeStamp(DateTime time) => time.ToString(TimeStampFormat); - /// - /// Returns a Time Stamp -> HHMM-dd-mmm-yy - /// - public static string FormatTimeStamp(DateTime time) { - using var owner = MemoryPool.Shared.Rent(TimeSpanRequiredBufferLength); - return new string(FormatTimeStamp(time, owner.Memory.Span)); - } + /// + /// Returns a of the remaining time based on and . + /// + /// Must be between 0 and 1 (inclusive) + /// The time elapsed so far + /// + public static TimeSpan GetRemainingTime(double currentPercentage, TimeSpan elapsed) { + if (currentPercentage >= 1) return TimeSpan.Zero; + if (currentPercentage <= 0) return TimeSpan.MaxValue; + var rem = (1 - currentPercentage) / currentPercentage; + return rem * elapsed; } } \ No newline at end of file diff --git a/src/Sharpify/UtilsEnv.cs b/src/Sharpify/UtilsEnv.cs index e929121..c84ba1c 100644 --- a/src/Sharpify/UtilsEnv.cs +++ b/src/Sharpify/UtilsEnv.cs @@ -1,86 +1,37 @@ using System.Diagnostics; using System.Runtime.InteropServices; using System.Runtime.Versioning; -using System.Security.Principal; namespace Sharpify; public static partial class Utils { /// - /// Provides utility methods for + /// Opens the specified URL in the default web browser based on the operating system. /// - public static class Env { - /// - /// Checks if the application is running on Windows. - /// - public static bool IsRunningOnWindows() => RuntimeInformation.IsOSPlatform(OSPlatform.Windows); - - /// - /// Checks if the application is running with administrator privileges. - /// - /// - /// On platforms other than Windows, it returns automatically. - /// - public static bool IsRunningAsAdmin() { - if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { - return false; - } - - using var identity = WindowsIdentity.GetCurrent(); - var principal = new WindowsPrincipal(identity); - return principal.IsInRole(WindowsBuiltInRole.Administrator); + /// The URL to open. + /// + /// Currently only Windows, Linux and Mac are supported. + /// + [SupportedOSPlatform("Windows")] + [SupportedOSPlatform("Linux")] + [SupportedOSPlatform("MacOS")] + public static void OpenLink(string url) { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { + var processInfo = new ProcessStartInfo { + FileName = url, + UseShellExecute = true + }; + using var process = Process.Start(processInfo); + return; } - - /// - /// Returns the base directory of the application. - /// - /// - /// This is tested and works on Windows - /// This is not tested on Linux and Mac but should work - /// Do not use in .NET Maui, it has a special api for this. - /// - public static string GetBaseDirectory() => AppDomain.CurrentDomain.BaseDirectory; - - /// - /// Combines the base directory path with the specified filename. - /// - /// The name of the file. - /// The combined path. - public static string PathInBaseDirectory(ReadOnlySpan filename) => Path.Join(GetBaseDirectory(), filename); - - /// - /// Checks whether Internet connection is available - /// - public static bool IsInternetAvailable => System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable(); - - /// - /// Opens the specified URL in the default web browser based on the operating system. - /// - /// The URL to open. - /// - /// Currently only Windows, Linux and Mac are supported. - /// - [SupportedOSPlatform("Windows")] - [SupportedOSPlatform("Linux")] - [SupportedOSPlatform("MacOS")] - public static void OpenLink(string url) { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { - var processInfo = new ProcessStartInfo { - FileName = url, - UseShellExecute = true - }; - using var process = Process.Start(processInfo); - return; - } - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { - using var process = Process.Start("x-www-browser", url); - return; - } - if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { - using var process = Process.Start("open", url); - return; - } - throw new PlatformNotSupportedException(); + if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { + using var process = Process.Start("x-www-browser", url); + return; + } + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { + using var process = Process.Start("open", url); + return; } + throw new PlatformNotSupportedException(); } } \ No newline at end of file diff --git a/src/Sharpify/UtilsMathematics.cs b/src/Sharpify/UtilsMathematics.cs index c09e191..ea62fc9 100644 --- a/src/Sharpify/UtilsMathematics.cs +++ b/src/Sharpify/UtilsMathematics.cs @@ -2,58 +2,53 @@ namespace Sharpify; public static partial class Utils { /// - /// Provides utility methods for + /// Returns a rolling average /// - public static class Mathematics { - /// - /// Returns a rolling average - /// - /// The previous average value - /// The new statistic - /// The number of total samples, previous + 1 - /// - /// If the is less or equal to 0, the is returned. - /// A message will be displayed during debug if that happens. - /// An exception will not be thrown at runtime to increase performance. - /// - public static double RollingAverage(double oldAverage, double newNumber, int sampleCount) { - ArgumentOutOfRangeException.ThrowIfLessThanOrEqual(sampleCount, 0); - if (sampleCount is 1) { - return newNumber; - } - double denominator = 1d / sampleCount; - return ((oldAverage * (sampleCount - 1)) + newNumber) * denominator; + /// The previous average value + /// The new statistic + /// The number of total samples, previous + 1 + /// + /// If the is less or equal to 0, the is returned. + /// A message will be displayed during debug if that happens. + /// An exception will not be thrown at runtime to increase performance. + /// + public static double RollingAverage(double oldAverage, double newNumber, int sampleCount) { + ArgumentOutOfRangeException.ThrowIfLessThanOrEqual(sampleCount, 0); + if (sampleCount is 1) { + return newNumber; } + double denominator = 1d / sampleCount; + return ((oldAverage * (sampleCount - 1)) + newNumber) * denominator; + } - /// - /// Returns the factorial result of - /// - /// - /// - /// If the is less or equal to 0, is returned. - /// A message will be displayed during debug if that happens. - /// An exception will not be thrown at runtime to increase performance. - /// - public static double Factorial(double n) { - ArgumentOutOfRangeException.ThrowIfLessThanOrEqual(n, 0); - if (n is <= 2) { - return n; - } - var num = 1d; - for (; n > 1; n--) { - num *= n; - } - return num; + /// + /// Returns the factorial result of + /// + /// + /// + /// If the is less or equal to 0, is returned. + /// A message will be displayed during debug if that happens. + /// An exception will not be thrown at runtime to increase performance. + /// + public static double Factorial(double n) { + ArgumentOutOfRangeException.ThrowIfLessThanOrEqual(n, 0); + if (n is <= 2) { + return n; } - - /// - /// Returns an estimate of the -th number in the Fibonacci sequence - /// - public static double FibonacciApproximation(int n) { - var sqrt5 = Math.Sqrt(5); - var numerator = Math.Pow(1 + sqrt5, n) - Math.Pow(1 - sqrt5, n); - var denominator = Math.ScaleB(sqrt5, n); - return numerator / denominator; + var num = 1d; + for (; n > 1; n--) { + num *= n; } + return num; + } + + /// + /// Returns an estimate of the -th number in the Fibonacci sequence + /// + public static double FibonacciApproximation(int n) { + var sqrt5 = Math.Sqrt(5); + var numerator = Math.Pow(1 + sqrt5, n) - Math.Pow(1 - sqrt5, n); + var denominator = Math.ScaleB(sqrt5, n); + return numerator / denominator; } } \ No newline at end of file diff --git a/src/Sharpify/UtilsStrings.cs b/src/Sharpify/UtilsStrings.cs index a55b45d..ca5ba66 100644 --- a/src/Sharpify/UtilsStrings.cs +++ b/src/Sharpify/UtilsStrings.cs @@ -1,70 +1,46 @@ -using System.Buffers; - -using Sharpify.Collections; +using System.Numerics; namespace Sharpify; public static partial class Utils { + private static readonly string[] FileSizeSuffix = ["B", "KB", "MB", "GB", "TB", "PB"]; + + private static string GetSuffix(double bytes) { + const double formatBytesKb = 1024d; + const double formatBytesDivisor = 1 / formatBytesKb; + var suffix = 0; + while (suffix < FileSizeSuffix.Length - 1 && bytes >= formatBytesKb) { + bytes *= formatBytesDivisor; + suffix++; + } + return FileSizeSuffix[suffix]; + } + /// - /// Provides utility methods for + /// Returns formatted in a human readable way. /// - public static class Strings { - private static ReadOnlySpan FileSizeSuffix => new string[] { "B", "KB", "MB", "GB", "TB", "PB" }; - - /// - /// The required length of the buffer to format bytes - /// - /// - /// This is required to handle , usual cases are much smaller, and this internal uses are pooled. - /// - public const int FormatBytesRequiredLength = 512; - private const double FormatBytesKb = 1024d; - private const double FormatBytesDivisor = 1 / FormatBytesKb; - - /// - /// Formats bytes to friendlier strings, i.e: B,KB,MB,TB,PB... - /// - /// string - public static string FormatBytes(long bytes) - => FormatBytes((double)bytes); - - /// - /// Formats bytes to friendlier strings, i.e: B,KB,MB,TB,PB... - /// - /// string - public static string FormatBytes(double bytes) { - using var owner = MemoryPool.Shared.Rent(FormatBytesRequiredLength); - return new string(FormatBytes(bytes, owner.Memory.Span)); - } + /// + /// + /// + public static string FormatBytes(T bytes) where T : INumberBase { + var b = double.CreateChecked(bytes); + var suffix = GetSuffix(b); + return $"{bytes:#,##0.##} {suffix}"; + } - /// - /// Formats bytes to friendlier strings, i.e: B,KB,MB,TB,PB... into the buffer and returns the written span - /// - /// - /// Ensure capacity >= - /// - /// string - public static ReadOnlySpan FormatBytes(double bytes, Span buffer) { - var suffix = 0; - while (suffix < FileSizeSuffix.Length - 1 && bytes >= FormatBytesKb) { - bytes *= FormatBytesDivisor; - suffix++; - } - return StringBuffer.Create(buffer) - .Append(bytes, "#,##0.##") - .Append(' ') - .Append(FileSizeSuffix[suffix]) - .Allocate(); + /// + /// Returns a slice over formatted in a human readable way. + /// + /// + /// + /// Ensure buffer is big enough, 512 length is sufficient to cover bytes, but this number is theoretically higher than any real world case. Test if want a smaller buffer. + /// + public static ReadOnlySpan FormatBytes(T bytes, Span buffer) where T : INumberBase { + var b = double.CreateChecked(bytes); + var suffix = GetSuffix(b); + if (!buffer.TryWrite($"{bytes:#,##0.##} {suffix}", out int written)) { + return ReadOnlySpan.Empty; } - - /// - /// Formats bytes to friendlier strings, i.e: B,KB,MB,TB,PB... into the buffer and returns the written span - /// - /// - /// Ensure capacity >= - /// - /// string - public static ReadOnlySpan FormatBytes(long bytes, Span buffer) - => FormatBytes((double)bytes, buffer); + return buffer.Slice(0, written); } } \ No newline at end of file diff --git a/src/Sharpify/UtilsUnsafe.cs b/src/Sharpify/UtilsUnsafe.cs index 42962f6..931d169 100644 --- a/src/Sharpify/UtilsUnsafe.cs +++ b/src/Sharpify/UtilsUnsafe.cs @@ -1,55 +1,49 @@ +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -using @unsafe = System.Runtime.CompilerServices.Unsafe; - namespace Sharpify; public static partial class Utils { /// - /// Provides utility unsafe utility methods for utilization of other high performance apis + /// Creates an integer predicate from a given predicate function. /// - public static class Unsafe { - /// - /// Creates an integer predicate from a given predicate function. - /// - /// The type of the input parameter. - /// The predicate function. - /// An integer predicate. 1 if the original predicate would've return true, otherwise 0 - /// - /// This allows usage of a predicate to count elements that match a given condition, using hardware intrinsics to speed up the process. - /// The integer return value allows to use this converted function with IEnumerable{T}.Sum which is a hardware accelerated method, but the result will be identical to calling Count(predicate). - /// - public static Func CreateIntegerPredicate(Func predicate) => - @unsafe.As, Func>(ref predicate); - - /// - /// Converts a read-only span to a mutable span. - /// - /// The type of elements in the span. - /// The read-only span to convert. - /// A mutable span. - public static unsafe Span AsMutableSpan(ReadOnlySpan span) { - ref var p = ref MemoryMarshal.GetReference(span); - void* pointer = @unsafe.AsPointer(ref p); - return new Span(pointer, span.Length); - } + /// The type of the input parameter. + /// The predicate function. + /// An integer predicate. 1 if the original predicate would've return true, otherwise 0 + /// + /// This allows usage of a predicate to count elements that match a given condition, using hardware intrinsics to speed up the process. + /// The integer return value allows to use this converted function with IEnumerable{T}.Sum which is a hardware accelerated method, but the result will be identical to calling Count(predicate). + /// + public static Func CreateIntegerPredicate(Func predicate) => + Unsafe.As, Func>(ref predicate); - /// - /// Attempts to unbox an object to a specified value type. - /// - /// The value type to unbox to. - /// The object to unbox. - /// When this method returns, contains the unboxed value if the unboxing is successful; otherwise, the default value of . - /// true if the unboxing is successful; otherwise, false. - /// Copied from CommunityToolkit.HighPerformance - public static bool TryUnbox(object obj, out T value) where T : struct { - if (obj.GetType() == typeof(T)) { - value = @unsafe.Unbox(obj); - return true; - } + /// + /// Converts a read-only span to a mutable span. + /// + /// The type of elements in the span. + /// The read-only span to convert. + /// A mutable span. + public static unsafe Span AsMutableSpan(ReadOnlySpan span) { + ref var p = ref MemoryMarshal.GetReference(span); + void* pointer = Unsafe.AsPointer(ref p); + return new Span(pointer, span.Length); + } - value = default; - return false; + /// + /// Attempts to unbox an object to a specified value type. + /// + /// The value type to unbox to. + /// The object to unbox. + /// When this method returns, contains the unboxed value if the unboxing is successful; otherwise, the default value of . + /// true if the unboxing is successful; otherwise, false. + /// Copied from CommunityToolkit.HighPerformance + public static bool TryUnbox(object obj, out T value) where T : struct { + if (obj.GetType() == typeof(T)) { + value = Unsafe.Unbox(obj); + return true; } + + value = default; + return false; } } \ No newline at end of file From fbb42331bed07945f83c2c4e1f8bb3bac6a12d94 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Mon, 10 Nov 2025 13:16:14 +0200 Subject: [PATCH 18/26] Cleanup tests --- .../CollectionExtensionsTests.cs | 60 --------- .../TestLocalPersistentDictionary.cs | 17 --- .../Sharpify.Tests/SerializableObjectTests.cs | 14 +-- tests/Sharpify.Tests/TempFile.cs | 12 +- tests/Sharpify.Tests/ThreadSafeTests.cs | 115 ------------------ .../UnmanagedExtensionsTests.cs | 25 ---- tests/Sharpify.Tests/UtilsDateAndTimeTests.cs | 70 +---------- tests/Sharpify.Tests/UtilsMathematicsTests.cs | 6 +- tests/Sharpify.Tests/UtilsStringsTests.cs | 12 +- tests/Sharpify.Tests/UtilsUnsafeTests.cs | 6 +- 10 files changed, 27 insertions(+), 310 deletions(-) delete mode 100644 tests/Sharpify.Tests/Collections/TestLocalPersistentDictionary.cs delete mode 100644 tests/Sharpify.Tests/ThreadSafeTests.cs delete mode 100644 tests/Sharpify.Tests/UnmanagedExtensionsTests.cs diff --git a/tests/Sharpify.Tests/CollectionExtensionsTests.cs b/tests/Sharpify.Tests/CollectionExtensionsTests.cs index 217553e..13a2754 100644 --- a/tests/Sharpify.Tests/CollectionExtensionsTests.cs +++ b/tests/Sharpify.Tests/CollectionExtensionsTests.cs @@ -1,32 +1,6 @@ -using System.Buffers; - namespace Sharpify.Tests; public class CollectionExtensionsTests { - [Fact] - public void IsNullOrEmpty_GivenNullList() { - // Arrange - List? list = null; - - // Act - var result = list.IsNullOrEmpty(); - - // Assert - Assert.True(result); - } - - [Fact] - public void IsNullOrEmpty_GivenEmptyList() { - // Arrange - var list = new List(); - - // Act - var result = list.IsNullOrEmpty(); - - // Assert - Assert.True(result); - } - [Fact] public void AsSpan_GivenNonEmptyList_ReturnsCorrectSpan() { // Arrange @@ -122,40 +96,6 @@ public void GetValueRefOrAddDefault_GivenNonExistingKey_AddsNewEntryWithDefaultV #pragma warning restore } - [Fact] - public void CopyTo_CopiesDictionaryEntries() { - var dict = Enumerable.Range(1, 10).ToDictionary(i => i, i => i); - var buffer = ArrayPool>.Shared.Rent(dict.Count); - dict.CopyTo(buffer, 0); - var span = new Span>(buffer, 0, dict.Count); - Assert.Equal(dict, span.ToArray()); - buffer.ReturnBufferToSharedArrayPool(); - } - - [Fact] - public void RentBufferAndCopyEntries_ReturnRentedBuffer_Dictionary() { - var dict = Enumerable.Range(1, 10).ToDictionary(i => i, i => i); - var (buffer, entries) = dict.RentBufferAndCopyEntries(); - try { - Assert.Equal(dict, entries.ToArray()); - } finally { - buffer.ReturnBufferToSharedArrayPool(); - } - } - - [Fact] - public void Dictionary_CopyToArray() { - var dict = Enumerable.Range(1, 10).ToDictionary(i => i, i => i); - var buffer = ArrayPool>.Shared.Rent(dict.Count); - dict.CopyTo(buffer, 0); - var span = buffer.AsSpan(0, dict.Count); - try { - Assert.Equal(dict, span.ToArray()); - } finally { - buffer.ReturnBufferToSharedArrayPool(); - } - } - [Fact] public void PureSort_GivenUnsortedIntArray_ReturnsSortedIntArray() { // Arrange diff --git a/tests/Sharpify.Tests/Collections/TestLocalPersistentDictionary.cs b/tests/Sharpify.Tests/Collections/TestLocalPersistentDictionary.cs deleted file mode 100644 index 71d5f39..0000000 --- a/tests/Sharpify.Tests/Collections/TestLocalPersistentDictionary.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Sharpify.Collections; - -namespace Sharpify.Tests.Collections; - -public class TestLocalPersistentDictionary : LocalPersistentDictionary { - private volatile int _serializedCount; - - public TestLocalPersistentDictionary(string path) : base(path) { - } - - public int SerializedCount => _serializedCount; - - public override async Task SerializeDictionaryAsync() { - Interlocked.Increment(ref _serializedCount); - await base.SerializeDictionaryAsync(); - } -} diff --git a/tests/Sharpify.Tests/SerializableObjectTests.cs b/tests/Sharpify.Tests/SerializableObjectTests.cs index f79845d..c95951f 100644 --- a/tests/Sharpify.Tests/SerializableObjectTests.cs +++ b/tests/Sharpify.Tests/SerializableObjectTests.cs @@ -23,7 +23,7 @@ public async Task Constructor_Throws_When_Filename_Is_Invalid() { public async Task Constructor_Creates_File_When_File_Does_Not_Exist() { // Arrange var file = await TempFile.CreateAsync(); - var action = () => new MonitoredSerializableObject(file.Path, JsonContext.Default.Configuration); + var action = () => new MonitoredSerializableObject(file.FilePath, JsonContext.Default.Configuration); // Act action(); @@ -38,14 +38,14 @@ public async Task Constructor_Deserializes_File_When_File_Exists() { // Arrange var file = await TempFile.CreateAsync(); var config = new Configuration { Name = "John Doe", Age = 42 }; - var action = () => new MonitoredSerializableObject(file.Path, config, JsonContext.Default.Configuration); + var action = () => new MonitoredSerializableObject(file.FilePath, config, JsonContext.Default.Configuration); // Act action(); // Assert Assert.True(File.Exists(file)); // Act - using var obj = new MonitoredSerializableObject(file.Path, JsonContext.Default.Configuration); + using var obj = new MonitoredSerializableObject(file.FilePath, JsonContext.Default.Configuration); // Assert Assert.Equal(config, obj.Value); @@ -58,14 +58,14 @@ public async Task Modify_SerializesProperly() { // Arrange var file = await TempFile.CreateAsync(); var config = new Configuration { Name = "John Doe", Age = 42 }; - using var obj = new MonitoredSerializableObject(file.Path, config, JsonContext.Default.Configuration); + using var obj = new MonitoredSerializableObject(file.FilePath, config, JsonContext.Default.Configuration); const string newName = "Jane Doe"; // Act obj.Modify(c => c with { Name = newName }); // Assert Assert.Equal(newName, obj.Value.Name); - using var obj2 = new MonitoredSerializableObject(file.Path, JsonContext.Default.Configuration); + using var obj2 = new MonitoredSerializableObject(file.FilePath, JsonContext.Default.Configuration); Assert.Equal(newName, obj2.Value.Name); // Cleanup @@ -77,7 +77,7 @@ public async Task Modify_FiresEventOnce_WithProperArgs() { // Arrange var file = await TempFile.CreateAsync(); var config = new Configuration { Name = "John Doe", Age = 42 }; - using var obj = new MonitoredSerializableObject(file.Path, config, JsonContext.Default.Configuration); + using var obj = new MonitoredSerializableObject(file.FilePath, config, JsonContext.Default.Configuration); const string newName = "Jane Doe"; int count = 0; Configuration lastValue = default; @@ -101,7 +101,7 @@ public async Task OnFileChanged_DoesntChangeWhenFileIsEmpty() { // Arrange var file = await TempFile.CreateAsync(); var config = new Configuration { Name = "John Doe", Age = 42 }; - using var obj = new MonitoredSerializableObject(file.Path, config, JsonContext.Default.Configuration); + using var obj = new MonitoredSerializableObject(file.FilePath, config, JsonContext.Default.Configuration); // Act await File.WriteAllTextAsync(file, "", TestContext.Current.CancellationToken); diff --git a/tests/Sharpify.Tests/TempFile.cs b/tests/Sharpify.Tests/TempFile.cs index fb59e31..3d087b1 100644 --- a/tests/Sharpify.Tests/TempFile.cs +++ b/tests/Sharpify.Tests/TempFile.cs @@ -1,7 +1,7 @@ namespace Sharpify.Tests; public record TempFile { - public string Path { get; } + public string FilePath { get; } private const int Retries = 5; public static async Task CreateAsync() { @@ -20,14 +20,14 @@ public static async Task CreateAsync() { } private TempFile() { - Path = Utils.Env.PathInBaseDirectory(Random.Shared.Next(1000000, 9999999).ToString()); - using var _ = File.Create(Path); + FilePath = Path.Combine(AppContext.BaseDirectory, Random.Shared.Next(1000000, 9999999).ToString()); + using var _ = File.Create(FilePath); } - public static implicit operator string(TempFile file) => file.Path; + public static implicit operator string(TempFile file) => file.FilePath; public async Task DeleteAsync() { - if (!File.Exists(Path)) { + if (!File.Exists(FilePath)) { return; } @@ -37,7 +37,7 @@ public async Task DeleteAsync() { bool wasDeleted = false; do { try { - File.Delete(Path); + File.Delete(FilePath); wasDeleted = true; } catch { if (Interlocked.Decrement(ref retries) >= 0) { diff --git a/tests/Sharpify.Tests/ThreadSafeTests.cs b/tests/Sharpify.Tests/ThreadSafeTests.cs deleted file mode 100644 index 469f754..0000000 --- a/tests/Sharpify.Tests/ThreadSafeTests.cs +++ /dev/null @@ -1,115 +0,0 @@ -namespace Sharpify.Tests; - -public class ThreadSafeTests { - [Fact] - public void ThreadSafe_EmptyConstructor() { - ThreadSafe wrapper = new(); - - Assert.Equal(0, wrapper.Value); - } - - [Fact] - public void ThreadSafe_ValueConstructor() { - ThreadSafe wrapper = new(42); - - int result = wrapper.Value; - - Assert.Equal(42, result); - } - - [Fact] - public void ThreadSafe_UpdateValue() { - ThreadSafe wrapper = new(5); - const int newValue = 99; - - int result = wrapper.Modify(_ => newValue); - - Assert.Equal(newValue, result); - } - - [Theory] - [InlineData(1, 2, 3)] - [InlineData(2, 3, 5)] - [InlineData(3, 4, 7)] - public void ThreadSafe_ModifyValue(int original, int addition, int expected) { - ThreadSafe wrapper = new(original); - - int result = wrapper.Modify(value => value + addition); - - Assert.Equal(expected, result); - } - - [Theory] - [InlineData(100,100)] - [InlineData(200, 200)] - [InlineData(300, 300)] - public async Task ThreadSafe_MultiThreadedAccess(int amount, int expected) { - ThreadSafe wrapper = new(0); - - var tasks = Enumerable.Range(0, amount).AsParallel().Select(i => Task.Run(() => wrapper.Modify(value => value + 1))); - await Task.WhenAll(tasks); - - Assert.Equal(expected, wrapper.Value); - } - - [Fact] - public void ThreadSafe_GetHashCode() { - int val = 42; - - ThreadSafe wrapper = new(val); - - int actual = wrapper.GetHashCode(); - int expected = val.GetHashCode(); - - Assert.Equal(expected, actual); - } - - [Theory] - [InlineData(1, 1)] - [InlineData(2, 2)] - [InlineData(3, 3)] - [InlineData(-4, -4)] - public void ThreadSafe_Equals(int actual, int expected) { - ThreadSafe wrapper = new(actual); - - Assert.True(wrapper.Equals(expected)); - } - - [Fact] - public void ThreadSafe_Equals_Null() { - int val = 42; - - ThreadSafe wrapper = new(val); - - Assert.False(wrapper.Equals(null)); - } - - [Fact] - public void ThreadSafe_Equals_ThreadSafe() { - int val = 42; - - ThreadSafe wrapper = new(val); - - Assert.True(wrapper.Equals(new ThreadSafe(val))); - } - - [Fact] - public void ThreadSafe_Equals_Object() { - int val = 42; - - ThreadSafe wrapper = new(val); - var other = (object)new ThreadSafe(val); - - Assert.True(wrapper.Equals(other)); - } - - [Fact] - public void ThreadSafe_Equals_NullObject() { - int val = 42; - - ThreadSafe wrapper = new(val); - object? other = null; - - Assert.False(wrapper.Equals(other)); - } -} \ No newline at end of file diff --git a/tests/Sharpify.Tests/UnmanagedExtensionsTests.cs b/tests/Sharpify.Tests/UnmanagedExtensionsTests.cs deleted file mode 100644 index 737615f..0000000 --- a/tests/Sharpify.Tests/UnmanagedExtensionsTests.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Sharpify.Tests; - -public class UnmanagedExtensionsTests { - public enum ExampleEnum { - FirstValue, - SecondValue, - ThirdValue - } - - [Theory] - [InlineData("FirstValue", true, ExampleEnum.FirstValue)] - [InlineData("SecondValue", true, ExampleEnum.SecondValue)] - [InlineData("ThirdValue", true, ExampleEnum.ThirdValue)] - [InlineData("InvalidValue", false, default(ExampleEnum))] - [InlineData("", false, default(ExampleEnum))] - public void TryParseAsEnum_WithVariousInputs_ReturnsCorrectResult( - string value, bool expectedResult, ExampleEnum expectedEnum) { - // Act - bool result = value.TryParseAsEnum(out ExampleEnum parsedEnum); - - // Assert - Assert.Equal(expectedResult, result); - Assert.Equal(expectedEnum, parsedEnum); - } -} \ No newline at end of file diff --git a/tests/Sharpify.Tests/UtilsDateAndTimeTests.cs b/tests/Sharpify.Tests/UtilsDateAndTimeTests.cs index 3edfc01..bff561b 100644 --- a/tests/Sharpify.Tests/UtilsDateAndTimeTests.cs +++ b/tests/Sharpify.Tests/UtilsDateAndTimeTests.cs @@ -3,47 +3,6 @@ namespace Sharpify.Tests; public partial class UtilsTests { - [Theory] - [InlineData(0.00001, "0ms")] - [InlineData(0.01, "10ms")] - [InlineData(0.5, "500ms")] - [InlineData(1, "01:000s")] - [InlineData(59.99, "59:990s")] - [InlineData(60, "01:00m")] - [InlineData(61, "01:01m")] - [InlineData(121.234, "02:01m")] - public void FormatTimeSpan_ReturnsFormattedSpan(double seconds, string expected) { - // Arrange - var elapsed = TimeSpan.FromSeconds(seconds); - using var owner = MemoryPool.Shared.Rent(30); - - // Act - ReadOnlySpan result = Utils.DateAndTime.FormatTimeSpan(elapsed, owner.Memory.Span); - - // Assert - Assert.Equal(expected, result); - } - - [Theory] - [InlineData(0.00001, "0ms")] - [InlineData(0.01, "10ms")] - [InlineData(0.5, "500ms")] - [InlineData(1, "01:000s")] - [InlineData(59.99, "59:990s")] - [InlineData(60, "01:00m")] - [InlineData(61, "01:01m")] - [InlineData(121.234, "02:01m")] - public void FormatTimeSpan_ReturnsFormattedString(double seconds, string expected) { - // Arrange - var elapsed = TimeSpan.FromSeconds(seconds); - - // Act - string result = Utils.DateAndTime.FormatTimeSpan(elapsed); - - // Assert - Assert.Equal(expected, result); - } - [Fact] public void ToTimeStamp_ReturnsFormattedSpan() { // Arrange @@ -51,7 +10,7 @@ public void ToTimeStamp_ReturnsFormattedSpan() { using var owner = MemoryPool.Shared.Rent(30); // Act - ReadOnlySpan result = Utils.DateAndTime.FormatTimeStamp(dateTime, owner.Memory.Span); + ReadOnlySpan result = Utils.FormatTimeStamp(dateTime, owner.Memory.Span); // Assert Assert.Equal("1355-6-Apr-22", result); @@ -63,34 +22,9 @@ public void ToTimeStamp_ReturnsFormattedString() { var dateTime = new DateTime(2022, 04, 06, 13, 55, 00); // Act - string result = Utils.DateAndTime.FormatTimeStamp(dateTime); + string result = Utils.FormatTimeStamp(dateTime); // Assert Assert.Equal("1355-6-Apr-22", result); } - - [Fact] - public async Task GetCurrentTimeAsync_ReturnsCurrentTime() { - // Arrange - var expected = DateTime.Now; - - // Act - var result = await Utils.DateAndTime.GetCurrentTimeAsync(); - - // Assert - Assert.Equal(expected, result, TimeSpan.FromSeconds(1)); - } - - [Fact] - public async Task GetCurrentTimeInBinaryAsync_ReturnsCurrentTimeInBinary() { - // Arrange - var expected = DateTime.Now; - - // Act - var result = await Utils.DateAndTime.GetCurrentTimeInBinaryAsync(); - var fromResult = DateTime.FromBinary(result); - - // Assert - Assert.Equal(expected, fromResult, TimeSpan.FromSeconds(1)); - } } \ No newline at end of file diff --git a/tests/Sharpify.Tests/UtilsMathematicsTests.cs b/tests/Sharpify.Tests/UtilsMathematicsTests.cs index 5fce068..dfe071d 100644 --- a/tests/Sharpify.Tests/UtilsMathematicsTests.cs +++ b/tests/Sharpify.Tests/UtilsMathematicsTests.cs @@ -11,7 +11,7 @@ public void RollingAverage_WithVariousInputs_ReturnsCorrectResult( expectedResult = Math.Round(expectedResult, 15); // Act - double result = Utils.Mathematics.RollingAverage(val, newVal, count); + double result = Utils.RollingAverage(val, newVal, count); result = Math.Round(result, 3); // Assert @@ -24,7 +24,7 @@ public void RollingAverage_WithVariousInputs_ReturnsCorrectResult( [InlineData(11, 39916800)] public void Factorial_ValidInput_ValidResult(double n, double expected) { // Act - var result = Utils.Mathematics.Factorial(n); + var result = Utils.Factorial(n); // Assert Assert.Equal(expected, result); @@ -37,7 +37,7 @@ public void Factorial_ValidInput_ValidResult(double n, double expected) { [InlineData(33, 3524578)] public void FibonacciApproximation_ValidInput_ValidResult(int n, double expected) { // Act - var result = Utils.Mathematics.FibonacciApproximation(n); + var result = Utils.FibonacciApproximation(n); // Assert const double margin = 0.01; diff --git a/tests/Sharpify.Tests/UtilsStringsTests.cs b/tests/Sharpify.Tests/UtilsStringsTests.cs index b5052f8..e001400 100644 --- a/tests/Sharpify.Tests/UtilsStringsTests.cs +++ b/tests/Sharpify.Tests/UtilsStringsTests.cs @@ -13,7 +13,7 @@ public partial class UtilsTests { public void FormatBytes_DoubleWithVariousInputs_ReturnsCorrectResult( double bytes, string expectedResult) { // Act - string result = Utils.Strings.FormatBytes(bytes); + string result = Utils.FormatBytes(bytes); // Assert Assert.Equal(expectedResult, result); @@ -30,7 +30,7 @@ public void FormatBytes_DoubleWithVariousInputs_ReturnsCorrectResult( public void FormatBytes_LongWithVariousInputs_ReturnsCorrectResult( long bytes, string expectedResult) { // Act - string result = Utils.Strings.FormatBytes(bytes); + string result = Utils.FormatBytes(bytes); // Assert Assert.Equal(expectedResult, result); @@ -43,7 +43,7 @@ public void FormatBytes_LongWithVariousInputs_ReturnsCorrectResult( public void FormatBytes_LongWithNonRoundedInputs_ReturnsCorrectResult( long bytes, string expectedResult) { // Act - string result = Utils.Strings.FormatBytes(bytes); + string result = Utils.FormatBytes(bytes); // Assert Assert.Equal(expectedResult, result); @@ -56,7 +56,7 @@ public void FormatBytes_LongWithNonRoundedInputs_ReturnsCorrectResult( public void FormatBytes_DoubleWithNonRoundedInputs_ReturnsCorrectResult( double bytes, string expectedResult) { // Act - string result = Utils.Strings.FormatBytes(bytes); + string result = Utils.FormatBytes(bytes); // Assert Assert.Equal(expectedResult, result); @@ -65,7 +65,7 @@ public void FormatBytes_DoubleWithNonRoundedInputs_ReturnsCorrectResult( [Fact] public void FormatBytes_Double_HasEnoughCapacity() { // Arrange - Action act = () => _ = Utils.Strings.FormatBytes(double.MaxValue); + Action act = () => _ = Utils.FormatBytes(double.MaxValue); // Assert act(); @@ -74,7 +74,7 @@ public void FormatBytes_Double_HasEnoughCapacity() { [Fact] public void FormatBytes_Long_HasEnoughCapacity() { // Arrange - Action act = () => _ = Utils.Strings.FormatBytes(long.MaxValue); + Action act = () => _ = Utils.FormatBytes(long.MaxValue); // Assert act(); diff --git a/tests/Sharpify.Tests/UtilsUnsafeTests.cs b/tests/Sharpify.Tests/UtilsUnsafeTests.cs index d0218bb..caf0fa3 100644 --- a/tests/Sharpify.Tests/UtilsUnsafeTests.cs +++ b/tests/Sharpify.Tests/UtilsUnsafeTests.cs @@ -4,7 +4,7 @@ public partial class UtilsTests { [Fact] public void CreateIntegerPredicate_ForCharIsDigit_Valid() { // Arrange - var predicate = Utils.Unsafe.CreateIntegerPredicate(char.IsDigit); + var predicate = Utils.CreateIntegerPredicate(char.IsDigit); // Act var one = predicate('1'); @@ -21,7 +21,7 @@ public void TryUnbox_ForValidInput_ValidResult() { var obj = (object) 5; // Act - var result = Utils.Unsafe.TryUnbox(obj, out var value); + var result = Utils.TryUnbox(obj, out var value); // Assert Assert.True(result); @@ -35,7 +35,7 @@ public void AsMutableSpan_ForValidInput_ValidResult() { var span = str.AsSpan(); // Act - var mutableSpan = Utils.Unsafe.AsMutableSpan(span); + var mutableSpan = Utils.AsMutableSpan(span); mutableSpan[2] = '1'; // Assert From 6da4c8579376d50b0ec2e36b2e3663c2228759c9 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Tue, 18 Nov 2025 20:23:18 +0200 Subject: [PATCH 19/26] Initial push for 3.0.0 --- src/Sharpify/AesProvider.cs | 14 +- src/Sharpify/CHANGELOG.md | 14 +- src/Sharpify/Collections/PooledArrayOwner.cs | 69 ------- .../MonitoredSerializableObject{T}.cs | 76 -------- src/Sharpify/ParallelExtensions.cs | 20 +-- src/Sharpify/PooledArrayOwner.cs | 75 ++++++++ src/Sharpify/Routines/AsyncRoutine.cs | 9 +- src/Sharpify/SerializableObjectEventArgs.cs | 17 -- src/Sharpify/SerializableObject{T}.cs | 170 ------------------ src/Sharpify/Sharpify.csproj | 2 +- src/Sharpify/StringExtensions.cs | 57 ------ src/Sharpify/UtilsStrings.cs | 46 ----- .../CollectionExtensionsTests.cs | 2 +- .../Sharpify.Tests/SerializableObjectTests.cs | 159 ---------------- tests/Sharpify.Tests/Sharpify.Tests.csproj | 4 +- tests/Sharpify.Tests/UtilsStringsTests.cs | 82 --------- 16 files changed, 110 insertions(+), 706 deletions(-) delete mode 100644 src/Sharpify/Collections/PooledArrayOwner.cs delete mode 100644 src/Sharpify/MonitoredSerializableObject{T}.cs create mode 100644 src/Sharpify/PooledArrayOwner.cs delete mode 100644 src/Sharpify/SerializableObjectEventArgs.cs delete mode 100644 src/Sharpify/SerializableObject{T}.cs delete mode 100644 src/Sharpify/UtilsStrings.cs delete mode 100644 tests/Sharpify.Tests/SerializableObjectTests.cs delete mode 100644 tests/Sharpify.Tests/UtilsStringsTests.cs diff --git a/src/Sharpify/AesProvider.cs b/src/Sharpify/AesProvider.cs index e274795..e28e80f 100644 --- a/src/Sharpify/AesProvider.cs +++ b/src/Sharpify/AesProvider.cs @@ -41,7 +41,7 @@ public AesProvider(string strKey) { // Creates a usable fixed length key from the string password private static byte[] CreateKey(ReadOnlySpan strKey) { - using var owner = PooledArrayOwner.Rent(strKey.Length * sizeof(char), out Span span); + using var owner = ArrayPool.Shared.Rent(strKey.Length * sizeof(char), out Span span); int written = Encoding.UTF8.GetBytes(strKey, span); return SHA256.HashData(span.Slice(0, written)); } @@ -107,11 +107,11 @@ public static bool IsPasswordValid(string password, string hashedPassword) { /// original text /// Unicode string public string Encrypt(ReadOnlySpan unencrypted) { - using var bytesOwner = PooledArrayOwner.Rent(unencrypted.Length * sizeof(char), out Span bytesBuffer); + using var bytesOwner = ArrayPool.Shared.Rent(unencrypted.Length * sizeof(char), out Span bytesBuffer); int written = Encoding.UTF8.GetBytes(unencrypted, bytesBuffer); var writtenSpan = bytesBuffer.Slice(0, written); - using var encryptedOwner = PooledArrayOwner.Rent(writtenSpan.Length + ReservedBufferSize, out Span encryptedBuffer); + using var encryptedOwner = ArrayPool.Shared.Rent(writtenSpan.Length + ReservedBufferSize, out Span encryptedBuffer); written = EncryptBytes(writtenSpan, encryptedBuffer); return Convert.ToBase64String(encryptedBuffer.Slice(0, written)); } @@ -122,7 +122,7 @@ public string Encrypt(ReadOnlySpan unencrypted) { /// Returns an empty string if it fails public string Decrypt(string encrypted) { var buffer = Convert.FromBase64String(encrypted); - using var decryptedOwner = PooledArrayOwner.Rent(buffer.Length, out Span span); + using var decryptedOwner = ArrayPool.Shared.Rent(buffer.Length, out Span span); int written = DecryptBytes(buffer, span); ReadOnlySpan decrypted = span.Slice(0, written); return decrypted.Length is 0 @@ -210,10 +210,10 @@ public int DecryptBytes(ReadOnlySpan encrypted, Span destination, bo /// original url /// Encrypted url with Base64Url encoding public string EncryptUrl(string url) { - using var bufferOwner = PooledArrayOwner.Rent(url.Length * sizeof(char), out Span buffer); + using var bufferOwner = ArrayPool.Shared.Rent(url.Length * sizeof(char), out Span buffer); int written = Encoding.UTF8.GetBytes(url, buffer); // IBufferWriter overload advances automatically ReadOnlySpan bytesSpan = buffer.Slice(0, written); - using var encryptedOwner = PooledArrayOwner.Rent(bytesSpan.Length + ReservedBufferSize, out Span encrypted); + using var encryptedOwner = ArrayPool.Shared.Rent(bytesSpan.Length + ReservedBufferSize, out Span encrypted); written = EncryptBytes(bytesSpan, encrypted); return Base64UrlEncode(encrypted.Slice(0, written)); } @@ -226,7 +226,7 @@ public string EncryptUrl(string url) { /// Returns an empty string if it fails public string DecryptUrl(string encryptedUrl) { var base64 = Base64UrlDecode(encryptedUrl); - using var decryptedOwner = PooledArrayOwner.Rent(base64.Length, out Span buffer); + using var decryptedOwner = ArrayPool.Shared.Rent(base64.Length, out Span buffer); int written = DecryptBytes(base64, buffer); ReadOnlySpan decrypted = buffer.Slice(0, written); return decrypted.Length is 0 diff --git a/src/Sharpify/CHANGELOG.md b/src/Sharpify/CHANGELOG.md index 5980d1c..dc8a5e8 100644 --- a/src/Sharpify/CHANGELOG.md +++ b/src/Sharpify/CHANGELOG.md @@ -1,8 +1,20 @@ # CHANGELOG -## v2.5.1 +## v3.0.0 +* Only .NET 10+ support. * Some computed properties in `BufferWrapper{T}` were made `readonly` to hint the compiler to not create defensive copies. +* `PersistentDictionary` in all of its variants have been removed - used `ArrowDb` instead. +* `SerializableObject`, `MonitoredSerializableObject` and `ThreadSafe` have all been combined into `Synchronized` which is much simpler, more performant. But can be more manual as it isn't coupled with `File.IO`. Instead it provides a delegate that can be provided and called on update. +* `Collections.IsNullOrEmpty` and all the other alias functions for `CollectionsMarshal` have been removed. +* `Utils` subclasses have been flattened and all the contents will reside directly in `Utils`. + * `Strings.FormatBytes` have been removed + * `Path` utilities were also removed - use `AppContext` instead. + * `String.IsNullOrEmpty|IsNullOrWhiteSpace|Concat` were also removed to enforce build-in language features. + * `TryConvertFromTo32` was also removed - `int.Parse|TryParse` are more than fast enough now. +* A struct `PooledArrayOwner{T}` was added to rent arrays from `ArrayPool{T}` without additional penalties. + * Extensions to match were added to any `ArrayPool{T}` including `Shared`, they allow you to get the owner and the array at the same time. `using var owner = ArrayPool{T}.Shared.Rent(minLength, out T[] array);` + * You can then proceed to use `BufferWrapper{T}.Create(array)` to get an `IBufferWriter` implementation over it. ## v2.5.0 diff --git a/src/Sharpify/Collections/PooledArrayOwner.cs b/src/Sharpify/Collections/PooledArrayOwner.cs deleted file mode 100644 index a24c63d..0000000 --- a/src/Sharpify/Collections/PooledArrayOwner.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System.Buffers; - -namespace Sharpify.Collections; - -/// -/// A struct that allows renting an array from and manage its return using the interface. -/// -/// -public partial struct PooledArrayOwner : IDisposable { - private readonly ArrayPool _pool; - private bool _disposed; - - /// - /// The rented array held by this object. - /// - public readonly T[] Value; - - private PooledArrayOwner(int minimumLength) { - _pool = ArrayPool.Shared; - Value = _pool.Rent(minimumLength); - } - - /// - /// Returns the rented array back to . - /// - public void Dispose() { - if (_disposed) return; - _pool.Return(Value); - _disposed = true; - } -} - -public partial struct PooledArrayOwner : IDisposable { - /// - /// Rent an array with from , returning a struct that will return it after being disposed, and also the held array reference. - /// - /// - /// - /// - public static PooledArrayOwner Rent(int minimumLength, out T[] array) { - PooledArrayOwner owner = new(minimumLength); - array = owner.Value; - return owner; - } - - /// - /// Rent an array with from , returning a struct that will return it after being disposed, and also a over the held array reference. - /// - /// - /// - /// - public static PooledArrayOwner Rent(int minimumLength, out Span span) { - PooledArrayOwner owner = new(minimumLength); - span = owner.Value.AsSpan(); - return owner; - } - - /// - /// Rent an array with from , returning a struct that will return it after being disposed, and also a over the held array reference. - /// - /// - /// - /// - public static PooledArrayOwner Rent(int minimumLength, out Memory memory) { - PooledArrayOwner owner = new(minimumLength); - memory = owner.Value.AsMemory(); - return owner; - } -} \ No newline at end of file diff --git a/src/Sharpify/MonitoredSerializableObject{T}.cs b/src/Sharpify/MonitoredSerializableObject{T}.cs deleted file mode 100644 index ac08f39..0000000 --- a/src/Sharpify/MonitoredSerializableObject{T}.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization.Metadata; - -namespace Sharpify; - -/// -/// Represents a that is monitored for changes from the file system. -/// -/// The type of the value stored in the object. -/// -/// This class provides functionality to serialize and deserialize the object to/from a file, -/// and raises an event whenever the file or the object is modified. -/// -public class MonitoredSerializableObject : SerializableObject { - private readonly FileSystemWatcher _watcher; - - /// - /// Represents a serializable object that is monitored for changes in a specified file path. - /// - /// The path to the file. validated on creation - /// The json type info that can be used to serialize T without reflection - /// Thrown when the directory of the path does not exist or when the filename is invalid. - public MonitoredSerializableObject(string path, JsonTypeInfo jsonTypeInfo) : this(path, default!, jsonTypeInfo) { } - - /// - /// Represents a serializable object that is monitored for changes in a specified file path. - /// - /// The path to the file. validated on creation - /// the default value of T, will be used if the file doesn't exist or can't be deserialized - /// The json type info that can be used to serialize T without reflection - /// Thrown when the directory of the path does not exist or when the filename is invalid. - public MonitoredSerializableObject(string path, T defaultValue, JsonTypeInfo jsonTypeInfo) : base(path, defaultValue, jsonTypeInfo) { - _watcher = new FileSystemWatcher(_segmentedPath.Directory, _segmentedPath.FileName) { - NotifyFilter = NotifyFilters.LastWrite, - EnableRaisingEvents = true - }; - - _watcher.Changed += OnFileChanged; - } - - private void OnFileChanged(object sender, FileSystemEventArgs e) { - if (e.ChangeType is not WatcherChangeTypes.Changed) { - return; - } - if (!File.Exists(_path)) { - return; - } - try { - _lock.EnterWriteLock(); - var json = File.ReadAllText(_path); - _value = JsonSerializer.Deserialize(json, _jsonTypeInfo)!; - InvokeOnChangedEvent(_value); - } catch { - // ignore - } finally { - _lock.ExitWriteLock(); - } - } - - /// - public override void Modify(Func modifier) { - _watcher.EnableRaisingEvents = false; - base.Modify(modifier); - _watcher.EnableRaisingEvents = true; - } - - /// - public override void Dispose() { - if (_disposed) { - return; - } - _watcher?.Dispose(); - _lock?.Dispose(); - _disposed = true; - } -} \ No newline at end of file diff --git a/src/Sharpify/ParallelExtensions.cs b/src/Sharpify/ParallelExtensions.cs index 2f21aa5..71225f9 100644 --- a/src/Sharpify/ParallelExtensions.cs +++ b/src/Sharpify/ParallelExtensions.cs @@ -1,3 +1,5 @@ +using System.Buffers; + using Sharpify.Collections; namespace Sharpify; @@ -25,17 +27,14 @@ public static async Task ForAll( var length = collection.Count; - using var taskBuffer = new RentedBufferWriter(length); + using var taskArrayOwner = ArrayPool.Shared.Rent(length, out Task[] array); + var taskBuffer = BufferWrapper.Create(array); foreach (var item in collection) { - taskBuffer.WriteAndAdvance(body.Invoke(item, token)); + taskBuffer.Append(body.Invoke(item, token)); } -#if NET9_0_OR_GREATER await Task.WhenAll(taskBuffer.WrittenSpan).WaitAsync(token).ConfigureAwait(false); -#else - await Task.WhenAll(taskBuffer.WrittenSegment).WaitAsync(token).ConfigureAwait(false); -#endif } /// @@ -77,17 +76,14 @@ public static async Task ForAllAsync( var length = collection.Count; - using var taskBuffer = new RentedBufferWriter(length); + using var taskArrayOwner = ArrayPool.Shared.Rent(length, out Task[] array); + var taskBuffer = BufferWrapper.Create(array); foreach (var item in collection) { - taskBuffer.WriteAndAdvance(Task.Run(() => body.Invoke(item, token), token)); + taskBuffer.Append(Task.Run(() => body.Invoke(item, token), token)); } -#if NET9_0_OR_GREATER await Task.WhenAll(taskBuffer.WrittenSpan).WaitAsync(token).ConfigureAwait(false); -#else - await Task.WhenAll(taskBuffer.WrittenSegment).WaitAsync(token).ConfigureAwait(false); -#endif } /// diff --git a/src/Sharpify/PooledArrayOwner.cs b/src/Sharpify/PooledArrayOwner.cs new file mode 100644 index 0000000..e857fea --- /dev/null +++ b/src/Sharpify/PooledArrayOwner.cs @@ -0,0 +1,75 @@ +using System.Buffers; + +namespace Sharpify; + +/// +/// A struct that allows renting an array from and manage its return using the interface. +/// +/// +public partial struct PooledArrayOwner : IDisposable { + private readonly ArrayPool _pool; + private bool _disposed; + + /// + /// The rented array held by this object. + /// + public readonly T[] Value; + + internal PooledArrayOwner(ArrayPool pool, int minimumLength) { + _pool = pool; + Value = _pool.Rent(minimumLength); + } + + /// + /// Returns the rented array back to . + /// + public void Dispose() { + if (_disposed) return; + _pool.Return(Value); + _disposed = true; + } +} + +/// +/// Provides any extensions that return a . +/// +public static class ArrayPoolExtensions { + /// + /// Rent an array with from an , returning a struct that will return it after being disposed, and also the held array reference. + /// + /// + /// + /// + /// + public static PooledArrayOwner Rent(this ArrayPool pool, int minimumLength, out T[] array) { + PooledArrayOwner owner = new(pool, minimumLength); + array = owner.Value; + return owner; + } + + /// + /// Rent an array with from an , returning a struct that will return it after being disposed, and also a over the held array reference. + /// + /// + /// + /// + /// + public static PooledArrayOwner Rent(this ArrayPool pool, int minimumLength, out Span span) { + PooledArrayOwner owner = new(pool, minimumLength); + span = owner.Value.AsSpan(); + return owner; + } + + /// + /// Rent an array with from an , returning a struct that will return it after being disposed, and also a over the held array reference. + /// + /// + /// + /// + /// + public static PooledArrayOwner Rent(this ArrayPool pool, int minimumLength, out Memory memory) { + PooledArrayOwner owner = new(pool, minimumLength); + memory = owner.Value.AsMemory(); + return owner; + } +} \ No newline at end of file diff --git a/src/Sharpify/Routines/AsyncRoutine.cs b/src/Sharpify/Routines/AsyncRoutine.cs index 7629674..f0d2137 100644 --- a/src/Sharpify/Routines/AsyncRoutine.cs +++ b/src/Sharpify/Routines/AsyncRoutine.cs @@ -90,16 +90,13 @@ public async Task Start() { } // Execute in Parallel if (_options.HasFlag(RoutineOptions.ExecuteInParallel)) { - using var buffer = new RentedBufferWriter(Actions.Count); + using var taskArrayOwner = ArrayPool.Shared.Rent(Actions.Count, out Task[] array); + var buffer = BufferWrapper.Create(array); foreach (var action in Actions) { - buffer.WriteAndAdvance(Task.Run(() => action(_cancellationTokenSource.Token) + buffer.Append(Task.Run(() => action(_cancellationTokenSource.Token) , _cancellationTokenSource.Token)); } -#if NET9_0_OR_GREATER await Task.WhenAll(buffer.WrittenSpan).WaitAsync(_cancellationTokenSource.Token).ConfigureAwait(false); -#else - await Task.WhenAll(buffer.WrittenSegment).WaitAsync(_cancellationTokenSource.Token).ConfigureAwait(false); -#endif // Execute sequentially } else { foreach (var action in Actions) { diff --git a/src/Sharpify/SerializableObjectEventArgs.cs b/src/Sharpify/SerializableObjectEventArgs.cs deleted file mode 100644 index 1d7dc33..0000000 --- a/src/Sharpify/SerializableObjectEventArgs.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Sharpify; - -/// -/// Represents the event arguments for a serializable object. -/// -public class SerializableObjectEventArgs : EventArgs { - /// - /// Gets the value associated with the event. - /// - public T Value { get; } - - /// - /// Initializes a new instance of the class with the specified value. - /// - /// The value associated with the event. - public SerializableObjectEventArgs(T value) => Value = value; -} \ No newline at end of file diff --git a/src/Sharpify/SerializableObject{T}.cs b/src/Sharpify/SerializableObject{T}.cs deleted file mode 100644 index 8dcd7ff..0000000 --- a/src/Sharpify/SerializableObject{T}.cs +++ /dev/null @@ -1,170 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization.Metadata; - -namespace Sharpify; - -/// -/// Represents a generic serializable object -/// -/// The type of the value stored in the object. -/// -/// This class provides functionality to serialize and deserialize the object to/from a file, -/// and raises an event whenever the object is modified. -/// -public class SerializableObject : IDisposable { - /// - /// The value of the SerializableObject. - /// - protected T _value = default!; - - /// - /// Gets value of type T. - /// - public T Value { - get { - _lock.EnterReadLock(); - try { - return _value; - } finally { - _lock.ExitReadLock(); - } - } - } - - /// - /// A value indicating whether the object has been disposed. - /// - protected volatile bool _disposed; - - /// - /// The path of the serialized object. - /// - protected readonly string _path; - - /// - /// The segmented path of the serialized object. - /// - protected readonly SegmentedPath _segmentedPath; - - /// - /// The JSON type info used for serializing and deserializing objects. - /// - protected readonly JsonTypeInfo _jsonTypeInfo; - - /// - /// The lock object used for thread synchronization. - /// - protected readonly ReaderWriterLockSlim _lock = new(); - - /// - /// Represents a serializable object that is monitored for changes in a specified file path. - /// - /// The path to the file. validated on creation - /// The json type info that can be used to serialize T without reflection - /// Thrown when the directory of the path does not exist or when the filename is invalid. - public SerializableObject(string path, JsonTypeInfo jsonTypeInfo) : this(path, default!, jsonTypeInfo) { } - - /// - /// Represents a serializable object that is monitored for changes in a specified file path. - /// - /// The path to the file. validated on creation - /// the default value of T, will be used if the file doesn't exist or can't be deserialized - /// The json type info that can be used to serialize T without reflection - /// Thrown when the directory of the path does not exist or when the filename is invalid. - public SerializableObject(string path, T defaultValue, JsonTypeInfo jsonTypeInfo) { - _jsonTypeInfo = jsonTypeInfo; - var dir = Path.GetDirectoryName(path); - var fileName = Path.GetFileName(path); - if (string.IsNullOrWhiteSpace(dir)) { - throw new IOException("The directory of path does not exist"); - } - if (string.IsNullOrWhiteSpace(fileName)) { - throw new IOException("Filename is invalid"); - } - _segmentedPath = new SegmentedPath(dir, fileName); - _path = path; - if (File.Exists(path)) { - var fileContent = File.ReadAllText(path); - if (fileContent.Length is 0) { - SetValueAndSerialize(defaultValue); - } else { - try { - var val = JsonSerializer.Deserialize(fileContent, _jsonTypeInfo); - if (val is null) { - SetValueAndSerialize(defaultValue); - } - _value = val!; - } catch { - SetValueAndSerialize(defaultValue); - } - } - } else { - if (File.GetAttributes(path).HasFlag(FileAttributes.Directory)) { - throw new ArgumentException("The provided path is an existing directory."); - } - SetValueAndSerialize(defaultValue); - } - } - - private void SetValueAndSerialize(T value) { - try { - _lock.EnterWriteLock(); - _value = value; - var json = JsonSerializer.Serialize(_value, _jsonTypeInfo); - File.WriteAllText(_path, json); - } finally { - _lock.ExitWriteLock(); - } - } - - /// - /// Represents the method that will handle the OnChanged" event. - /// - /// The source of the event. - /// An that contains the event data. - public delegate void OnChangedEventHandler(object sender, SerializableObjectEventArgs e); - - /// - /// Event that is raised when the has changed. - /// - public event OnChangedEventHandler? OnChanged; - - /// - /// Invokes the OnChanged event with the specified value. - /// - /// The value to pass to the event handler. - protected void InvokeOnChangedEvent(T value) { - OnChanged?.Invoke(this, new SerializableObjectEventArgs(value)); - } - - /// - /// Modifies the value of the object and performs necessary operations such as serialization and event invocation. - /// - /// The action that modifies the value of the object. - /// - /// - /// a lock is used to prevent concurrent modifications - /// - /// - /// When a record (non-struct) is used, do not use the "with" keyword to return a modification, this will allocate a new object, instead modify the existing and return the object, this will circularly exchange the reference. - /// - /// - public virtual void Modify(Func modifier) { - SetValueAndSerialize(modifier(_value)); - InvokeOnChangedEvent(_value); - } - - /// - public virtual void Dispose() { - if (_disposed) { - return; - } - _lock.Dispose(); - _disposed = true; - } - - /// - /// Represents a segmented path consisting of a directory and a file name. - /// - protected readonly record struct SegmentedPath(string Directory, string FileName); -} \ No newline at end of file diff --git a/src/Sharpify/Sharpify.csproj b/src/Sharpify/Sharpify.csproj index 11ece30..8eca60e 100644 --- a/src/Sharpify/Sharpify.csproj +++ b/src/Sharpify/Sharpify.csproj @@ -1,6 +1,6 @@ - net9.0 + net10.0 enable preview 3.0.0 diff --git a/src/Sharpify/StringExtensions.cs b/src/Sharpify/StringExtensions.cs index 9e40f9a..a49024b 100644 --- a/src/Sharpify/StringExtensions.cs +++ b/src/Sharpify/StringExtensions.cs @@ -15,63 +15,6 @@ public static ref char GetReference(this string text) { return ref Unsafe.AsRef(in text.GetPinnableReference()); } - /// - /// A simple wrapper over to make it easier to use. - /// - public static bool IsNullOrEmpty(this string str) => string.IsNullOrEmpty(str); - - /// - /// A simple wrapper over to make it easier to use. - /// - public static bool IsNullOrWhiteSpace(this string str) => string.IsNullOrWhiteSpace(str); - - /// - /// Tries to convert to an . - /// - /// The span of characters to convert. - /// When this method returns, contains the converted if the conversion succeeded, or zero if the conversion failed. - /// true if the conversion succeeded; otherwise, false. - public static bool TryConvertToInt32(this ReadOnlySpan value, out int result) { - result = 0; - if (value.IsWhiteSpace() || value.Length > 11) { // 10 is the max length of an int32 + 1 for sign - return false; - } - bool isNegative = value[0] is '-'; - var length = value.Length; - int i = 0; - if (isNegative) { - i++; - } - for (; (uint)i < (uint)length; i++) { - var digit = value[i] - '0'; - - // Check for invalid digit - if (digit is < 0 or > 9) { - result = 0; - return false; - } - - unchecked { - result = (result * 10) + digit; - } - } - if (isNegative) { - result *= -1; - } - return true; - } - - /// - /// A more convenient way to use - /// - /// - /// - /// - /// The advantage of Concat over string interpolation diminishes when more than 2 strings are used. - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static string Concat(this string value, ReadOnlySpan suffix) => string.Concat(value.AsSpan(), suffix); - /// /// Method used to turn into Title format /// diff --git a/src/Sharpify/UtilsStrings.cs b/src/Sharpify/UtilsStrings.cs deleted file mode 100644 index ca5ba66..0000000 --- a/src/Sharpify/UtilsStrings.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System.Numerics; - -namespace Sharpify; - -public static partial class Utils { - private static readonly string[] FileSizeSuffix = ["B", "KB", "MB", "GB", "TB", "PB"]; - - private static string GetSuffix(double bytes) { - const double formatBytesKb = 1024d; - const double formatBytesDivisor = 1 / formatBytesKb; - var suffix = 0; - while (suffix < FileSizeSuffix.Length - 1 && bytes >= formatBytesKb) { - bytes *= formatBytesDivisor; - suffix++; - } - return FileSizeSuffix[suffix]; - } - - /// - /// Returns formatted in a human readable way. - /// - /// - /// - /// - public static string FormatBytes(T bytes) where T : INumberBase { - var b = double.CreateChecked(bytes); - var suffix = GetSuffix(b); - return $"{bytes:#,##0.##} {suffix}"; - } - - /// - /// Returns a slice over formatted in a human readable way. - /// - /// - /// - /// Ensure buffer is big enough, 512 length is sufficient to cover bytes, but this number is theoretically higher than any real world case. Test if want a smaller buffer. - /// - public static ReadOnlySpan FormatBytes(T bytes, Span buffer) where T : INumberBase { - var b = double.CreateChecked(bytes); - var suffix = GetSuffix(b); - if (!buffer.TryWrite($"{bytes:#,##0.##} {suffix}", out int written)) { - return ReadOnlySpan.Empty; - } - return buffer.Slice(0, written); - } -} \ No newline at end of file diff --git a/tests/Sharpify.Tests/CollectionExtensionsTests.cs b/tests/Sharpify.Tests/CollectionExtensionsTests.cs index 13a2754..9a22ac6 100644 --- a/tests/Sharpify.Tests/CollectionExtensionsTests.cs +++ b/tests/Sharpify.Tests/CollectionExtensionsTests.cs @@ -236,7 +236,7 @@ public void ChunkToSegments_GivenArrayWithLengthLessThanSegmentSize_ReturnsSingl // Assert Assert.Single(result); - Assert.Equal(array, result[0]); + Assert.Equal(new ArraySegment(array), result[0]); } [Fact] diff --git a/tests/Sharpify.Tests/SerializableObjectTests.cs b/tests/Sharpify.Tests/SerializableObjectTests.cs deleted file mode 100644 index c95951f..0000000 --- a/tests/Sharpify.Tests/SerializableObjectTests.cs +++ /dev/null @@ -1,159 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace Sharpify.Tests; - -[Collection("SerializableObjectTests")] -public class SerializableObjectTests { - [Fact] - public async Task Constructor_Throws_When_Filename_Is_Invalid() { - var file = await TempFile.CreateAsync(); - var dir = Path.GetDirectoryName(file)!; - // Arrange - var action = () => new MonitoredSerializableObject(dir, JsonContext.Default.Configuration); // no filename - - // Act & Assert - Assert.Throws(action); - - // Cleanup - await file.DeleteAsync(); - } - - [Fact] - public async Task Constructor_Creates_File_When_File_Does_Not_Exist() { - // Arrange - var file = await TempFile.CreateAsync(); - var action = () => new MonitoredSerializableObject(file.FilePath, JsonContext.Default.Configuration); - - // Act - action(); - - // Assert - Assert.True(File.Exists(file)); - await file.DeleteAsync(); - } - - [Fact] - public async Task Constructor_Deserializes_File_When_File_Exists() { - // Arrange - var file = await TempFile.CreateAsync(); - var config = new Configuration { Name = "John Doe", Age = 42 }; - var action = () => new MonitoredSerializableObject(file.FilePath, config, JsonContext.Default.Configuration); - - // Act - action(); - // Assert - Assert.True(File.Exists(file)); - // Act - using var obj = new MonitoredSerializableObject(file.FilePath, JsonContext.Default.Configuration); - // Assert - Assert.Equal(config, obj.Value); - - // Cleanup - await file.DeleteAsync(); - } - - [Fact] - public async Task Modify_SerializesProperly() { - // Arrange - var file = await TempFile.CreateAsync(); - var config = new Configuration { Name = "John Doe", Age = 42 }; - using var obj = new MonitoredSerializableObject(file.FilePath, config, JsonContext.Default.Configuration); - const string newName = "Jane Doe"; - - // Act - obj.Modify(c => c with { Name = newName }); - // Assert - Assert.Equal(newName, obj.Value.Name); - using var obj2 = new MonitoredSerializableObject(file.FilePath, JsonContext.Default.Configuration); - Assert.Equal(newName, obj2.Value.Name); - - // Cleanup - await file.DeleteAsync(); - } - - [Fact] - public async Task Modify_FiresEventOnce_WithProperArgs() { - // Arrange - var file = await TempFile.CreateAsync(); - var config = new Configuration { Name = "John Doe", Age = 42 }; - using var obj = new MonitoredSerializableObject(file.FilePath, config, JsonContext.Default.Configuration); - const string newName = "Jane Doe"; - int count = 0; - Configuration lastValue = default; - obj.OnChanged += (sender, e) => { - count++; - lastValue = e.Value; - }; - - // Act - obj.Modify(c => c with { Name = newName }); - // Assert - Assert.Equal(1, count); - Assert.Equal(newName, lastValue.Name); - - // Cleanup - await file.DeleteAsync(); - } - - [Fact] - public async Task OnFileChanged_DoesntChangeWhenFileIsEmpty() { - // Arrange - var file = await TempFile.CreateAsync(); - var config = new Configuration { Name = "John Doe", Age = 42 }; - using var obj = new MonitoredSerializableObject(file.FilePath, config, JsonContext.Default.Configuration); - - // Act - await File.WriteAllTextAsync(file, "", TestContext.Current.CancellationToken); - - // Assert - Assert.Equal("John Doe", obj.Value.Name); - - // Cleanup - await file.DeleteAsync(); - } - - [Fact] - public async Task OnFileChanged_DoesntChangeWhenFileIsInvalid() { - // Arrange - var file = await TempFile.CreateAsync(); - var config = new Configuration { Name = "John Doe", Age = 42 }; - using var obj = new MonitoredSerializableObject(file, config, JsonContext.Default.Configuration); - int count = 0; - obj.OnChanged += (sender, e) => { - Interlocked.Increment(ref count); - }; - - // Act - await File.WriteAllTextAsync(file, "invalid json", TestContext.Current.CancellationToken); - // Assert - Assert.Equal(0, count); - - // Cleanup - await file.DeleteAsync(); - } - - [Fact] - public async Task OnFileChanged_ChangesWhenFileIsValid() { - // Arrange - var file = await TempFile.CreateAsync(); - var config = new Configuration { Name = "John Doe", Age = 42 }; - using var obj = new MonitoredSerializableObject(file, config, JsonContext.Default.Configuration); - // Assert - obj.OnChanged += (sender, e) => Assert.Equal("Jane", e.Value.Name); - - // Act - await File.WriteAllTextAsync(file, JsonSerializer.Serialize(config with { Name = "Jane" }, JsonContext.Default.Configuration), TestContext.Current.CancellationToken); - - // Cleanup - await file.DeleteAsync(); - } -} -internal record struct Configuration { - public string Name { get; set; } - public int Age { get; set; } -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(Configuration))] -internal partial class JsonContext : JsonSerializerContext { } \ No newline at end of file diff --git a/tests/Sharpify.Tests/Sharpify.Tests.csproj b/tests/Sharpify.Tests/Sharpify.Tests.csproj index 4b85404..9d18b27 100644 --- a/tests/Sharpify.Tests/Sharpify.Tests.csproj +++ b/tests/Sharpify.Tests/Sharpify.Tests.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 true true enable @@ -10,7 +10,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Sharpify.Tests/UtilsStringsTests.cs b/tests/Sharpify.Tests/UtilsStringsTests.cs deleted file mode 100644 index e001400..0000000 --- a/tests/Sharpify.Tests/UtilsStringsTests.cs +++ /dev/null @@ -1,82 +0,0 @@ -namespace Sharpify.Tests; - -public partial class UtilsTests { - [Theory] - [InlineData(0.0, "0 B")] - [InlineData(1023.0, "1,023 B")] - [InlineData(1024.0, "1 KB")] - [InlineData(1057.393, "1.03 KB")] - [InlineData(1048576.0, "1 MB")] - [InlineData(1073741824.0, "1 GB")] - [InlineData(1099511627776.0, "1 TB")] - [InlineData(1125899906842624.0, "1 PB")] - public void FormatBytes_DoubleWithVariousInputs_ReturnsCorrectResult( - double bytes, string expectedResult) { - // Act - string result = Utils.FormatBytes(bytes); - - // Assert - Assert.Equal(expectedResult, result); - } - - [Theory] - [InlineData(0L, "0 B")] - [InlineData(1023L, "1,023 B")] - [InlineData(1024L, "1 KB")] - [InlineData(1048576L, "1 MB")] - [InlineData(1073741824L, "1 GB")] - [InlineData(1099511627776L, "1 TB")] - [InlineData(1125899906842624L, "1 PB")] - public void FormatBytes_LongWithVariousInputs_ReturnsCorrectResult( - long bytes, string expectedResult) { - // Act - string result = Utils.FormatBytes(bytes); - - // Assert - Assert.Equal(expectedResult, result); - } - - [Theory] - [InlineData(1610612736L, "1.5 GB")] // 1.5 * 1024^3 - [InlineData(1627389952L, "1.52 GB")] // 1.52 * 1024^3 - [InlineData(1644167168L, "1.53 GB")] // 1.53 * 1024^3 - public void FormatBytes_LongWithNonRoundedInputs_ReturnsCorrectResult( - long bytes, string expectedResult) { - // Act - string result = Utils.FormatBytes(bytes); - - // Assert - Assert.Equal(expectedResult, result); - } - - [Theory] - [InlineData(1610612736.0, "1.5 GB")] // 1.5 * 1024^3 - [InlineData(1627389952.0, "1.52 GB")] // 1.52 * 1024^3 - [InlineData(1644167168.0, "1.53 GB")] // 1.53 * 1024^3 - public void FormatBytes_DoubleWithNonRoundedInputs_ReturnsCorrectResult( - double bytes, string expectedResult) { - // Act - string result = Utils.FormatBytes(bytes); - - // Assert - Assert.Equal(expectedResult, result); - } - - [Fact] - public void FormatBytes_Double_HasEnoughCapacity() { - // Arrange - Action act = () => _ = Utils.FormatBytes(double.MaxValue); - - // Assert - act(); - } - - [Fact] - public void FormatBytes_Long_HasEnoughCapacity() { - // Arrange - Action act = () => _ = Utils.FormatBytes(long.MaxValue); - - // Assert - act(); - } -} \ No newline at end of file From 969228ea7f074a9b534db30f59701e9f61183bc9 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Tue, 18 Nov 2025 20:29:28 +0200 Subject: [PATCH 20/26] fixed use of obsolete hashing method --- src/Sharpify/AesProvider.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Sharpify/AesProvider.cs b/src/Sharpify/AesProvider.cs index e28e80f..8318e48 100644 --- a/src/Sharpify/AesProvider.cs +++ b/src/Sharpify/AesProvider.cs @@ -57,9 +57,8 @@ public static string GeneratePassword(string password, int iterations = 991) { //generate a random salt for hashing //hash password given salt and iterations (default to 1000) //iterations provide difficulty when cracking - using var pbkdf2 = new Rfc2898DeriveBytes(password, SaltSize, iterations, HashAlgorithmName.SHA512); - var hash = pbkdf2.GetBytes(SaltSize); - var salt = pbkdf2.Salt; + byte[] salt = RandomNumberGenerator.GetBytes(SaltSize); + var hash = Rfc2898DeriveBytes.Pbkdf2(password, salt, iterations, HashAlgorithmName.SHA512, SaltSize); // create format for hash text // salt|iterations|hash @@ -90,7 +89,7 @@ public static bool IsPasswordValid(string password, string hashedPassword) { hpSpan.Split(parts, '|', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); ReadOnlySpan origSalt = Convert.FromBase64String(hashedPassword[parts[0]]); - hpSpan[parts[1]].TryConvertToInt32(out var origIterations); + var origIterations = int.Parse(hpSpan[parts[1]]); ReadOnlySpan origHash = hashedPassword[parts[2]]; //generate hash from test password and original salt and iterations @@ -281,4 +280,4 @@ public void Dispose() { _disposed = true; GC.SuppressFinalize(this); } -} \ No newline at end of file +} From 1162c6abb8ae92c15d20c57c7b0159bffbdb0e46 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Tue, 18 Nov 2025 20:33:09 +0200 Subject: [PATCH 21/26] Fixed issue found by tests --- src/Sharpify/UtilsDateAndTime.cs | 2 +- tests/Sharpify.Tests/StringExtensionsTests.cs | 103 ------------------ tests/Sharpify.Tests/UtilsDateAndTimeTests.cs | 4 +- 3 files changed, 3 insertions(+), 106 deletions(-) diff --git a/src/Sharpify/UtilsDateAndTime.cs b/src/Sharpify/UtilsDateAndTime.cs index cecada9..b829327 100644 --- a/src/Sharpify/UtilsDateAndTime.cs +++ b/src/Sharpify/UtilsDateAndTime.cs @@ -6,7 +6,7 @@ public static partial class Utils { /// /// A format for timestamps /// - public const string TimeStampFormat = "HHMM-dd-MMM-yy"; + public const string TimeStampFormat = "HHmm-dd-MMM-yy"; /// /// Returns a slice over formatted as diff --git a/tests/Sharpify.Tests/StringExtensionsTests.cs b/tests/Sharpify.Tests/StringExtensionsTests.cs index 545df71..36e494e 100644 --- a/tests/Sharpify.Tests/StringExtensionsTests.cs +++ b/tests/Sharpify.Tests/StringExtensionsTests.cs @@ -2,109 +2,6 @@ namespace Sharpify.Tests; #pragma warning disable public class StringExtensionsTests { - [Fact] - public void IsNullOrEmpty_GivenNullString_ReturnsTrue() { - // Arrange - string value = null; - - // Act - var result = value.IsNullOrEmpty(); - - // Assert - Assert.True(result); - } - - [Fact] - public void IsNullOrEmpty_GivenEmptyString_ReturnsTrue() { - // Arrange - const string value = ""; - - // Act - var result = value.IsNullOrEmpty(); - - // Assert - Assert.True(result); - } - - [Fact] - public void IsNullOrWhiteSpace_GivenNullString_ReturnsTrue() { - // Arrange - string value = null; - - // Act - var result = value.IsNullOrWhiteSpace(); - - // Assert - Assert.True(result); - } - - [Fact] - public void IsNullOrWhiteSpace_GivenEmptyString_ReturnsTrue() { - // Arrange - const string value = ""; - - // Act - var result = value.IsNullOrWhiteSpace(); - - // Assert - Assert.True(result); - } - - [Fact] - public void IsNullOrWhiteSpace_GivenWhiteSpaceString_ReturnsTrue() { - // Arrange - const string value = " "; - - // Act - var result = value.IsNullOrWhiteSpace(); - - // Assert - Assert.True(result); - } - - [Theory] - [InlineData("0", 0)] - [InlineData("1", 1)] - [InlineData("123", 123)] - [InlineData("2147483647", 2147483647)] // int.MaxValue - public void TryConvertToInt32_ValidString_ReturnsTrue(string input, int expected) { - bool result = input.AsSpan().TryConvertToInt32(out var output); - - Assert.True(result); - Assert.Equal(expected, output); - } - - [Theory] - [InlineData("")] - [InlineData("-1 5")] // whitespace - [InlineData("214748364841232131231")] // larger than int.MaxValue - [InlineData("1.23")] // decimal - [InlineData("123abc")] // alphanumeric - public void TryConvertToInt32_InvalidString_ReturnsFalse(string input) { - bool result = input.AsSpan().TryConvertToInt32(out var output); - - Assert.False(result); - Assert.Equal(0, output); // Ensure that the value is not changed in case of failure - } - - // Tests for Concat - [Theory] - [InlineData("", "", "")] - [InlineData("hello", "", "hello")] - [InlineData("", "world", "world")] - [InlineData("hello", "world", "helloworld")] - public void Concat_WithVariousInputs_ReturnsCorrectResult( - string value, string suffixString, string expectedResult) { - // Arrange - ReadOnlySpan suffix = suffixString; - - // Act - string result = value.Concat(suffix); - - // Assert - Assert.Equal(expectedResult, result); - } - // Tests for ToTitle [Theory] [InlineData("", "")] diff --git a/tests/Sharpify.Tests/UtilsDateAndTimeTests.cs b/tests/Sharpify.Tests/UtilsDateAndTimeTests.cs index bff561b..ceffb3e 100644 --- a/tests/Sharpify.Tests/UtilsDateAndTimeTests.cs +++ b/tests/Sharpify.Tests/UtilsDateAndTimeTests.cs @@ -13,7 +13,7 @@ public void ToTimeStamp_ReturnsFormattedSpan() { ReadOnlySpan result = Utils.FormatTimeStamp(dateTime, owner.Memory.Span); // Assert - Assert.Equal("1355-6-Apr-22", result); + Assert.Equal("1355-06-Apr-22", result); } [Fact] @@ -25,6 +25,6 @@ public void ToTimeStamp_ReturnsFormattedString() { string result = Utils.FormatTimeStamp(dateTime); // Assert - Assert.Equal("1355-6-Apr-22", result); + Assert.Equal("1355-06-Apr-22", result); } } \ No newline at end of file From e2d08c5ced87b9207d7f0c29409b77ad2e93ac61 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Tue, 18 Nov 2025 20:41:20 +0200 Subject: [PATCH 22/26] Update readme --- README.md | 62 ++---- src/Sharpify/README.md | 468 ----------------------------------------- 2 files changed, 13 insertions(+), 517 deletions(-) delete mode 100644 src/Sharpify/README.md diff --git a/README.md b/README.md index 1ad8dfa..1c7be62 100644 --- a/README.md +++ b/README.md @@ -1,75 +1,39 @@ # Sharpify -A collection of high performance language extensions for C#, fully compatible with NativeAOT - -## ⬇ Installation - -[![Nuget](https://img.shields.io/nuget/dt/Sharpify?label=Sharpify%20Nuget%20Downloads)](https://www.nuget.org/packages/Sharpify/) -> dotnet add package Sharpify - -[![Nuget](https://img.shields.io/nuget/dt/Sharpify.Data?label=Sharpify.Data%20Nuget%20Downloads)](https://www.nuget.org/packages/Sharpify.Data/) -> dotnet add package Sharpify.Data - -* `Sharpify.Data` is deprecated and will no longer be maintained. Refer to [ArrowDb](https://github.com/dusrdev/ArrowDb) for a superior alternative. - -[![Nuget](https://img.shields.io/nuget/dt/Sharpify.CommandLineInterface?label=Sharpify.CommandLineInterface%20Nuget%20Downloads)](https://www.nuget.org/packages/Sharpify.CommandLineInterface/) -> dotnet add package Sharpify.CommandLineInterface +[![NuGet](https://img.shields.io/nuget/v/Sharpify.svg?style=flat-square)](https://www.nuget.org/packages/Sharpify) +[![NuGet Downloads](https://img.shields.io/nuget/dt/Sharpify?style=flat&label=Downloads)](https://www.nuget.org/packages/Sharpify) +[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](License.txt) +[![.NET](https://img.shields.io/badge/.NET-10.0-512BD4?style=flat-square)](https://dotnet.microsoft.com/en-us/download/dotnet/10.0) -## Sharpify - Base package - -`Sharpify` is a package mainly intended to extend the core language using high performance implementations. The other 2 packages uses `Sharpify` as a dependency. But its core features can be useful in a variety of applications by themselves. +A collection of high performance language extensions for C#, fully compatible with NativeAOT * ⚡ Fully Native AOT compatible * 🤷 `Either` - Discriminated union object that forces handling of both cases * 🦾 Flexible `Result` type that can encapsulate any other type and adds a massage options and a success or failure status. Flexible as it doesn't require any special handling to use (unlike `Either`) * 🏄 Wrapper extensions that simplify use of common functions and advanced features from the `CollectionsMarshal` class * `Routine` and `AsyncRoutine` bring the user easily usable and configurable interval based background job execution. -* `PersistentDictionary` and derived types are super lightweight and efficient serializable dictionaries that are thread-safe and work amazingly for things like configuration files. * `SortedList` bridges the performance of `List` and order assurance of `SortedSet` -* `PersistentDictionary` and variants provide all simple database needs, with perfected performance and optimized concurrency. -* `SerializableObject` and the `Monitored` variant allow persisting an object to the disk, and elegantly synchronizing modifications. +* `Synchronized` is a thread-safe object owner with an optional delegate that can be executed on update. * 💿 `StringBuffer` enables zero allocation, easy to use appending buffer for creation of strings in hot paths. -* `RentedBufferWriter{T}` is an allocation friendly alternative to `ArrayBufferWriter{T}` for hot paths. +* `PooledArrayOwner{T}` is struct based alternative to `IMemoryOwner` with extensions built into the `ArrayPool` class. +* `BufferWrapper{T}` is a ref struct implementation of `IBufferWriter{T}` that wraps a `Span`. * A 🚣🏻 boat load of extension functions for all common types, bridging ease of use and performance. -* `Utils.DateAndTime`, `Utils.Env`, `Utils.Math`, `Utils.Strings` and `Utils.Unsafe` provide uncanny convenience at maximal performance. -* 🧵 `ThreadSafe` makes any variable type thread-safe +* A bunch of utils in `Utils` class. * 🔐 `AesProvider` provides access to industry leading AES-128 encryption with virtually no setup * 🏋️ High performance optimized alternatives to core language extensions -* 🎁 More added features that are not present in the core language -* ❗ Static inner exception throwers guide the JIT to further optimize the code during runtime. * 🫴 Focus on giving the user complete control by using flexible and common types, and resulting types that can be further used and just viewed. -For more information check [inner directory](src/Sharpify/README.md). - -## Sharpify.Data - -`Sharpify.Data` is an extension package, that should be installed on-top of `Sharpify` and adds a high performance persistent key-value-pair database, utilizing [MemoryPack](https://github.com/Cysharp/MemoryPack). The database support multiple types in the same file, 2 stage AES encryption (for whole file and per-key). Filtering by type, Single or Array value per key, and more... - -* `Database` is the base type for the data base, it is key-value-pair based local database - saved on disk. -* `IDatabaseFilter` is an interface which acts as an alternative to `DbContext` and provides enhanced type safety for contexts. -* `MemoryPackDatabaseFilter` is an implementation which focuses on types that implement `IMemoryPackable` from `MemoryPack`. -* `FlexibleDatabaseFilter` is an implementation focusing on types which need custom serialization logic. To use this, you type `T` will need to implement `IFilterable` which has methods for serialization and deserialization of single `T` and `T[]`. If you can choose to implement only one of the two. -* **Concurrency** - `Database` uses highly performant synchronous concurrency models and is completely thread-safe. -* **Disk Usage** - `Database` tracks inner changes and skips serialization if no changes occurred, enabling usage of periodic serialization without resource waste. -* **GC Optimization** - `Database` heavily uses pooling for encryption, decryption, type conversion, serialization and deserialization to minimize GC overhead, very rarely does it allocate single-use memory and only when absolutely necessary. -* **HotPath APIs** - `Database` is optimized for hot paths, as such it provides a number of APIs that specifically combine features for maximum performance and minimal GC overhead. Like the `TryReadToRentedBuffer` methods which is optimized for adding data to a table. -* **Runtime Optimization** - Upon initialization, `Database` chooses specific serializers and deserializers tailored for specific configurations, minimizing the amount of runnable code during runtime that would've been wasted on different checks. +## ⬇ Installation -For more information check [inner directory](src/Sharpify.Data/README.md). +> dotnet add package Sharpify ## Sharpify.CommandLineInterface `Sharpify.CommandLineInterface` is a standalone package that adds a high performance, reflection free and `AOT-ready` framework for creating command line and embedded interfaces -* Maintenance friendly model that depends on classes that implement `Command` or `SynchronousCommand` -* `Arguments` is an abstraction layer over the inputs that validate during runtime according to user needs via convenient APIs. -* Configuration using a fluent builder pattern. -* Configurable output and input pipes, enable usage outside of `Console` apps, supporting embedded use in any application. -* Automatic and structured general and command-specific help text. -* Configurable error handling with defaults. -* Super lightweight +It was moved to its own repo [Sharpify.CommandLineInterface](https://github.com/dusrdev/Sharpify.CommandLineInterface) -For more information check [inner directory](src/Sharpify.CommandLineInterface/README.md) +## ## Methodology diff --git a/src/Sharpify/README.md b/src/Sharpify/README.md deleted file mode 100644 index 3482a20..0000000 --- a/src/Sharpify/README.md +++ /dev/null @@ -1,468 +0,0 @@ -# Sharpify - -A collection of high performance language extensions for C# - -## Why Sharpify? - -Sharpify is a collection of commonly used language extensions, that usually people re-write in each project, This is an alternative where you can use the same convenient functionality, and gain the performance and reliability of using a highly optimized and extensively tested library. Sharpify has minimal footprint and is fully AOT compatible, so it can be used virtually in any project. - -## Features - -* ⚡ Fully Native AOT compatible -* 🤷 `Either` - Discriminated union object that forces handling of both cases -* 🦾 Flexible `Result` type that can encapsulate any other type and adds a massage options and a success or failure status. Flexible as it doesn't require any special handling to use (unlike `Either`) -* 🏄 Wrapper extensions that simplify use of common functions and advanced features from the `CollectionsMarshal` class -* `Routine` and `AsyncRoutine` bring the user easily usable and configurable interval based background job execution. -* `PersistentDictionary` and derived types are super lightweight and efficient serializable dictionaries that are thread-safe and work amazingly for things like configuration files. -* `SortedList` bridges the performance of `List` and order assurance of `SortedSet` -* `PersistentDictionary` and variants provide all simple database needs, with perfected performance and optimized concurrency. -* `SerializableObject` and the `Monitored` variant allow persisting an object to the disk, and elegantly synchronizing modifications. -* 💿 `StringBuffer` enables zero allocation, easy to use appending buffer for creation of strings in hot paths. -* `RentedBufferWriter{T}` is an allocation friendly alternative to `ArrayBufferWriter{T}` for hot paths. -* A 🚣🏻 boat load of extension functions for all common types, bridging ease of use and performance. -* `Utils.DateAndTime`, `Utils.Env`, `Utils.Math`, `Utils.Strings` and `Utils.Unsafe` provide uncanny convenience at maximal performance. -* 🧵 `ThreadSafe` makes any variable type thread-safe -* 🔐 `AesProvider` provides access to industry leading AES-128 encryption with virtually no setup -* 🏋️ High performance optimized alternatives to core language extensions -* 🎁 More added features that are not present in the core language -* ❗ Static inner exception throwers guide the JIT to further optimize the code during runtime. -* 🫴 Focus on giving the user complete control by using flexible and common types, and resulting types that can be further used and just viewed. - -## Installation - -[![Nuget](https://img.shields.io/nuget/dt/Sharpify?label=Sharpify%20Nuget%20Downloads)](https://www.nuget.org/packages/Sharpify/) -> dotnet add package Sharpify - -## Usage - -### Collection Extensions - -```csharp -bool IsNullOrEmpty(this ICollection? collection); -Span AsSpan(this List list); -ref TValue GetValueRefOrNullRef(this Dictionary dictionary, TKey key) where TKey : notnull {}; -ref TValue? GetValueRefOrAddDefault(this Dictionary dictionary, TKey key, out bool exists) where TKey : notnull {}; -void CopyTo(this Dictionary dict, KeyValuePair[] array, int index) : where TKey : notnull {}; -(KeyValuePair[] rentedBuffer, ArraySegment> entries) RentBufferAndCopyEntries(this Dictionary dict) where TKey : notnull {}; -void ReturnBufferToSharedArrayPool(this T[] arr); -void ReturnBufferToArrayPool(this T[] arr, ArrayPool pool); -T[] PureSort(this T[] source, IComparer comparer); -List PureSort(this IEnumerable source, IComparer comparer); -void RemoveDuplicatesFromSorted(this List list, IComparer comparer); -void RemoveDuplicates(this List list, IEqualityComparer? comparer = null, bool isSorted = false); -void RemoveDuplicates(this List list, out HashSet hSet, IEqualityComparer? comparer = null, bool isSorted = false); -List> ChunkToSegments(this T[] arr, int sizeOfChunk); -int CopyToArray(this HashSet hashSet, T[] destination, int index); -``` - -### Unmanaged Extensions - -```csharp -bool TryParseAsEnum(this string value, out TEnum result) where TEnum : struct, Enum; -``` - -### String Extensions - -```csharp -ref char GetReference(this string text); // Returns actual reference to first character -bool IsNullOrEmpty(this string str); -bool IsNullOrWhiteSpace(this string str); -// Tried to convert the string to int32 using ascii, very efficient -bool TryConvertToInt32(this ReadOnlySpan value, out int result); -// Concat - more efficient than + or interpolation -string Concat(this string value, ReadOnlySpan suffix); -string ToTitle(this string str); -bool IsBinary(this string str); -``` - -### Utils - -Utils is a static class that provides advanced options that wouldn't be straight forward as extensions, it has static subclasses that are classified by their area of operation. - -#### Utils.DateAndTime - -```csharp -// Returns the date time as value task that can be fired and awaited to be later used, removing the need to synchronously wait for it -ValueTask GetCurrentTimeAsync(); -// Same but returns the binary representation -ValueTask GetCurrentTimeInBinaryAsync(); -// Formats time span into a span of characters and returns the written portion -ReadOnlySpan FormatTimeSpan(TimeSpan timeSpan, Span buffer); -// Formats the time span into a string -string FormatTimeSpan(TimeSpan timeSpan); -// Formats the time stamp into a span of characters and returns the written portion -ReadOnlySpan FormatTimeStamp(DateTime time, Span buffer); -// Formats the time stamp into a string -string FormatTimeStamp(DateTime time); -``` - -#### Utils.Env - -```csharp -bool IsRunningOnWindows(); -bool IsRunningAsAdmin(); -string GetBaseDirectory(); -bool IsInternetAvailable; -string PathInBaseDirectory(string filename); // Returns a filename combined with the base directory -void OpenLink(string url); // semi-cross-platform (works on Windows, Mac and Linux) -``` - -#### Utils.Mathematics - -```csharp -double RollingAverage(double oldAverage, double newNumber, int sampleCount); -double Factorial(double n); -double FibonacciApproximation(int n); -``` - -#### Utils.Strings - -```csharp -// Format bytes into to a text containing the largest storage unit with 2 decimals places and the storage unit -// i.e 5.23 MB or 6.77 TB and so on... -string FormatBytes(double bytes); -string FormatBytes(long bytes); -// Formats the bytes in the same format to a buffer and returns the written span -ReadOnlySpan FormatBytes(double bytes, Span buffer); -ReadOnlySpan FormatBytes(long bytes, Span buffer); -``` - -#### Utils.Unsafe - -```csharp -// Creates converts a predicate to a function that returns an integer value 0 or 1 -Func CreateIntegerPredicate(Func predicate); -// Converts a readonly span to a mutable span -unsafe Span AsMutableSpan(ReadOnlySpan span); -// Tries to unbox a valuetype from the heap -bool TryUnbox(object obj, out T value) where T : struct; -``` - -### Union Types - -This library contains 2 discriminate union types, to suit a wide variety of user needs. - -#### 1. `Result` / `Result` - -This type works by having a `bool IsOk` property, a `string Message` and if needed a `T? Value` property. This allows the type to remain the same regardless of error or success, thus it is performs way better than lambda-required-handling types, but is more suited when the consumer knows exactly how it works. - -For example, when the `Result` is a failure, `T? Value` will be `null` this means, that if someone skips the check or tries to access the value when the `Result` is a failure, they will get an exception. - -* Both types are readonly structs but will throw an `InvalidOperation` exception if they are created using a default constructor. The only valid way to create them is using the static factory methods inside `Result`. -* Both `Result` and `Result` also have the methods `.AsTask()` and `.AsValueTask()` that wrap a `Task` or `ValueTask` around them to make them easier to use in non-async `Task` or `ValueTask` methods. -* `Result` has an extension method called `.WithValue(T Value`, which will return a `Result` with the same `Message` and `IsOk` values. However, it is not recommended to use as the performance is worse than the factory methods, and it allows adding a non-`null` `Value` to a failed `Result` which messes with the logic flow. - -#### 2. `Either` - -This type is your usual lambda-required-handling discriminated union type, similar to `OneOf`. However it only has an option for 2 types. - -This type has implicit operators that cast any of `T0` or `T1` to the type, and requires the consumer to either use delegates to get access to each, or to force casting it one type or the other. As with `OneOf` this makes it a little bit safer to use but vastly impacts performance, especially if you need to take the output value of one of them and continue processing it outside the lambda, or if you want to propagate a certain result forward in the code flow. - -### ThreadSafe - -`ThreadSafe` is a special wrapper instance type that can make any other type thread-safe to be used in concurrency. - -It works by having a lock and limiting modification access to a single thread at a time. - -You can access the value any time by using `ThreadSafe.Value`. - -and modify the value using the following method: - -```csharp -public T Modify(Func modificationFunc) -``` - -This both modifies the value and returns the result after modification. - -### AesProvider - -`AesProvider` is a class that implements `IDisposable` and allows very easy usage of AES128. - -#### Static Methods - -```csharp -string GeneratePassword(string password, int iterations = 991); -``` - -This generates a hashed password from a real password. This is useful for storing and verifying account credentials. - -```csharp -bool IsPasswordValid(string password, string hashedPassword); -``` - -This will verify a hashed password against a real password. - -#### Instance Methods - -Constructor: - -```csharp -public AesProvider(string strKey); -``` - -Unlike the base classes of the language, this takes a key in the format of a `string`, and does all the magic of handling length, padding and etc, by itself, so that you only need the key to encrypt or decrypt. - -Remember that this class implements `IDisposable`, make sure to dispose of it properly or use the `using` keyword or block. - -These methods handle regular encryption: - -```csharp -// Encryption -string Encrypt(ReadOnlySpan unencrypted); -string EncryptUrl(string url); -byte[] EncryptBytes(ReadOnlySpan unencrypted); -int EncryptBytes(ReadOnlySpan unencrypted, Span destination); -// Decryption -string Decrypt(string encrypted); -string DecryptUrl(string encryptedUrl); -byte[] DecryptBytes(ReadOnlySpan encrypted, bool throwOnError = false); -int DecryptBytes(ReadOnlySpan encrypted, Span destination, bool throwOnError = false); -``` - -These methods handle base64 encryption (for usage with URLs, filenames and etc.): - -```csharp -string EncryptUrl(string url); -string DecryptUrl(string encryptedUrl); -``` - -For more advanced encryption or decryption you can use these: - -```csharp -ICryptoTransform CreateEncryptor(); -ICryptoTransform CreateDecryptor(); -``` - -These will create an `ICryptoTransform` using the key and configuration from the `AesProvider` instance. You can use it to encrypt and decrypt using streams and many more advanced options. - -`ICryptoTransform` is also implementing `IDisposable` make sure to handle it appropriately. - -### Collections - -Sharpify has multiple custom collections such as: - -#### SortedList{T} - -`SortedList` is a re-implementation of `List` with custom crud operations: - -* Add -> O(log n) -* Remove -> O(log n) -* Get by sorted index O(1) - i.e min is [0] and max is [length - 1], also second max is [length - 2]... -* Option to disallow duplicates - -The `SortedList` also has convenience features, such as `AsSpan`, `Clear` methods, exposure of the `List.Enumerator` which is an efficient struct, and also an implicit operator which can return the inner list in places which require `List` (however be careful as the receiver may use the inner list and it may no longer maintain the features above) - -#### PersistentDictionary - -`PersistentDictionary` is a thread-safe `Dictionary(string key, T value) where T : struct, IConvertible -public virtual async ValueTask UpsertAsync(string key, string value) -// Retrieval -public async ValueTask GetOrCreateAsync(string key, T @default) where T : struct, IParsable -public virtual async ValueTask GetOrCreateAsync(string key, string @default) -``` - -you can also get values with a synchronous operation if you require by using `PersistentDictionary[key]` - -but upsert is not available asynchronously due to the synchronization mechanisms that are used to optimize the concurrency - -To configure the type for usage you can implement the class and it will show you the specific things required to make everything work. In addition, there are 2 built-in implementations: - -* `LocalPersistentDictionary` is an implementation that serializes and restores the dictionary from a local path -* `LazyLocalPersistentDictionary` is an implementation that also serializes and restores the dictionary from a local path, doesn't maintain an in-memory version, allowing it to be garbage collected if it was even created, this is for very memory constrained scenarios. Reading from it, doesn't even create a dictionary. - -#### StringBuffer - -`StringBuffer` is a ref struct that encapsulates a `Span{char}` and allow very efficient appending of characters, strings and other `ISpanFormattable` implementations. It enables usage patterns similar to that of `StringBuilder` but with a much lower memory footprint, and can work on stack allocated buffers. - -It uses internal indexes to properly append elements, requiring no tracking from the user. - -`StringBuffer` is created with a factory method named `Create(Span)` that creates and returns an instance of `StringBuffer` with the specified buffer. - -As it is a `ref struct`, it does have a default constructor, using it will create an instance on an empty buffer, that will throw an exception if you try to append anything to it. Please refrain from using it, it is only public because of compiler limitations. - -##### Appending - -```csharp -ref TBuffer Append(char c); -ref TBuffer Append(ReadOnlySpan str); -ref TBuffer Append(T value, ReadOnlySpan format = default, IFormatProvider? provider = null) where T : ISpanFormattable {} -ref TBuffer AppendLine(); -ref TBuffer AppendLine(char c); -ref TBuffer AppendLine(ReadOnlySpan str); -ref TBuffer AppendLine(T value, ReadOnlySpan format = default, IFormatProvider? provider = null) where T : ISpanFormattable {}; -``` - -All the append methods return a reference to self, this is to enable usage of the builder pattern. - -##### Finalization - -```csharp -// Will return the written portion of the buffer -WrittenSpan; -// Will create a string from the written portion of the buffer while removing end white spaces if they exist -Allocate(bool trimIfShorter, bool trimEndWhiteSpace); -Allocate(bool trimIfShorter); // ~ trimEndWhiteSpace = false -Allocate(); // ~ trimIfShorter = true, trimEndWhiteSpace = false -ToString() // Will call Allocate(true, false) -``` - -##### Example - -```csharp -public string GetHello() { - var buffer = StringBuffer.Create(stackalloc char[50]); - buffer.Append("Hello"); - buffer.Append(' '); - buffer.Append("Everyone"); - buffer.Append('!'); - return buffer.Allocate(); - // We sample text is separated for api showcase. -} -// The returned result will be "Hello Everyone!" -``` - -```csharp -// Example of usage with the builder pattern - similar to StringBuilder -public string GetHello() { - return StringBuffer.Create(stackalloc char[50]) - .Append("Hello") - .Append(' ') - .Append("Everyone") - .Append('!') - .Allocate(); -} -``` - -#### RentedBufferWriter{T} - -`RentedBufferWriter{T}` is an allocation friendly alternative to `ArrayBufferWriter{T}` which implements `IBufferWriter{T}`, an interface that represent a bucket that data can be written to. while it is not a commonly used interface, created to optimize specific hot paths, such as networking and IO pipes, using them is not very straightforward, and while `ArrayBufferWriter{T}` is a rather useful tool for some cases, it's limitation is that it isn't bound to any capacity, thus it always allocates arrays, and when it runs out of space, it allocates bigger arrays to resize, and that puts unneeded pressure of the GC. - -`RentedBufferWriter{T}` fixes this by restricting the capacity at initialization, and renting the buffer from the shared array pool. Note that `SizeHint` in `GetSpan` and `GetMemory` is completely ignored in this implementation as resizing the inner buffer is currently not possible, by design. In case you are not sure what can exact capacity needed is, overestimate, it won't have much negative effects on the shared array pool. - -Aside from implementing the interface `IBufferWriter{T}`, it also explicitly implements `IDisposable` to make sure the inner buffer is returned to the shared array pool after use. And implements many convenience methods and properties, such as: - -```csharp -int ActualCapacity; -int FreeCapacity; -int Position { get; private set; } -ReadOnlySpan WrittenSpan; -ReadOnlyMemory WrittenMemory; -ArraySegment WrittenSegment; -ReadOnlySpan GetSpanSlice(int start, int length); -ReadOnlyMemory GetMemorySlice(int start, int length); -void Advance(int count); -bool WriteAndAdvance(T item); -bool WriteAndAdvance(ReadOnlySpan data); -void Reset(); -T[] Buffer; // Which returns the instance of the inner buffer, be careful with this. -ref T[] GetReferenceUnsafe(); // returns the reference for the inner buffer, be extra careful with this -``` - -### Routines - -Routines are special objects that contain a collection of actions and executes them once a specified interval has passed, until it is stopped. This was inspired by Coroutines from the Unity game engine. - -#### Routine - -The default `Routine` is the simplest version, it has a collection of `Action`s and once every timer interval has passed they get executed sequentially. - -#### AsyncRoutine - -`AsyncRoutine` is more complicated but more precise and flexible, by providing a `CancellationTokenSource`, the `AsyncRoutine` can create tasks that will all run only while the source isn't cancelled. - -In addition it can be initialized with a `RoutineOptions` that configures 2 important parameters: - -1. `ThrowOnCancellation` will cause an exception to be thrown when the source is cancelled, if left out, the routine will gracefully cancel all the tasks and exit quietly. -2. `ExecuteInParallel` will configure the routine to execute the tasks concurrently and not sequentially which is the default. - -### Special Types - -#### SerializableObject{T} - -`SerializableObject{T}` is a wrapper around a reference or value type, that will serialize the inner value to a file, monitor the file to synchronize external changes, and notify of changes via an `OnChanged` event. - -The simplest use-case of this is for example you create a `record` for your app settings, which then enables each setting to be type safe and specific. Then when you change it from code. - -A `JsonTypeInfo` for the type is required, it will makes it more performant and AOT compatible. - -##### Initialization - -```csharp -new SerializableObject(string path, T defaultValue, JsonTypeInfo jsonTypeInfo); -new SerializableObject(string path, JsonTypeInfo jsonTypeInfo); // uses the other constructor with the default{T} -``` - -The constructor first validates the path, if the directory doesn't exist or filename is empty, it will throw a `IOException`, if the file doesn't exist, or the contents of the file are empty, it will serialize the default value to the file, otherwise it will deserialize from the file or set to the default if it fails. - -In case you never created a `JsonSerializerContext`, this is how: -imagine for the example that the object type is `Configuration` - -```csharp -// This needs to be under the namespace, it cannot be a nested class. -[JsonSourceGenerationOptions(WriteIndented = true)] // Optional -[JsonSerializable(typeof(Configuration))] -internal partial class JsonContext : JsonSerializerContext { } -// The source generator will take care of everything. - -// Now an example of creating the object -public static readonly SerializableObject Config = new(_path, JsonContext.Default.Configuration); -// Notice how we passed the JsonContext -``` - -##### Modification - -```csharp -void Modify(Func modifier) -``` - -Modification is done using a function, this is to both enable an experience similar to `options` and to make it work with `struct`s because they are value types. - -```csharp -Modify(person => { - person.Name = "New"; - return person; -}); // Simple change that will work with reference types or value types -// If person was a record, it is even easier -Modify(person => person with { Name = "New" }); -``` - -##### Subscribing And Notifications - -The event that notifies for changes is `OnChanged`, and you need to subscribe to it with a signature of `void Function(object sender, SerializedObjectEventArgs e)`, this is a special event args implementation that will contain the new value after the change. an anonymous function with the same parameters is also accepted. - -For example: - -```csharp -var serializedObj = new SerializableObject(path, new Person { Name = "Dave" }, JsonSerializerContext.Default.Person); -monitoredObj.OnChanged += OnValueChanged - -private void OnValueChanged(object sender, SerializedObjectEventArgs e) { - Console.WriteLine($"The new name is {e.Value.Name}"); -} -``` - -This basically concludes the general usage. - -#### MonitoredSerializableObject{T} - -`MonitoredSerializableObject{T}` is an extension of `SerializableObject{T}` which adds functionality of watching the filesystem to synchronize external changes, usage is basically identical except `MonitoredSerializableObject{T}` also implements `IDisposable` to release the resources of the file system watcher. - -### Notes - -* In order to avoid file writing exceptions, `Modify` is synchronized using a lock, to only be performed by a single thread at a time. -* There is also an internal mechanism that should prevent deserialization after internal modification in order to reduce io operations and redundant value updates. -* Both variants of `SerializableObject{T}` implement `IDisposable` and should be disposed of properly, but their main use-case is to be initialized once and used throughout the lifetime of the application, so this isn't absolutely crucial, and they both implement a finalizer that will dispose of the resources anyway. - -## Contact - -For bug reports, feature requests or offers of support/sponsorship contact - -> This project is proudly made in Israel 🇮🇱 for the benefit of mankind. From d67edd73668d29c4cc19fa8d0e884e5baca17d2d Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Tue, 18 Nov 2025 20:55:10 +0200 Subject: [PATCH 23/26] Address errors --- CHANGELOG.md | 15 ++++++++ src/Sharpify/CHANGELOG.md => VERSIONS.md | 0 src/Sharpify/AesProvider.cs | 3 +- src/Sharpify/Build.txt | 10 ------ src/Sharpify/CHANGELOGLATEST.md | 8 ----- src/Sharpify/Collections/BufferWrapper{T}.cs | 8 +++++ src/Sharpify/Collections/SortedList.cs | 36 +++++++++++--------- src/Sharpify/Collections/StringBuffer.cs | 6 +++- src/Sharpify/Either.cs | 4 +-- src/Sharpify/PooledArrayOwner.cs | 2 +- src/Sharpify/Routines/AsyncRoutine.cs | 3 +- src/Sharpify/Routines/Routine.cs | 3 +- src/Sharpify/Sharpify.csproj | 36 +++++++++++++++++--- src/Sharpify/UnsafeSpanAccessor.cs | 4 +++ src/Sharpify/UtilsDateAndTime.cs | 2 +- 15 files changed, 93 insertions(+), 47 deletions(-) create mode 100644 CHANGELOG.md rename src/Sharpify/CHANGELOG.md => VERSIONS.md (100%) delete mode 100644 src/Sharpify/Build.txt delete mode 100644 src/Sharpify/CHANGELOGLATEST.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..fd41f5b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,15 @@ +# CHANGELOG + +* Only .NET 10+ support. +* Some computed properties in `BufferWrapper{T}` were made `readonly` to hint the compiler to not create defensive copies. +* `PersistentDictionary` in all of its variants have been removed - used `ArrowDb` instead. +* `SerializableObject`, `MonitoredSerializableObject` and `ThreadSafe` have all been combined into `Synchronized` which is much simpler, more performant. But can be more manual as it isn't coupled with `File.IO`. Instead it provides a delegate that can be provided and called on update. +* `Collections.IsNullOrEmpty` and all the other alias functions for `CollectionsMarshal` have been removed. +* `Utils` subclasses have been flattened and all the contents will reside directly in `Utils`. + * `Strings.FormatBytes` have been removed + * `Path` utilities were also removed - use `AppContext` instead. + * `String.IsNullOrEmpty|IsNullOrWhiteSpace|Concat` were also removed to enforce build-in language features. + * `TryConvertFromTo32` was also removed - `int.Parse|TryParse` are more than fast enough now. +* A struct `PooledArrayOwner{T}` was added to rent arrays from `ArrayPool{T}` without additional penalties. + * Extensions to match were added to any `ArrayPool{T}` including `Shared`, they allow you to get the owner and the array at the same time. `using var owner = ArrayPool{T}.Shared.Rent(minLength, out T[] array);` + * You can then proceed to use `BufferWrapper{T}.Create(array)` to get an `IBufferWriter` implementation over it. diff --git a/src/Sharpify/CHANGELOG.md b/VERSIONS.md similarity index 100% rename from src/Sharpify/CHANGELOG.md rename to VERSIONS.md diff --git a/src/Sharpify/AesProvider.cs b/src/Sharpify/AesProvider.cs index 8318e48..c5c9e97 100644 --- a/src/Sharpify/AesProvider.cs +++ b/src/Sharpify/AesProvider.cs @@ -1,4 +1,5 @@ using System.Buffers; +using System.Globalization; using System.Security.Cryptography; using System.Text; @@ -89,7 +90,7 @@ public static bool IsPasswordValid(string password, string hashedPassword) { hpSpan.Split(parts, '|', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); ReadOnlySpan origSalt = Convert.FromBase64String(hashedPassword[parts[0]]); - var origIterations = int.Parse(hpSpan[parts[1]]); + var origIterations = int.Parse(hpSpan[parts[1]], NumberStyles.Integer, CultureInfo.CurrentCulture); ReadOnlySpan origHash = hashedPassword[parts[2]]; //generate hash from test password and original salt and iterations diff --git a/src/Sharpify/Build.txt b/src/Sharpify/Build.txt deleted file mode 100644 index b25b581..0000000 --- a/src/Sharpify/Build.txt +++ /dev/null @@ -1,10 +0,0 @@ -nuget: -dotnet clean -c Release -dotnet build -c Release -dotnet pack -c Release -p:SignAssembly="" - -dll: -dotnet build -c Release -p:SignAssembly="" - -docs: -git subtree push --prefix docs https://github.com/dusrdev/Sharpify.wiki.git master diff --git a/src/Sharpify/CHANGELOGLATEST.md b/src/Sharpify/CHANGELOGLATEST.md deleted file mode 100644 index 308d1f7..0000000 --- a/src/Sharpify/CHANGELOGLATEST.md +++ /dev/null @@ -1,8 +0,0 @@ -# CHANGELOG - -## v2.5.0 - -* Updated to support .NET 9.0 and optimized certain methods to use .NET 9 specific API's wherever possible. -* Added `BufferWrapper` which can be used to append items to a `Span` without managing indexes and capacity. This buffer also implement `IBufferWriter`, and as a `ref struct implementing an interface` it is only available on .NET 9.0 and above. -* `Utils.String.FormatBytes` now uses a much larger buffer size of 512 chars by default, to handle the edge case of `double.MaxValue` which would previously cause an `ArgumentOutOfRangeException` to be thrown or similarly any number of bytes that would be bigger than 1024 petabytes. The result will now also include thousands separators to improve readability. - * The inner implementation that uses this buffer size is pooled so this should not have any impact on performance. diff --git a/src/Sharpify/Collections/BufferWrapper{T}.cs b/src/Sharpify/Collections/BufferWrapper{T}.cs index 28d1a20..930eaf0 100644 --- a/src/Sharpify/Collections/BufferWrapper{T}.cs +++ b/src/Sharpify/Collections/BufferWrapper{T}.cs @@ -11,7 +11,11 @@ namespace Sharpify.Collections; /// /// The total length of the buffer. /// +#pragma warning disable CA1051 // Do not declare visible instance fields + public readonly int Length; +#pragma warning restore CA1051 // Do not declare visible instance fields + /// /// The current position of the buffer. @@ -21,7 +25,11 @@ namespace Sharpify.Collections; /// /// Initializes a string buffer that uses a pre-allocated buffer (potentially from the stack). /// +#pragma warning disable CA1000 // Do not declare static members on generic types + public static BufferWrapper Create(Span buffer) => new(buffer); +#pragma warning restore CA1000 // Do not declare static members on generic types + /// /// Represents a mutable interface over a buffer allocated in memory. diff --git a/src/Sharpify/Collections/SortedList.cs b/src/Sharpify/Collections/SortedList.cs index 3686225..49df1ee 100644 --- a/src/Sharpify/Collections/SortedList.cs +++ b/src/Sharpify/Collections/SortedList.cs @@ -7,23 +7,27 @@ namespace Sharpify.Collections; /// /// The type of elements in the list. public class SortedList : IReadOnlyList { - /// - /// The underlying list used for storing elements in the SortedList. - /// - protected readonly List _list; - /// - /// The comparer used to compare elements in the sorted list. - /// - protected readonly IComparer _comparer; - /// - /// Gets a value indicating whether the SortedList allows duplicate elements. - /// - protected readonly bool _allowDuplicates; + /// + /// The underlying list used for storing elements in the SortedList. + /// +#pragma warning disable CA1051 // Do not declare visible instance fields + protected readonly List _list; + /// + /// The comparer used to compare elements in the sorted list. + /// - /// - /// Initializes a new instance of the class that is empty, has the default initial capacity, and uses the default comparer for the element type. - /// - public SortedList() : this(null, Comparer.Default, false) { } + protected readonly IComparer _comparer; + /// + /// Gets a value indicating whether the SortedList allows duplicate elements. + /// + + protected readonly bool _allowDuplicates; +#pragma warning restore CA1051 // Do not declare visible instance fields + + /// + /// Initializes a new instance of the class that is empty, has the default initial capacity, and uses the default comparer for the element type. + /// + public SortedList() : this(null, Comparer.Default, false) { } /// /// Initializes a new instance of the class that contains elements copied from the specified collection diff --git a/src/Sharpify/Collections/StringBuffer.cs b/src/Sharpify/Collections/StringBuffer.cs index 9d260f6..3b88483 100644 --- a/src/Sharpify/Collections/StringBuffer.cs +++ b/src/Sharpify/Collections/StringBuffer.cs @@ -10,7 +10,11 @@ public unsafe ref struct StringBuffer { /// /// The total length of the buffer. /// +#pragma warning disable CA1051 // Do not declare visible instance fields + public readonly int Length; +#pragma warning restore CA1051 // Do not declare visible instance fields + /// /// The current position of the buffer. @@ -76,7 +80,7 @@ public ref StringBuffer Append(ReadOnlySpan str) { public ref StringBuffer Append(T value, ReadOnlySpan format = default, IFormatProvider? provider = null) where T : ISpanFormattable { bool appended = value.TryFormat(_buffer.Slice(Position), out var charsWritten, format, provider); if (!appended) { - throw new ArgumentOutOfRangeException(nameof(Length)); + throw new ArgumentOutOfRangeException(nameof(value), "Value did not fit into the buffer."); } Position += charsWritten; return ref this; diff --git a/src/Sharpify/Either.cs b/src/Sharpify/Either.cs index 14816c2..c06d5ec 100644 --- a/src/Sharpify/Either.cs +++ b/src/Sharpify/Either.cs @@ -10,12 +10,12 @@ public readonly record struct Either { /// /// Checks if the value is T0. /// - public readonly bool IsT0; + public bool IsT0 { get; } /// /// Checks if the value is T1. /// - public readonly bool IsT1; + public bool IsT1 { get; } /// /// Gets the value as T0. diff --git a/src/Sharpify/PooledArrayOwner.cs b/src/Sharpify/PooledArrayOwner.cs index e857fea..753333f 100644 --- a/src/Sharpify/PooledArrayOwner.cs +++ b/src/Sharpify/PooledArrayOwner.cs @@ -13,7 +13,7 @@ public partial struct PooledArrayOwner : IDisposable { /// /// The rented array held by this object. /// - public readonly T[] Value; + public T[] Value { get; private set; } internal PooledArrayOwner(ArrayPool pool, int minimumLength) { _pool = pool; diff --git a/src/Sharpify/Routines/AsyncRoutine.cs b/src/Sharpify/Routines/AsyncRoutine.cs index f0d2137..c07fa40 100644 --- a/src/Sharpify/Routines/AsyncRoutine.cs +++ b/src/Sharpify/Routines/AsyncRoutine.cs @@ -18,7 +18,7 @@ public class AsyncRoutine : IDisposable { /// /// List of asynchronous actions to be executed. /// - public readonly List> Actions = []; + public List> Actions { get; private set; } /// /// Initializes a new instance of the class with the specified interval, options, and cancellation token source. @@ -27,6 +27,7 @@ public class AsyncRoutine : IDisposable { /// The options to configure the behavior of the routine. /// The cancellation token source used to cancel the routine. public AsyncRoutine(TimeSpan interval, RoutineOptions options, CancellationTokenSource cancellationTokenSource) { + Actions = []; _options = options; _timer = new PeriodicTimer(interval); _isRunning = true; diff --git a/src/Sharpify/Routines/Routine.cs b/src/Sharpify/Routines/Routine.cs index d67b1a6..2bd1c98 100644 --- a/src/Sharpify/Routines/Routine.cs +++ b/src/Sharpify/Routines/Routine.cs @@ -10,13 +10,14 @@ public class Routine : IDisposable { /// /// List of actions to be executed by the routine. /// - public readonly List Actions = []; + public List Actions { get; private set; } /// /// Initializes a new instance of the class with the specified interval. /// /// The time interval between timer events, in milliseconds. public Routine(double intervalInMilliseconds) { + Actions = []; _timer = new System.Timers.Timer(intervalInMilliseconds); _timer.Elapsed += OnTimerElapsed; } diff --git a/src/Sharpify/Sharpify.csproj b/src/Sharpify/Sharpify.csproj index 8eca60e..6109c25 100644 --- a/src/Sharpify/Sharpify.csproj +++ b/src/Sharpify/Sharpify.csproj @@ -8,8 +8,6 @@ true David Shnayder David Shnayder - MIT - CHANGELOGLATEST.md True Sharpify A collection of high performance language extensions for C# @@ -21,11 +19,39 @@ true false true + + true + true + true + latest-recommended + true + + David Shnayder + David Shnayder + True + + README.md + MIT - - - + + + + portable + true + + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + + + + + + + + + + + diff --git a/src/Sharpify/UnsafeSpanAccessor.cs b/src/Sharpify/UnsafeSpanAccessor.cs index 2153a78..b158833 100644 --- a/src/Sharpify/UnsafeSpanAccessor.cs +++ b/src/Sharpify/UnsafeSpanAccessor.cs @@ -17,7 +17,11 @@ namespace Sharpify; /// /// The length of the span /// +#pragma warning disable CA1051 // Do not declare visible instance fields + public readonly int Length; +#pragma warning restore CA1051 // Do not declare visible instance fields + /// /// Creates a new instance of over the specified span. diff --git a/src/Sharpify/UtilsDateAndTime.cs b/src/Sharpify/UtilsDateAndTime.cs index b829327..380e210 100644 --- a/src/Sharpify/UtilsDateAndTime.cs +++ b/src/Sharpify/UtilsDateAndTime.cs @@ -24,7 +24,7 @@ public static ReadOnlySpan FormatTimeStamp(DateTime time, Span buffe /// /// Returns formatted as /// - public static string FormatTimeStamp(DateTime time) => time.ToString(TimeStampFormat); + public static string FormatTimeStamp(DateTime time) => time.ToString(TimeStampFormat, CultureInfo.CurrentCulture); /// /// Returns a of the remaining time based on and . From 1641cca6b4bbe4c7001dc02616bd9061d944a93b Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Tue, 18 Nov 2025 20:56:41 +0200 Subject: [PATCH 24/26] Update workflow --- .github/workflows/Tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Tests.yaml b/.github/workflows/Tests.yaml index af197c4..2b71411 100644 --- a/.github/workflows/Tests.yaml +++ b/.github/workflows/Tests.yaml @@ -13,5 +13,5 @@ jobs: uses: dusrdev/actions/.github/workflows/reusable-dotnet-test-mtp.yaml@main with: platform: ${{ matrix.platform }} - dotnet-version: 9.0.x + dotnet-version: 10.0.x test-project-path: tests/Sharpify.Tests/Sharpify.Tests.csproj \ No newline at end of file From 4d74619a5b7bff0ff2c83e5485009d9c1f68edd9 Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Tue, 18 Nov 2025 21:01:43 +0200 Subject: [PATCH 25/26] Fixed readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 1c7be62..84239de 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,6 @@ A collection of high performance language extensions for C#, fully compatible wi * ⚡ Fully Native AOT compatible * 🤷 `Either` - Discriminated union object that forces handling of both cases * 🦾 Flexible `Result` type that can encapsulate any other type and adds a massage options and a success or failure status. Flexible as it doesn't require any special handling to use (unlike `Either`) -* 🏄 Wrapper extensions that simplify use of common functions and advanced features from the `CollectionsMarshal` class * `Routine` and `AsyncRoutine` bring the user easily usable and configurable interval based background job execution. * `SortedList` bridges the performance of `List` and order assurance of `SortedSet` * `Synchronized` is a thread-safe object owner with an optional delegate that can be executed on update. From f38ffbe3a26d1361a296052264eb71b642125a2e Mon Sep 17 00:00:00 2001 From: David Shnayder Date: Tue, 18 Nov 2025 21:04:03 +0200 Subject: [PATCH 26/26] Update version --- src/Sharpify/Sharpify.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Sharpify/Sharpify.csproj b/src/Sharpify/Sharpify.csproj index 6109c25..fb9c44e 100644 --- a/src/Sharpify/Sharpify.csproj +++ b/src/Sharpify/Sharpify.csproj @@ -3,7 +3,7 @@ net10.0 enable preview - 3.0.0 + 3.0.1 enable true David Shnayder