diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 2dd9e88..b031871 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "fantomas": { - "version": "6.3.10", + "version": "6.3.15", "commands": [ "fantomas" ] diff --git a/PureGym.App/PureGym.App.fsproj b/PureGym.App/PureGym.App.fsproj index 47875b3..14526d3 100644 --- a/PureGym.App/PureGym.App.fsproj +++ b/PureGym.App/PureGym.App.fsproj @@ -3,7 +3,7 @@ Exe net9.0 - all + all true @@ -26,8 +26,8 @@ - - + + diff --git a/PureGym.Test/PureGym.Test.fsproj b/PureGym.Test/PureGym.Test.fsproj index 13576a8..6ebec91 100644 --- a/PureGym.Test/PureGym.Test.fsproj +++ b/PureGym.Test/PureGym.Test.fsproj @@ -14,12 +14,12 @@ - + - - - - + + + + diff --git a/PureGym.Test/TestJson.fs b/PureGym.Test/TestJson.fs index f706433..c69f6c0 100644 --- a/PureGym.Test/TestJson.fs +++ b/PureGym.Test/TestJson.fs @@ -201,7 +201,7 @@ module TestJson = { Description = "65" TotalPeopleInGym = 65 - TotalPeopleInClasses = 2 + TotalPeopleInClasses = Some 2 TotalPeopleSuffix = None IsApproximate = false AttendanceTime = diff --git a/PureGym/Dto.fs b/PureGym/Dto.fs index 0ee7a25..73209c2 100644 --- a/PureGym/Dto.fs +++ b/PureGym/Dto.fs @@ -187,8 +187,7 @@ type GymAttendance = [] TotalPeopleInGym : int /// How many people are in classes at the gym as of this statistics snapshot - [] - TotalPeopleInClasses : int + TotalPeopleInClasses : int option /// E.g. " or fewer" TotalPeopleSuffix : string option /// Whether the number of people in the gym is approximate. This appears to become true when the number @@ -219,10 +218,10 @@ type GymAttendance = $" out of %i{this.MaximumCapacity} maximum" let classes = - if this.TotalPeopleInClasses = 0 then - "" - else - $"\n%i{this.TotalPeopleInClasses} in classes" + match this.TotalPeopleInClasses with + | None + | Some 0 -> "" + | Some totalPeopleInClasses -> $"\n%i{totalPeopleInClasses} in classes" $"""%i{this.TotalPeopleInGym}%s{totalPeopleSuffix} in gym%s{capacity} (is exact: %c{Char.emoji (not this.IsApproximate)})%s{classes} Query made at %s{this.AttendanceTime.ToString "s"}%s{this.AttendanceTime.ToString "zzz"} diff --git a/PureGym/GeneratedClient.fs b/PureGym/GeneratedClient.fs index 8ca3cef..70ffd95 100644 --- a/PureGym/GeneratedClient.fs +++ b/PureGym/GeneratedClient.fs @@ -97,7 +97,7 @@ module PureGymApi = | v -> v), System.Uri ( "v1/gyms/{gym_id}/attendance" - .Replace ("{gym_id}", gymId.ToString () |> System.Web.HttpUtility.UrlEncode), + .Replace ("{gym_id}", gymId.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) @@ -133,7 +133,7 @@ module PureGymApi = | v -> v), System.Uri ( "v1/gyms/{gym_id}" - .Replace ("{gym_id}", gymId.ToString () |> System.Web.HttpUtility.UrlEncode), + .Replace ("{gym_id}", gymId.ToString () |> System.Uri.EscapeDataString), System.UriKind.Relative ) ) @@ -206,9 +206,9 @@ module PureGymApi = else "?") + "fromDate=" - + ((fromDate.ToString "yyyy-MM-dd") |> System.Web.HttpUtility.UrlEncode) + + ((fromDate.ToString "yyyy-MM-dd") |> System.Uri.EscapeDataString) + "&toDate=" - + ((toDate.ToString "yyyy-MM-dd") |> System.Web.HttpUtility.UrlEncode)), + + ((toDate.ToString "yyyy-MM-dd") |> System.Uri.EscapeDataString)), System.UriKind.Relative ) ) diff --git a/PureGym/GeneratedDto.fs b/PureGym/GeneratedDto.fs index 5a6d4fc..868836a 100644 --- a/PureGym/GeneratedDto.fs +++ b/PureGym/GeneratedDto.fs @@ -645,16 +645,9 @@ module GymAttendance = | v -> v.AsValue().GetValue () |> Some let arg_2 = - (match node.["totalPeopleInClasses"] with - | null -> - raise ( - System.Collections.Generic.KeyNotFoundException ( - sprintf "Required key '%s' not found on JSON object" ("totalPeopleInClasses") - ) - ) - | v -> v) - .AsValue() - .GetValue () + match node.["totalPeopleInClasses"] with + | null -> None + | v -> v.AsValue().GetValue () |> Some let arg_1 = (match node.["totalPeopleInGym"] with diff --git a/PureGym/PureGym.fsproj b/PureGym/PureGym.fsproj index da0822b..3981a88 100644 --- a/PureGym/PureGym.fsproj +++ b/PureGym/PureGym.fsproj @@ -7,7 +7,7 @@ NU1901;NU1902;NU1903;NU1904 FS3559 - 2.1.53 + 4.0.9 @@ -36,10 +36,10 @@ - + - + diff --git a/PureGym/SurfaceBaseline.txt b/PureGym/SurfaceBaseline.txt index e3b8561..1520d43 100644 --- a/PureGym/SurfaceBaseline.txt +++ b/PureGym/SurfaceBaseline.txt @@ -92,7 +92,7 @@ PureGym.GymAddress.Town [property]: [read-only] string PureGym.GymAddressModule inherit obj PureGym.GymAddressModule.jsonParse [static method]: System.Text.Json.Nodes.JsonNode -> PureGym.GymAddress PureGym.GymAttendance inherit obj, implements PureGym.GymAttendance System.IEquatable, System.Collections.IStructuralEquatable, PureGym.GymAttendance System.IComparable, System.IComparable, System.Collections.IStructuralComparable -PureGym.GymAttendance..ctor [constructor]: (string, int, int, string option, bool, System.DateTime, System.DateTime, System.DateTime, int) +PureGym.GymAttendance..ctor [constructor]: (string, int, int option, string option, bool, System.DateTime, System.DateTime, System.DateTime, int) PureGym.GymAttendance.AttendanceTime [property]: [read-only] System.DateTime PureGym.GymAttendance.Description [property]: [read-only] string PureGym.GymAttendance.Equals [method]: (PureGym.GymAttendance, System.Collections.IEqualityComparer) -> bool @@ -102,14 +102,14 @@ PureGym.GymAttendance.get_IsApproximate [method]: unit -> bool PureGym.GymAttendance.get_LastRefreshed [method]: unit -> System.DateTime PureGym.GymAttendance.get_LastRefreshedPeopleInClasses [method]: unit -> System.DateTime PureGym.GymAttendance.get_MaximumCapacity [method]: unit -> int -PureGym.GymAttendance.get_TotalPeopleInClasses [method]: unit -> int +PureGym.GymAttendance.get_TotalPeopleInClasses [method]: unit -> int option PureGym.GymAttendance.get_TotalPeopleInGym [method]: unit -> int PureGym.GymAttendance.get_TotalPeopleSuffix [method]: unit -> string option PureGym.GymAttendance.IsApproximate [property]: [read-only] bool PureGym.GymAttendance.LastRefreshed [property]: [read-only] System.DateTime PureGym.GymAttendance.LastRefreshedPeopleInClasses [property]: [read-only] System.DateTime PureGym.GymAttendance.MaximumCapacity [property]: [read-only] int -PureGym.GymAttendance.TotalPeopleInClasses [property]: [read-only] int +PureGym.GymAttendance.TotalPeopleInClasses [property]: [read-only] int option PureGym.GymAttendance.TotalPeopleInGym [property]: [read-only] int PureGym.GymAttendance.TotalPeopleSuffix [property]: [read-only] string option PureGym.GymAttendanceModule inherit obj diff --git a/PureGym/version.json b/PureGym/version.json index 8589316..1d73455 100644 --- a/PureGym/version.json +++ b/PureGym/version.json @@ -1,5 +1,5 @@ { - "version": "5.1", + "version": "6.0", "publicReleaseRefSpec": [ "^refs/heads/main$" ], diff --git a/flake.lock b/flake.lock index 7e47444..396ec32 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732521221, - "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=", + "lastModified": 1734649271, + "narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d", + "rev": "d70bd19e0a38ad4790d3913bf08fcbfc9eeca507", "type": "github" }, "original": { diff --git a/nix/deps.nix b/nix/deps.nix index fe1d574..e6e09a4 100644 --- a/nix/deps.nix +++ b/nix/deps.nix @@ -1,25 +1,36 @@ # This file was automatically generated by passthru.fetch-deps. # Please dont edit it manually, your changes might get overwritten! +# TODO: This format file is obsolete, consider migrating to JSON. {fetchNuGet}: [ - (fetchNuGet { - pname = "fantomas"; - version = "6.3.10"; - hash = "sha256-2m4YevDp9CRm/Ci2hguDXd6DUMElRg3hNAne9LHntWM="; - }) (fetchNuGet { pname = "ApiSurface"; - version = "4.0.43"; - hash = "sha256-CO5a0ZCWvD4fZXQL9l0At0y0vqmN3TT2+TuUw4ZNoC8="; + version = "4.1.15"; + hash = "sha256-E0J62c/viqvVBvBA5lBPG90BgPCrA6+cS/h4MZjKz+k="; }) (fetchNuGet { pname = "Argu"; + version = "6.2.5"; + hash = "sha256-5HcZcvco4e8+hgLhzlxk7ZmFVLtZL9LVr7LbmXsLmNU="; + }) + (fetchNuGet { + pname = "fantomas"; + version = "6.3.15"; + hash = "sha256-Gjw7MxjUNckMWSfnOye4UTe5fZWnor6RHCls3PNsuG8="; + }) + (fetchNuGet { + pname = "Fantomas.Core"; version = "6.1.1"; - hash = "sha256-tA9nFJmWvoSOo8oFV6wUuatG57a3QSW0jxADc8AzKe0="; + hash = "sha256-FcTLHQFvKkQY/kV08jhhy/St/+FmXpp3epp/R3zUXMA="; + }) + (fetchNuGet { + pname = "Fantomas.FCS"; + version = "6.1.1"; + hash = "sha256-NuZ8msPEHYA8T3EYREB28F1RcNgUU8V54eg2+UttYxw="; }) (fetchNuGet { pname = "Fastenshtein"; - version = "1.0.0.8"; - hash = "sha256-4i7VLguEy4TuClL1/33xlzkiRGZ7SxCRsWLh8/MRfOc="; + version = "1.0.10"; + hash = "sha256-9qE1zKJhfRvx7X/66MAk2+F7pwrd/2EKKl7r5qjTPCk="; }) (fetchNuGet { pname = "FsCheck"; @@ -28,19 +39,24 @@ }) (fetchNuGet { pname = "FSharp.Core"; - version = "4.3.2"; - hash = "sha256-UuzjOUvDAWxQuwI9mMJ5Jd9mwtfYSK7KUhW8wNbbZak="; + version = "4.3.4"; + hash = "sha256-styyo+6mJy+yxE0NZG/b1hxkAjPOnJfMgd9zWzCJ5uk="; }) (fetchNuGet { pname = "FSharp.Core"; - version = "4.3.4"; - hash = "sha256-styyo+6mJy+yxE0NZG/b1hxkAjPOnJfMgd9zWzCJ5uk="; + version = "4.5.0"; + hash = "sha256-7+B+8rsm/dMKvNBty8z5qB+kOxMwUzExy0F04xM88sk="; }) (fetchNuGet { pname = "FSharp.Core"; version = "5.0.2"; hash = "sha256-YOoosLEiszPsOOaNAkWhFGU04JJKDOFVoA/ggrZMN10="; }) + (fetchNuGet { + pname = "FSharp.Core"; + version = "6.0.0"; + hash = "sha256-aQDRgiGC7iTyzNEmvyd2RBCDcLG0I1dbfncHlkbeUMI="; + }) (fetchNuGet { pname = "FSharp.Core"; version = "6.0.1"; @@ -48,8 +64,8 @@ }) (fetchNuGet { pname = "FsUnit"; - version = "6.0.0"; - hash = "sha256-q87WQf6MqGhzvaQ7WkkUlCdoE94DY0CD5PaXEj64A6M="; + version = "7.0.0"; + hash = "sha256-eoHwX2wPrmP8Wgq2v91tWJvQG+5v4iNYG5jMLPwKXNc="; }) (fetchNuGet { pname = "Microsoft.AspNetCore.App.Ref"; @@ -78,13 +94,13 @@ }) (fetchNuGet { pname = "Microsoft.CodeCoverage"; - version = "17.10.0"; - hash = "sha256-yQFwqVChRtIRpbtkJr92JH2i+O7xn91NGbYgnKs8G2g="; + version = "17.12.0"; + hash = "sha256-lGjifppD0OBMBp28pjUfPipaeXg739n8cPhtHWoo5RE="; }) (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; - version = "17.10.0"; - hash = "sha256-rkHIqB2mquNXF89XBTFpUL2z5msjTBsOcyjSBCh36I0="; + version = "17.12.0"; + hash = "sha256-DKFEbhh2wPzahNeHdEoFig8tZh/LEVrFc5+zpT43Btg="; }) (fetchNuGet { pname = "Microsoft.NETCore.App.Host.linux-arm64"; @@ -131,20 +147,45 @@ version = "6.0.36"; hash = "sha256-0xIJYFzxdMcnCj3wzkFRQZSnQcPHzPHMzePRIOA3oJs="; }) + (fetchNuGet { + pname = "Microsoft.NETCore.Platforms"; + version = "1.1.0"; + hash = "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Platforms"; + version = "1.1.1"; + hash = "sha256-8hLiUKvy/YirCWlFwzdejD2Db3DaXhHxT7GSZx/znJg="; + }) (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.0.0"; hash = "sha256-IEvBk6wUXSdyCnkj6tHahOJv290tVVT8tyemYcR0Yro="; }) + (fetchNuGet { + pname = "Microsoft.NETCore.Targets"; + version = "1.1.0"; + hash = "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ="; + }) + (fetchNuGet { + pname = "Microsoft.NETCore.Targets"; + version = "1.1.3"; + hash = "sha256-WLsf1NuUfRWyr7C7Rl9jiua9jximnVvzy6nk2D2bVRc="; + }) (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; - version = "17.10.0"; - hash = "sha256-3YjVGK2zEObksBGYg8b/CqoJgLQ1jUv4GCWNjDhLRh4="; + version = "17.12.0"; + hash = "sha256-3XBHBSuCxggAIlHXmKNQNlPqMqwFlM952Av6RrLw1/w="; }) (fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; - version = "17.10.0"; - hash = "sha256-+yzP3FY6WoOosSpYnB7duZLhOPUZMQYy8zJ1d3Q4hK4="; + version = "17.12.0"; + hash = "sha256-rf8Sh0fQq44Sneuvs64unkkIHg8kOjDGWE35j9iLx5I="; + }) + (fetchNuGet { + pname = "Myriad.Core"; + version = "0.8.3"; + hash = "sha256-vBOxfq8QriX/yUtaXN69rEQaY/psRNJWxqATLidrt2g="; }) (fetchNuGet { pname = "Myriad.Sdk"; @@ -163,33 +204,33 @@ }) (fetchNuGet { pname = "NuGet.Common"; - version = "6.10.1"; - hash = "sha256-2gZe1zwSaZsr0nipaMBJixLEVOvR7vp75kwecSSYyfw="; + version = "6.12.1"; + hash = "sha256-k6JAFqHFinTakwNuW666aXYPhR7TpI/rb+KbHm1S2TM="; }) (fetchNuGet { pname = "NuGet.Configuration"; - version = "6.10.1"; - hash = "sha256-RmjvlbtJssxuWEiOcVJLtUVT0nPn7IUPb878NmJbwmM="; + version = "6.12.1"; + hash = "sha256-e/4lvyl7o7g4aWTAtr9S2yiGgk7V0E9p6DXpsy7GgVw="; }) (fetchNuGet { pname = "NuGet.Frameworks"; - version = "6.10.1"; - hash = "sha256-AdfpuVDDy9zYAGgcMZoTf/fkFCJJVrxRFhsv6AI4Dd0="; + version = "6.12.1"; + hash = "sha256-GGpkbas+PNLx35vvr3nyAVz5lY/aeoMx6qjmT368Lpg="; }) (fetchNuGet { pname = "NuGet.Packaging"; - version = "6.10.1"; - hash = "sha256-ogsVjOao+LKUOMhGir1flDuMPjOeR2OpkNGHtr/riH4="; + version = "6.12.1"; + hash = "sha256-3h8Nmjpt383+dCg9GJ1BJ26UirwEQsWCPcTiT0+wGeI="; }) (fetchNuGet { pname = "NuGet.Protocol"; - version = "6.10.1"; - hash = "sha256-UeS/10z1EqswbeB0c7QgBIVOp0VGlN5ZDQqTY2/AhX8="; + version = "6.12.1"; + hash = "sha256-l+CHnAcit6Y9OjBxereRP5JzOuWbuZZQYkFOKsUkdQ8="; }) (fetchNuGet { pname = "NuGet.Versioning"; - version = "6.10.1"; - hash = "sha256-jOh27AORk0TIhVePDVAgVhh6FuUo2v3oh/Xapcw7UVI="; + version = "6.12.1"; + hash = "sha256-f/ejCuzCAwKs4N4Ec6yf2RovrhBT0nj0hRDP+03/Iy4="; }) (fetchNuGet { pname = "NUnit"; @@ -198,29 +239,54 @@ }) (fetchNuGet { pname = "NUnit"; - version = "4.1.0"; - hash = "sha256-srzj0lf2ReKw41TnigZwf8rqKKNzGRRVrgN3hR/vRjo="; + version = "4.3.1"; + hash = "sha256-7XWgjdgEll4gDLa4p9LpizH+bJzFMIvkQ/olpAXJvCE="; }) (fetchNuGet { pname = "NUnit3TestAdapter"; - version = "4.5.0"; - hash = "sha256-ER3ogl0L5FYyc6pVVPY1ch+AQxG/WgFcnWECnYQJPes="; + version = "4.6.0"; + hash = "sha256-9Yav2fYhC4w0OgsyUwU4/5rDy4FVDTpKnWHuwl/uKJQ="; }) (fetchNuGet { pname = "RestEase"; version = "1.6.4"; hash = "sha256-FFmqFwlHhIln46k56Z8KM1G+xuPEh/bceKCQnJcdcdc="; }) + (fetchNuGet { + pname = "runtime.any.System.Runtime"; + version = "4.3.0"; + hash = "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="; + }) + (fetchNuGet { + pname = "runtime.native.System"; + version = "4.3.0"; + hash = "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="; + }) + (fetchNuGet { + pname = "runtime.unix.System.Private.Uri"; + version = "4.3.0"; + hash = "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs="; + }) (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "4.4.0"; hash = "sha256-+8wGYllXnIxRzy9dLhZFB88GoPj8ivYXS0KUfcivT8I="; }) + (fetchNuGet { + pname = "System.Diagnostics.DiagnosticSource"; + version = "7.0.0"; + hash = "sha256-9Wk8cHSkjKtqkN6xW7KnXoQVtF/VNbKeBq79WqDesMs="; + }) (fetchNuGet { pname = "System.Formats.Asn1"; version = "6.0.0"; hash = "sha256-KaMHgIRBF7Nf3VwOo+gJS1DcD+41cJDPWFh+TDQ8ee8="; }) + (fetchNuGet { + pname = "System.Formats.Asn1"; + version = "8.0.1"; + hash = "sha256-may/Wg+esmm1N14kQTG4ESMBi+GQKPp0ZrrBo/o6OXM="; + }) (fetchNuGet { pname = "System.IO.Abstractions"; version = "4.2.13"; @@ -231,11 +297,26 @@ version = "4.5.0"; hash = "sha256-ck44YBQ0M+2Im5dw0VjBgFD1s0XuY54cujrodjjSBL8="; }) + (fetchNuGet { + pname = "System.Memory"; + version = "4.5.5"; + hash = "sha256-EPQ9o1Kin7KzGI5O3U3PUQAZTItSbk9h/i4rViN3WiI="; + }) + (fetchNuGet { + pname = "System.Private.Uri"; + version = "4.3.0"; + hash = "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="; + }) (fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.6.0"; hash = "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E="; }) + (fetchNuGet { + pname = "System.Runtime"; + version = "4.3.1"; + hash = "sha256-R9T68AzS1PJJ7v6ARz9vo88pKL1dWqLOANg4pkQjkA0="; + }) (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; @@ -261,21 +342,11 @@ version = "4.5.0"; hash = "sha256-BkUYNguz0e4NJp1kkW7aJBn3dyH9STwB5N8XqnlCsmY="; }) - (fetchNuGet { - pname = "System.Text.Encodings.Web"; - version = "7.0.0"; - hash = "sha256-tF8qt9GZh/nPy0mEnj6nKLG4Lldpoi/D8xM5lv2CoYQ="; - }) (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "8.0.0"; hash = "sha256-IUQkQkV9po1LC0QsqrilqwNzPvnc+4eVvq+hCvq8fvE="; }) - (fetchNuGet { - pname = "System.Text.Json"; - version = "7.0.3"; - hash = "sha256-aSJZ17MjqaZNQkprfxm/09LaCoFtpdWmqU9BTROzWX4="; - }) (fetchNuGet { pname = "System.Text.Json"; version = "8.0.0"; @@ -283,17 +354,32 @@ }) (fetchNuGet { pname = "System.Text.Json"; - version = "8.0.5"; - hash = "sha256-yKxo54w5odWT6nPruUVsaX53oPRe+gKzGvLnnxtwP68="; + version = "8.0.4"; + hash = "sha256-g5oT7fbXxQ9Iah1nMCr4UUX/a2l+EVjJyTrw3FTbIaI="; + }) + (fetchNuGet { + pname = "System.Text.Json"; + version = "9.0.0"; + hash = "sha256-aM5Dh4okLnDv940zmoFAzRmqZre83uQBtGOImJpoIqk="; + }) + (fetchNuGet { + pname = "TypeEquality"; + version = "0.3.0"; + hash = "sha256-V50xAOzzyUJrY+MYPRxtnqW5MVeATXCes89wPprv1r4="; }) (fetchNuGet { pname = "WoofWare.Myriad.Plugins"; - version = "2.1.53"; - hash = "sha256-7Kl1tW3EbkUghFs7ZE3hE5PChYxTXcVxWFCSTGrzfpk="; + version = "4.0.9"; + hash = "sha256-VWpStkuvdFZWsEs/tC0mjChneFgxWw+1YETH+3aCoz4="; }) (fetchNuGet { pname = "WoofWare.Myriad.Plugins.Attributes"; - version = "3.1.9"; - hash = "sha256-atV9vJlhLvXYrJvS9ET1A7M+LY9IdgBSTyGhz2Vom5U="; + version = "3.6.6"; + hash = "sha256-68T5JQNp4V0DDad0I3snVh8BCe7rz11mLyvm60hxwaA="; + }) + (fetchNuGet { + pname = "WoofWare.Whippet.Fantomas"; + version = "0.3.1"; + hash = "sha256-i5oiqcrxzM90Ocuq5MIu2Ha5lV0aYu5nCvuwmFqp6NA="; }) ]