From 965533b4a7d46c3c0225e1e9e1b015ed028e6f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Denuzi=C3=A8re?= Date: Sun, 12 Nov 2023 10:19:48 +0100 Subject: [PATCH 1/7] fix: FSharp.SystemTextJson assembly reference version in net8.0 --- paket.dependencies | 7 +++- paket.lock | 53 +++++++++++--------------- tests/Remoting.Server/paket.references | 3 +- 3 files changed, 31 insertions(+), 32 deletions(-) diff --git a/paket.dependencies b/paket.dependencies index 2ba90440..863602f0 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -25,8 +25,11 @@ group net8 source https://api.nuget.org/v3/index.json storage: none framework: net8.0 +lowest_matching: true +strategy: min -nuget Elmish >= 4.0.1 < 5.0 lowest_matching: true +nuget FSharp.Core >= 6.0 content: none +nuget Elmish >= 4.0.1 < 5.0 nuget Microsoft.AspNetCore.Components.WebAssembly >= 8.0.0-rc.2.23480.2 nuget Microsoft.JSInterop.WebAssembly >= 8.0.0-rc.2.23480.2 nuget Microsoft.AspNetCore.Components.Web >= 8.0.0-rc.2.23480.2 @@ -72,6 +75,8 @@ nuget Selenium.WebDriver.ChromeDriver nuget Swashbuckle.AspNetCore # nuget Selenium.WebDriver.GeckoDriver.Win64 nuget Unquote +nuget System.Text.Encodings.Web prerelease +nuget System.Text.Json prerelease group tests-net7 source https://api.nuget.org/v3/index.json diff --git a/paket.lock b/paket.lock index d9c51363..9f1f7613 100644 --- a/paket.lock +++ b/paket.lock @@ -403,12 +403,14 @@ NUGET GROUP net8 STORAGE: NONE +STRATEGY: MIN +LOWEST_MATCHING: TRUE RESTRICTION: == net8.0 NUGET remote: https://api.nuget.org/v3/index.json Elmish (4.0.1) - FSharp.Core (7.0.401) - FSharp.SystemTextJson (1.2.42) + FSharp.Core (6.0) - content: none + FSharp.SystemTextJson (0.19.13) FSharp.Core (>= 4.7) System.Text.Json (>= 6.0) Microsoft.AspNetCore.Authorization (8.0.0-rc.2.23480.2) @@ -509,14 +511,14 @@ STORAGE: NONE RESTRICTION: || (== net7.0) (== net8.0) NUGET remote: https://api.nuget.org/v3/index.json - Elmish (4.0.2) + Elmish (4.1) FsCheck (2.16.6) FSharp.Core (>= 4.2.3) FsCheck.NUnit (2.16.6) FsCheck (2.16.6) nunit (>= 3.13.1 < 4.0) FSharp.Core (7.0.401) - FSharp.SystemTextJson (1.2.34) + FSharp.SystemTextJson (1.2.42) FSharp.Core (>= 4.7) System.Text.Json (>= 6.0) FSharp.SystemTextJson.Swagger (0.0.2) @@ -524,7 +526,7 @@ NUGET FSharp.SystemTextJson (>= 1.0.6) Swashbuckle.AspNetCore.Swagger (>= 6.4) Swashbuckle.AspNetCore.SwaggerGen (>= 6.4) - Microsoft.CodeCoverage (17.7.1) + Microsoft.CodeCoverage (17.8) Microsoft.DotNet.InternalAbstractions (1.0) System.AppContext (>= 4.1) System.Collections (>= 4.0.11) @@ -534,18 +536,18 @@ NUGET System.Runtime.Extensions (>= 4.1) System.Runtime.InteropServices (>= 4.1) System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - Microsoft.Extensions.ApiDescription.Server (7.0.10) + Microsoft.Extensions.ApiDescription.Server (7.0.13) Microsoft.NET.Test.Sdk (15.8) Microsoft.CodeCoverage (>= 15.8) Microsoft.TestPlatform.TestHost (>= 15.8) Microsoft.NETCore.Platforms (7.0.4) Microsoft.NETCore.Targets (5.0) Microsoft.OpenApi (1.6.10) - Microsoft.TestPlatform.ObjectModel (17.7.1) + Microsoft.TestPlatform.ObjectModel (17.8) NuGet.Frameworks (>= 6.5) System.Reflection.Metadata (>= 1.6) - Microsoft.TestPlatform.TestHost (17.7.1) - Microsoft.TestPlatform.ObjectModel (>= 17.7.1) + Microsoft.TestPlatform.TestHost (17.8) + Microsoft.TestPlatform.ObjectModel (>= 17.8) Newtonsoft.Json (>= 13.0.1) Microsoft.Win32.Primitives (4.3) Microsoft.NETCore.Platforms (>= 1.1) @@ -554,11 +556,12 @@ NUGET Microsoft.Win32.Registry (5.0) System.Security.AccessControl (>= 5.0) System.Security.Principal.Windows (>= 5.0) + Microsoft.Win32.SystemEvents (7.0) NETStandard.Library (2.0.3) Microsoft.NETCore.Platforms (>= 1.1) Newtonsoft.Json (13.0.3) NuGet.Frameworks (6.7) - nunit (3.13.3) + nunit (3.14) NETStandard.Library (>= 2.0) NUnit3TestAdapter (3.17) Microsoft.DotNet.InternalAbstractions (>= 1.0) @@ -573,11 +576,12 @@ NUGET runtime.native.System (4.3.1) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - Selenium.Support (4.11) - Selenium.WebDriver (>= 4.11) - Selenium.WebDriver (4.11) + Selenium.Support (4.15) + Selenium.WebDriver (>= 4.15) + Selenium.WebDriver (4.15) Newtonsoft.Json (>= 13.0.1) - Selenium.WebDriver.ChromeDriver (118.0.5993.7000) + System.Drawing.Common (>= 7.0) + Selenium.WebDriver.ChromeDriver (119.0.6045.10500) Swashbuckle.AspNetCore (6.5) Microsoft.Extensions.ApiDescription.Server (>= 6.0.5) Swashbuckle.AspNetCore.Swagger (>= 6.5) @@ -663,6 +667,8 @@ NUGET System.Threading.Tasks (>= 4.3) System.Threading.Thread (>= 4.3) System.Threading.ThreadPool (>= 4.3) + System.Drawing.Common (7.0) + Microsoft.Win32.SystemEvents (>= 7.0) System.Globalization (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) @@ -758,9 +764,9 @@ NUGET Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) System.Text.Encoding (>= 4.3) - System.Text.Encodings.Web (7.0) - System.Text.Json (7.0.3) - System.Text.Encodings.Web (>= 7.0) + System.Text.Encodings.Web (8.0.0-rc.2.23479.6) + System.Text.Json (8.0.0-rc.2.23479.6) + System.Text.Encodings.Web (>= 8.0.0-rc.2.23479.6) System.Text.RegularExpressions (4.3.1) System.Runtime (>= 4.3.1) System.Threading (4.3) @@ -918,15 +924,6 @@ STORAGE: NONE RESTRICTION: == net8.0 NUGET remote: https://api.nuget.org/v3/index.json - FSharp.Core (7.0.401) - FSharp.SystemTextJson (1.2.42) - FSharp.Core (>= 4.7) - System.Text.Json (>= 6.0) - FSharp.SystemTextJson.Swagger (0.0.2) - FSharp.Core (>= 6.0.7) - FSharp.SystemTextJson (>= 1.0.6) - Swashbuckle.AspNetCore.Swagger (>= 6.4) - Swashbuckle.AspNetCore.SwaggerGen (>= 6.4) Microsoft.AspNetCore.Authorization (8.0.0-rc.2.23480.2) Microsoft.AspNetCore.Metadata (>= 8.0.0-rc.2.23480.2) Microsoft.Extensions.Logging.Abstractions (>= 8.0.0-rc.2.23479.6) @@ -1004,10 +1001,6 @@ NUGET Microsoft.JSInterop.WebAssembly (8.0.0-rc.2.23480.2) Microsoft.JSInterop (>= 8.0.0-rc.2.23480.2) Microsoft.OpenApi (1.6.10) - Swashbuckle.AspNetCore.Swagger (6.5) - Microsoft.OpenApi (>= 1.2.3) - Swashbuckle.AspNetCore.SwaggerGen (6.5) - Swashbuckle.AspNetCore.Swagger (>= 6.5) System.IO.Pipelines (8.0.0-rc.2.23479.6) System.Text.Encodings.Web (8.0.0-rc.2.23479.6) System.Text.Json (8.0.0-rc.2.23479.6) diff --git a/tests/Remoting.Server/paket.references b/tests/Remoting.Server/paket.references index fb5ff486..227208c2 100644 --- a/tests/Remoting.Server/paket.references +++ b/tests/Remoting.Server/paket.references @@ -1,10 +1,11 @@ group tests FSharp.Core Swashbuckle.AspNetCore +FSharp.SystemTextJson.Swagger group tests-net8 Microsoft.AspNetCore.OpenApi Microsoft.AspNetCore.Components Microsoft.AspNetCore.Components.WebAssembly Microsoft.AspNetCore.Components.WebAssembly.Server -FSharp.SystemTextJson.Swagger +System.Text.Encodings.Web From b64f4989159fe4b5579b2e19ee9c8c618ad5d42e Mon Sep 17 00:00:00 2001 From: psymm <78588689+psymm@users.noreply.github.com> Date: Sat, 18 Nov 2023 11:45:21 +0000 Subject: [PATCH 2/7] Update paket.template for dotnet 8 release --- src/Bolero/paket.template | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Bolero/paket.template b/src/Bolero/paket.template index f3a40447..7a378a6b 100644 --- a/src/Bolero/paket.template +++ b/src/Bolero/paket.template @@ -14,6 +14,8 @@ files bin/Release/typeproviders/fsharp41/netstandard2.0/Microsoft.AspNetCore.Components.Web.dll ==> typeproviders/fsharp41/netstandard2.0 ../Bolero.Html/bin/Release/net6.0/Bolero.Html.dll ==> lib/net6.0 ../Bolero.Html/bin/Release/net6.0/Bolero.Html.xml ==> lib/net6.0 + ../Bolero.Html/bin/Release/net8.0/Bolero.Html.dll ==> lib/net8.0 + ../Bolero.Html/bin/Release/net8.0/Bolero.Html.xml ==> lib/net8.0 Bolero.targets ==> build roots.xml ==> build excludeddependencies @@ -27,5 +29,5 @@ dependencies Microsoft.JSInterop.WebAssembly ~> 7.0 Microsoft.AspNetCore.Components.WebAssembly ~> 7.0 framework: net8.0 - Microsoft.JSInterop.WebAssembly >= 8.0-rc.2.23480.2 - Microsoft.AspNetCore.Components.WebAssembly >= 8.0-rc.2.23480.2 + Microsoft.JSInterop.WebAssembly ~> 8.0 + Microsoft.AspNetCore.Components.WebAssembly ~> 8.0 From 7626b1b9aa46ce10b3255f43a3724dcd9fbbe984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Denuzi=C3=A8re?= Date: Sat, 18 Nov 2023 13:56:11 +0100 Subject: [PATCH 3/7] Depend on net8.0 RTM packages --- paket.dependencies | 22 +- paket.lock | 599 +++++++++++++++---------------- src/Bolero.Server/paket.template | 6 +- src/Bolero/paket.template | 4 +- 4 files changed, 304 insertions(+), 327 deletions(-) diff --git a/paket.dependencies b/paket.dependencies index 863602f0..d73279d9 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -30,12 +30,12 @@ strategy: min nuget FSharp.Core >= 6.0 content: none nuget Elmish >= 4.0.1 < 5.0 -nuget Microsoft.AspNetCore.Components.WebAssembly >= 8.0.0-rc.2.23480.2 -nuget Microsoft.JSInterop.WebAssembly >= 8.0.0-rc.2.23480.2 -nuget Microsoft.AspNetCore.Components.Web >= 8.0.0-rc.2.23480.2 -nuget Microsoft.Extensions.Http >= 8.0.0-rc.2.23479.6 +nuget Microsoft.AspNetCore.Components.WebAssembly >= 8.0.0 +nuget Microsoft.JSInterop.WebAssembly >= 8.0.0 +nuget Microsoft.AspNetCore.Components.Web >= 8.0.0 +nuget Microsoft.Extensions.Http >= 8.0.0 nuget FSharp.SystemTextJson >= 0.19.13 -nuget System.Text.Json >= 8.0.0-rc.2.23479.6 +nuget System.Text.Json >= 8.0.0 group build source https://api.nuget.org/v3/index.json @@ -95,9 +95,9 @@ source https://api.nuget.org/v3/index.json storage: none framework: net8.0 -nuget Microsoft.AspNetCore.OpenApi ~> 8.0.0-rc.2.23480.2 -nuget Microsoft.AspNetCore.Components.Authorization ~> 8.0-rc.2.23480.2 -nuget Microsoft.AspNetCore.Components.WebAssembly ~> 8.0-rc.2.23480.2 -nuget Microsoft.AspNetCore.Components.WebAssembly.Authentication ~> 8.0-rc.2.23480.2 -nuget Microsoft.AspNetCore.Components.WebAssembly.DevServer ~> 8.0-rc.2.23480.2 -nuget Microsoft.AspNetCore.Components.WebAssembly.Server ~> 8.0-rc.2.23480.2 +nuget Microsoft.AspNetCore.OpenApi ~> 8.0.0 +nuget Microsoft.AspNetCore.Components.Authorization ~> 8.0 +nuget Microsoft.AspNetCore.Components.WebAssembly ~> 8.0 +nuget Microsoft.AspNetCore.Components.WebAssembly.Authentication ~> 8.0 +nuget Microsoft.AspNetCore.Components.WebAssembly.DevServer ~> 8.0 +nuget Microsoft.AspNetCore.Components.WebAssembly.Server ~> 8.0 diff --git a/paket.lock b/paket.lock index 9f1f7613..cb15e462 100644 --- a/paket.lock +++ b/paket.lock @@ -98,7 +98,7 @@ NUGET Microsoft.JSInterop (6.0) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) Microsoft.JSInterop.WebAssembly (6.0) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) Microsoft.JSInterop (>= 6.0) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) - Nerdbank.GitVersioning (3.5.119) - copy_local: true + Nerdbank.GitVersioning (3.6.133) - copy_local: true System.Buffers (4.5.1) - restriction: || (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp3.1)) (&& (== net7.0) (>= net461)) (&& (== net7.0) (< netcoreapp3.1)) (== netstandard2.0) System.ComponentModel.Annotations (5.0) - restriction: || (&& (== net6.0) (< netstandard2.1)) (&& (== net7.0) (< netstandard2.1)) (== netstandard2.0) System.Diagnostics.DiagnosticSource (6.0) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) @@ -126,36 +126,38 @@ NUGET System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.0)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= wp8)) (&& (== net7.0) (>= net461)) (&& (== net7.0) (< netcoreapp2.1)) (&& (== net7.0) (< netstandard1.0)) (&& (== net7.0) (< netstandard2.0)) (&& (== net7.0) (>= wp8)) (== netstandard2.0) GITHUB remote: fsprojects/FSharp.TypeProviders.SDK - src/ProvidedTypes.fs (b7c930b0bd9e0e0476981ba0813ac17e7d61742b) - src/ProvidedTypes.fsi (b7c930b0bd9e0e0476981ba0813ac17e7d61742b) + src/ProvidedTypes.fs (6149ed507f15caa68a475808bcf5b3c2f52a4d34) + src/ProvidedTypes.fsi (6149ed507f15caa68a475808bcf5b3c2f52a4d34) GROUP build STORAGE: NONE RESTRICTION: == netstandard2.0 NUGET remote: https://api.nuget.org/v3/index.json - Microsoft.Build.Framework (17.1) - Microsoft.Win32.Registry (>= 4.3) - System.Security.Permissions (>= 4.7) + Microsoft.Build.Framework (17.8.3) + Microsoft.Win32.Registry (>= 5.0) + System.Memory (>= 4.5.5) + System.Runtime.CompilerServices.Unsafe (>= 6.0) + System.Security.Principal.Windows (>= 5.0) Microsoft.Build.Utilities.Core (15.9.20) Microsoft.Build.Framework (>= 15.9.20) Microsoft.Win32.Registry (>= 4.3) System.Collections.Immutable (>= 1.5) System.Runtime.InteropServices.RuntimeInformation (>= 4.3) System.Text.Encoding.CodePages (>= 4.4) - Microsoft.NETCore.Platforms (6.0.2) + Microsoft.NETCore.Platforms (7.0.4) Microsoft.NETCore.Targets (5.0) Microsoft.Win32.Registry (5.0) System.Buffers (>= 4.5.1) System.Memory (>= 4.5.4) System.Security.AccessControl (>= 5.0) System.Security.Principal.Windows (>= 5.0) - Mono.Cecil (0.11.4) + Mono.Cecil (0.11.5) runtime.native.System (4.3.1) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) System.Buffers (4.5.1) - System.Collections.Immutable (6.0) - System.Memory (>= 4.5.4) + System.Collections.Immutable (8.0) + System.Memory (>= 4.5.5) System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Globalization (4.3) Microsoft.NETCore.Platforms (>= 1.1) @@ -218,15 +220,13 @@ NUGET System.Threading (>= 4.3) System.Security.AccessControl (6.0) System.Security.Principal.Windows (>= 5.0) - System.Security.Permissions (6.0) - System.Security.AccessControl (>= 6.0) System.Security.Principal.Windows (5.0) System.Text.Encoding (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Text.Encoding.CodePages (6.0) - System.Memory (>= 4.5.4) + System.Text.Encoding.CodePages (8.0) + System.Memory (>= 4.5.5) System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Threading (4.3) System.Runtime (>= 4.3) @@ -344,62 +344,52 @@ NUGET FSharp.Control.Reactive (5.0.5) FSharp.Core (>= 4.7.2) System.Reactive (>= 5.0 < 6.0) - FSharp.Core (7.0.400) + FSharp.Core (8.0.100) FSharp.Data (3.3.3) FSharp.Core (>= 4.3.4) - Microsoft.Build.Framework (17.7.2) - System.Security.Permissions (>= 7.0) - Microsoft.Build.Utilities.Core (17.7.2) - Microsoft.Build.Framework (>= 17.7.2) - Microsoft.NET.StringTools (>= 17.7.2) + Microsoft.Build.Framework (17.8.3) + Microsoft.Build.Utilities.Core (17.8.3) + Microsoft.Build.Framework (>= 17.8.3) + Microsoft.NET.StringTools (>= 17.8.3) Microsoft.VisualStudio.Setup.Configuration.Interop (>= 3.2.2146) System.Collections.Immutable (>= 7.0) System.Configuration.ConfigurationManager (>= 7.0) - System.Security.Permissions (>= 7.0) - Microsoft.NET.StringTools (17.7.2) - Microsoft.VisualStudio.Setup.Configuration.Interop (3.7.2175) + Microsoft.NET.StringTools (17.8.3) + Microsoft.VisualStudio.Setup.Configuration.Interop (3.8.2112) Microsoft.Win32.Registry (5.0) System.Security.AccessControl (>= 5.0) System.Security.Principal.Windows (>= 5.0) - Microsoft.Win32.SystemEvents (7.0) Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.1.846) + MSBuild.StructuredLogger (2.2.2) Microsoft.Build.Framework (>= 17.5) Microsoft.Build.Utilities.Core (>= 17.5) Newtonsoft.Json (13.0.3) - NuGet.Common (6.7) - NuGet.Frameworks (>= 6.7) - NuGet.Configuration (6.7) - NuGet.Common (>= 6.7) + NuGet.Common (6.8) + NuGet.Frameworks (>= 6.8) + NuGet.Configuration (6.8) + NuGet.Common (>= 6.8) System.Security.Cryptography.ProtectedData (>= 4.4) - NuGet.Frameworks (6.7) - NuGet.Packaging (6.7) - Newtonsoft.Json (>= 13.0.1) - NuGet.Configuration (>= 6.7) - NuGet.Versioning (>= 6.7) + NuGet.Frameworks (6.8) + NuGet.Packaging (6.8) + Newtonsoft.Json (>= 13.0.3) + NuGet.Configuration (>= 6.8) + NuGet.Versioning (>= 6.8) System.Security.Cryptography.Pkcs (>= 6.0.4) - NuGet.Protocol (6.7) - NuGet.Packaging (>= 6.7) - NuGet.Versioning (6.7) - System.Collections.Immutable (7.0) - System.Configuration.ConfigurationManager (7.0) - System.Diagnostics.EventLog (>= 7.0) - System.Security.Cryptography.ProtectedData (>= 7.0) - System.Security.Permissions (>= 7.0) - System.Diagnostics.EventLog (7.0) - System.Drawing.Common (7.0) - Microsoft.Win32.SystemEvents (>= 7.0) - System.Formats.Asn1 (7.0) + NuGet.Protocol (6.8) + NuGet.Packaging (>= 6.8) + NuGet.Versioning (6.8) + System.Collections.Immutable (8.0) + System.Configuration.ConfigurationManager (8.0) + System.Diagnostics.EventLog (>= 8.0) + System.Security.Cryptography.ProtectedData (>= 8.0) + System.Diagnostics.EventLog (8.0) + System.Formats.Asn1 (8.0) System.Reactive (5.0) System.Security.AccessControl (6.0) - System.Security.Cryptography.Pkcs (7.0.3) - System.Formats.Asn1 (>= 7.0) - System.Security.Cryptography.ProtectedData (7.0.1) - System.Security.Permissions (7.0) - System.Windows.Extensions (>= 7.0) + System.Security.Cryptography.Pkcs (8.0) + System.Formats.Asn1 (>= 8.0) + System.Security.Cryptography.ProtectedData (8.0) System.Security.Principal.Windows (5.0) - System.Windows.Extensions (7.0) - System.Drawing.Common (>= 7.0) GROUP net8 STORAGE: NONE @@ -413,98 +403,98 @@ NUGET FSharp.SystemTextJson (0.19.13) FSharp.Core (>= 4.7) System.Text.Json (>= 6.0) - Microsoft.AspNetCore.Authorization (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Metadata (>= 8.0.0-rc.2.23480.2) - Microsoft.Extensions.Logging.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options (>= 8.0.0-rc.2.23479.6) - Microsoft.AspNetCore.Components (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Authorization (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Analyzers (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Analyzers (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Forms (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Web (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Forms (>= 8.0.0-rc.2.23480.2) - Microsoft.Extensions.DependencyInjection (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.JSInterop (>= 8.0.0-rc.2.23480.2) - System.IO.Pipelines (>= 8.0.0-rc.2.23479.6) - Microsoft.AspNetCore.Components.WebAssembly (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Web (>= 8.0.0-rc.2.23480.2) - Microsoft.Extensions.Configuration.Binder (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Json (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Logging (>= 8.0.0-rc.2.23479.6) - Microsoft.JSInterop.WebAssembly (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Metadata (8.0.0-rc.2.23480.2) - Microsoft.Extensions.Configuration (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Binder (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.FileExtensions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Physical (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Json (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.FileExtensions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Abstractions (>= 8.0.0-rc.2.23479.6) - System.Text.Json (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection (8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Diagnostics (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Diagnostics.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Diagnostics.Abstractions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options (>= 8.0.0-rc.2.23479.6) - System.Diagnostics.DiagnosticSource (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Abstractions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Physical (8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileSystemGlobbing (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileSystemGlobbing (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Http (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Diagnostics (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Logging (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Logging.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Logging (8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Logging.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Logging.Abstractions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options (8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options.ConfigurationExtensions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Binder (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (8.0.0-rc.2.23479.6) - Microsoft.JSInterop (8.0.0-rc.2.23480.2) - Microsoft.JSInterop.WebAssembly (8.0.0-rc.2.23480.2) - Microsoft.JSInterop (>= 8.0.0-rc.2.23480.2) - System.Diagnostics.DiagnosticSource (8.0.0-rc.2.23479.6) - System.IO.Pipelines (8.0.0-rc.2.23479.6) - System.Text.Encodings.Web (8.0.0-rc.2.23479.6) - System.Text.Json (8.0.0-rc.2.23479.6) - System.Text.Encodings.Web (>= 8.0.0-rc.2.23479.6) + Microsoft.AspNetCore.Authorization (8.0) + Microsoft.AspNetCore.Metadata (>= 8.0) + Microsoft.Extensions.Logging.Abstractions (>= 8.0) + Microsoft.Extensions.Options (>= 8.0) + Microsoft.AspNetCore.Components (8.0) + Microsoft.AspNetCore.Authorization (>= 8.0) + Microsoft.AspNetCore.Components.Analyzers (>= 8.0) + Microsoft.AspNetCore.Components.Analyzers (8.0) + Microsoft.AspNetCore.Components.Forms (8.0) + Microsoft.AspNetCore.Components (>= 8.0) + Microsoft.AspNetCore.Components.Web (8.0) + Microsoft.AspNetCore.Components (>= 8.0) + Microsoft.AspNetCore.Components.Forms (>= 8.0) + Microsoft.Extensions.DependencyInjection (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.JSInterop (>= 8.0) + System.IO.Pipelines (>= 8.0) + Microsoft.AspNetCore.Components.WebAssembly (8.0) + Microsoft.AspNetCore.Components.Web (>= 8.0) + Microsoft.Extensions.Configuration.Binder (>= 8.0) + Microsoft.Extensions.Configuration.Json (>= 8.0) + Microsoft.Extensions.Logging (>= 8.0) + Microsoft.JSInterop.WebAssembly (>= 8.0) + Microsoft.AspNetCore.Metadata (8.0) + Microsoft.Extensions.Configuration (8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Configuration.Abstractions (8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Configuration.Binder (8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.Configuration.FileExtensions (8.0) + Microsoft.Extensions.Configuration (>= 8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.FileProviders.Abstractions (>= 8.0) + Microsoft.Extensions.FileProviders.Physical (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Configuration.Json (8.0) + Microsoft.Extensions.Configuration (>= 8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.Configuration.FileExtensions (>= 8.0) + Microsoft.Extensions.FileProviders.Abstractions (>= 8.0) + System.Text.Json (>= 8.0) + Microsoft.Extensions.DependencyInjection (8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (8.0) + Microsoft.Extensions.Diagnostics (8.0) + Microsoft.Extensions.Configuration (>= 8.0) + Microsoft.Extensions.Diagnostics.Abstractions (>= 8.0) + Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0) + Microsoft.Extensions.Diagnostics.Abstractions (8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.Options (>= 8.0) + System.Diagnostics.DiagnosticSource (>= 8.0) + Microsoft.Extensions.FileProviders.Abstractions (8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.FileProviders.Physical (8.0) + Microsoft.Extensions.FileProviders.Abstractions (>= 8.0) + Microsoft.Extensions.FileSystemGlobbing (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.FileSystemGlobbing (8.0) + Microsoft.Extensions.Http (8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.Diagnostics (>= 8.0) + Microsoft.Extensions.Logging (>= 8.0) + Microsoft.Extensions.Logging.Abstractions (>= 8.0) + Microsoft.Extensions.Options (>= 8.0) + Microsoft.Extensions.Logging (8.0) + Microsoft.Extensions.DependencyInjection (>= 8.0) + Microsoft.Extensions.Logging.Abstractions (>= 8.0) + Microsoft.Extensions.Options (>= 8.0) + Microsoft.Extensions.Logging.Abstractions (8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.Options (8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Options.ConfigurationExtensions (8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.Configuration.Binder (>= 8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.Options (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Primitives (8.0) + Microsoft.JSInterop (8.0) + Microsoft.JSInterop.WebAssembly (8.0) + Microsoft.JSInterop (>= 8.0) + System.Diagnostics.DiagnosticSource (8.0) + System.IO.Pipelines (8.0) + System.Text.Encodings.Web (8.0) + System.Text.Json (8.0) + System.Text.Encodings.Web (>= 8.0) GROUP tests STORAGE: NONE @@ -517,7 +507,7 @@ NUGET FsCheck.NUnit (2.16.6) FsCheck (2.16.6) nunit (>= 3.13.1 < 4.0) - FSharp.Core (7.0.401) + FSharp.Core (8.0.100) FSharp.SystemTextJson (1.2.42) FSharp.Core (>= 4.7) System.Text.Json (>= 6.0) @@ -536,7 +526,7 @@ NUGET System.Runtime.Extensions (>= 4.1) System.Runtime.InteropServices (>= 4.1) System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - Microsoft.Extensions.ApiDescription.Server (7.0.13) + Microsoft.Extensions.ApiDescription.Server (8.0) Microsoft.NET.Test.Sdk (15.8) Microsoft.CodeCoverage (>= 15.8) Microsoft.TestPlatform.TestHost (>= 15.8) @@ -556,11 +546,11 @@ NUGET Microsoft.Win32.Registry (5.0) System.Security.AccessControl (>= 5.0) System.Security.Principal.Windows (>= 5.0) - Microsoft.Win32.SystemEvents (7.0) + Microsoft.Win32.SystemEvents (8.0) NETStandard.Library (2.0.3) Microsoft.NETCore.Platforms (>= 1.1) Newtonsoft.Json (13.0.3) - NuGet.Frameworks (6.7) + NuGet.Frameworks (6.8) nunit (3.14) NETStandard.Library (>= 2.0) NUnit3TestAdapter (3.17) @@ -598,7 +588,7 @@ NUGET Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Collections.Immutable (7.0) + System.Collections.Immutable (8.0) System.Collections.NonGeneric (4.3) System.Diagnostics.Debug (>= 4.3) System.Globalization (>= 4.3) @@ -667,8 +657,8 @@ NUGET System.Threading.Tasks (>= 4.3) System.Threading.Thread (>= 4.3) System.Threading.ThreadPool (>= 4.3) - System.Drawing.Common (7.0) - Microsoft.Win32.SystemEvents (>= 7.0) + System.Drawing.Common (8.0) + Microsoft.Win32.SystemEvents (>= 8.0) System.Globalization (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) @@ -714,8 +704,8 @@ NUGET Microsoft.NETCore.Targets (>= 1.1) System.Reflection (>= 4.3) System.Runtime (>= 4.3) - System.Reflection.Metadata (7.0.2) - System.Collections.Immutable (>= 7.0) + System.Reflection.Metadata (8.0) + System.Collections.Immutable (>= 8.0) System.Reflection.Primitives (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) @@ -764,9 +754,9 @@ NUGET Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) System.Text.Encoding (>= 4.3) - System.Text.Encodings.Web (8.0.0-rc.2.23479.6) - System.Text.Json (8.0.0-rc.2.23479.6) - System.Text.Encodings.Web (>= 8.0.0-rc.2.23479.6) + System.Text.Encodings.Web (8.0) + System.Text.Json (8.0) + System.Text.Encodings.Web (>= 8.0) System.Text.RegularExpressions (4.3.1) System.Runtime (>= 4.3.1) System.Threading (4.3) @@ -838,170 +828,157 @@ STORAGE: NONE RESTRICTION: == net7.0 NUGET remote: https://api.nuget.org/v3/index.json - Microsoft.AspNetCore.Authorization (7.0.10) - Microsoft.AspNetCore.Metadata (>= 7.0.10) - Microsoft.Extensions.Logging.Abstractions (>= 7.0.1) - Microsoft.Extensions.Options (>= 7.0.1) - Microsoft.AspNetCore.Components (7.0.10) - Microsoft.AspNetCore.Authorization (>= 7.0.10) - Microsoft.AspNetCore.Components.Analyzers (>= 7.0.10) - Microsoft.AspNetCore.Components.Analyzers (7.0.10) - Microsoft.AspNetCore.Components.Authorization (7.0.10) - Microsoft.AspNetCore.Authorization (>= 7.0.10) - Microsoft.AspNetCore.Components (>= 7.0.10) - Microsoft.AspNetCore.Components.Forms (7.0.10) - Microsoft.AspNetCore.Components (>= 7.0.10) - Microsoft.AspNetCore.Components.Web (7.0.10) - Microsoft.AspNetCore.Components (>= 7.0.10) - Microsoft.AspNetCore.Components.Forms (>= 7.0.10) - Microsoft.Extensions.DependencyInjection (>= 7.0) - Microsoft.JSInterop (>= 7.0.10) - System.IO.Pipelines (>= 7.0) - Microsoft.AspNetCore.Components.WebAssembly (7.0.10) - Microsoft.AspNetCore.Components.Web (>= 7.0.10) + Microsoft.AspNetCore.Authorization (8.0) + Microsoft.AspNetCore.Metadata (>= 8.0) + Microsoft.Extensions.Logging.Abstractions (>= 8.0) + Microsoft.Extensions.Options (>= 8.0) + Microsoft.AspNetCore.Components (8.0) + Microsoft.AspNetCore.Components.Authorization (7.0.14) + Microsoft.AspNetCore.Authorization (>= 7.0.14) + Microsoft.AspNetCore.Components (>= 7.0.14) + Microsoft.AspNetCore.Components.Web (8.0) + Microsoft.AspNetCore.Components.WebAssembly (7.0.14) + Microsoft.AspNetCore.Components.Web (>= 7.0.14) Microsoft.Extensions.Configuration.Binder (>= 7.0.4) Microsoft.Extensions.Configuration.Json (>= 7.0) Microsoft.Extensions.Logging (>= 7.0) - Microsoft.JSInterop.WebAssembly (>= 7.0.10) - Microsoft.AspNetCore.Components.WebAssembly.Authentication (7.0.10) - Microsoft.AspNetCore.Components.Authorization (>= 7.0.10) - Microsoft.AspNetCore.Components.Web (>= 7.0.10) - Microsoft.AspNetCore.Components.WebAssembly.DevServer (7.0.10) - Microsoft.AspNetCore.Components.WebAssembly.Server (7.0.10) - Microsoft.AspNetCore.Metadata (7.0.10) - Microsoft.AspNetCore.OpenApi (7.0.10) + Microsoft.JSInterop.WebAssembly (>= 7.0.14) + Microsoft.AspNetCore.Components.WebAssembly.Authentication (7.0.14) + Microsoft.AspNetCore.Components.Authorization (>= 7.0.14) + Microsoft.AspNetCore.Components.Web (>= 7.0.14) + Microsoft.AspNetCore.Components.WebAssembly.DevServer (7.0.14) + Microsoft.AspNetCore.Components.WebAssembly.Server (7.0.14) + Microsoft.AspNetCore.Metadata (8.0) + Microsoft.AspNetCore.OpenApi (7.0.14) Microsoft.OpenApi (>= 1.4.3) - Microsoft.Extensions.Configuration (7.0) - Microsoft.Extensions.Configuration.Abstractions (>= 7.0) - Microsoft.Extensions.Primitives (>= 7.0) - Microsoft.Extensions.Configuration.Abstractions (7.0) - Microsoft.Extensions.Primitives (>= 7.0) - Microsoft.Extensions.Configuration.Binder (7.0.4) - Microsoft.Extensions.Configuration.Abstractions (>= 7.0) - Microsoft.Extensions.Configuration.FileExtensions (7.0) - Microsoft.Extensions.Configuration (>= 7.0) - Microsoft.Extensions.Configuration.Abstractions (>= 7.0) - Microsoft.Extensions.FileProviders.Abstractions (>= 7.0) - Microsoft.Extensions.FileProviders.Physical (>= 7.0) - Microsoft.Extensions.Primitives (>= 7.0) - Microsoft.Extensions.Configuration.Json (7.0) - Microsoft.Extensions.Configuration (>= 7.0) - Microsoft.Extensions.Configuration.Abstractions (>= 7.0) - Microsoft.Extensions.Configuration.FileExtensions (>= 7.0) - Microsoft.Extensions.FileProviders.Abstractions (>= 7.0) - System.Text.Json (>= 7.0) - Microsoft.Extensions.DependencyInjection (7.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0) - Microsoft.Extensions.DependencyInjection.Abstractions (7.0) - Microsoft.Extensions.FileProviders.Abstractions (7.0) - Microsoft.Extensions.Primitives (>= 7.0) - Microsoft.Extensions.FileProviders.Physical (7.0) - Microsoft.Extensions.FileProviders.Abstractions (>= 7.0) - Microsoft.Extensions.FileSystemGlobbing (>= 7.0) - Microsoft.Extensions.Primitives (>= 7.0) - Microsoft.Extensions.FileSystemGlobbing (7.0) - Microsoft.Extensions.Logging (7.0) - Microsoft.Extensions.DependencyInjection (>= 7.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0) - Microsoft.Extensions.Logging.Abstractions (>= 7.0) - Microsoft.Extensions.Options (>= 7.0) - Microsoft.Extensions.Logging.Abstractions (7.0.1) - Microsoft.Extensions.Options (7.0.1) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0) - Microsoft.Extensions.Primitives (>= 7.0) - Microsoft.Extensions.Primitives (7.0) - Microsoft.JSInterop (7.0.10) - Microsoft.JSInterop.WebAssembly (7.0.10) - Microsoft.JSInterop (>= 7.0.10) + Microsoft.Extensions.Configuration (8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Configuration.Abstractions (8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Configuration.Binder (8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.Configuration.FileExtensions (8.0) + Microsoft.Extensions.Configuration (>= 8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.FileProviders.Abstractions (>= 8.0) + Microsoft.Extensions.FileProviders.Physical (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Configuration.Json (8.0) + Microsoft.Extensions.Configuration (>= 8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.Configuration.FileExtensions (>= 8.0) + Microsoft.Extensions.FileProviders.Abstractions (>= 8.0) + System.Text.Json (>= 8.0) + Microsoft.Extensions.DependencyInjection (8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (8.0) + Microsoft.Extensions.FileProviders.Abstractions (8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.FileProviders.Physical (8.0) + Microsoft.Extensions.FileProviders.Abstractions (>= 8.0) + Microsoft.Extensions.FileSystemGlobbing (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.FileSystemGlobbing (8.0) + Microsoft.Extensions.Logging (8.0) + Microsoft.Extensions.DependencyInjection (>= 8.0) + Microsoft.Extensions.Logging.Abstractions (>= 8.0) + Microsoft.Extensions.Options (>= 8.0) + Microsoft.Extensions.Logging.Abstractions (8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.Options (8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Primitives (8.0) + Microsoft.JSInterop.WebAssembly (8.0) Microsoft.OpenApi (1.6.10) - System.IO.Pipelines (7.0) - System.Text.Encodings.Web (7.0) - System.Text.Json (7.0.3) - System.Text.Encodings.Web (>= 7.0) + System.Text.Encodings.Web (8.0) + System.Text.Json (8.0) + System.Text.Encodings.Web (>= 8.0) GROUP tests-net8 STORAGE: NONE RESTRICTION: == net8.0 NUGET remote: https://api.nuget.org/v3/index.json - Microsoft.AspNetCore.Authorization (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Metadata (>= 8.0.0-rc.2.23480.2) - Microsoft.Extensions.Logging.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options (>= 8.0.0-rc.2.23479.6) - Microsoft.AspNetCore.Components (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Authorization (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Analyzers (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Analyzers (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Authorization (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Authorization (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Forms (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Web (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Forms (>= 8.0.0-rc.2.23480.2) - Microsoft.Extensions.DependencyInjection (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.JSInterop (>= 8.0.0-rc.2.23480.2) - System.IO.Pipelines (>= 8.0.0-rc.2.23479.6) - Microsoft.AspNetCore.Components.WebAssembly (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Web (>= 8.0.0-rc.2.23480.2) - Microsoft.Extensions.Configuration.Binder (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Json (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Logging (>= 8.0.0-rc.2.23479.6) - Microsoft.JSInterop.WebAssembly (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.WebAssembly.Authentication (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Authorization (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.Web (>= 8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.WebAssembly.DevServer (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Components.WebAssembly.Server (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.Metadata (8.0.0-rc.2.23480.2) - Microsoft.AspNetCore.OpenApi (8.0.0-rc.2.23480.2) + Microsoft.AspNetCore.Authorization (8.0) + Microsoft.AspNetCore.Metadata (>= 8.0) + Microsoft.Extensions.Logging.Abstractions (>= 8.0) + Microsoft.Extensions.Options (>= 8.0) + Microsoft.AspNetCore.Components (8.0) + Microsoft.AspNetCore.Authorization (>= 8.0) + Microsoft.AspNetCore.Components.Analyzers (>= 8.0) + Microsoft.AspNetCore.Components.Analyzers (8.0) + Microsoft.AspNetCore.Components.Authorization (8.0) + Microsoft.AspNetCore.Authorization (>= 8.0) + Microsoft.AspNetCore.Components (>= 8.0) + Microsoft.AspNetCore.Components.Forms (8.0) + Microsoft.AspNetCore.Components (>= 8.0) + Microsoft.AspNetCore.Components.Web (8.0) + Microsoft.AspNetCore.Components (>= 8.0) + Microsoft.AspNetCore.Components.Forms (>= 8.0) + Microsoft.Extensions.DependencyInjection (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.JSInterop (>= 8.0) + System.IO.Pipelines (>= 8.0) + Microsoft.AspNetCore.Components.WebAssembly (8.0) + Microsoft.AspNetCore.Components.Web (>= 8.0) + Microsoft.Extensions.Configuration.Binder (>= 8.0) + Microsoft.Extensions.Configuration.Json (>= 8.0) + Microsoft.Extensions.Logging (>= 8.0) + Microsoft.JSInterop.WebAssembly (>= 8.0) + Microsoft.AspNetCore.Components.WebAssembly.Authentication (8.0) + Microsoft.AspNetCore.Components.Authorization (>= 8.0) + Microsoft.AspNetCore.Components.Web (>= 8.0) + Microsoft.AspNetCore.Components.WebAssembly.DevServer (8.0) + Microsoft.AspNetCore.Components.WebAssembly.Server (8.0) + Microsoft.AspNetCore.Metadata (8.0) + Microsoft.AspNetCore.OpenApi (8.0) Microsoft.OpenApi (>= 1.4.3) - Microsoft.Extensions.Configuration (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Binder (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.FileExtensions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Physical (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Json (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Configuration.FileExtensions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Abstractions (>= 8.0.0-rc.2.23479.6) - System.Text.Json (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection (8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Abstractions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Physical (8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileProviders.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileSystemGlobbing (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.FileSystemGlobbing (8.0.0-rc.2.23479.6) - Microsoft.Extensions.Logging (8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Logging.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Logging.Abstractions (8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Options (8.0.0-rc.2.23479.6) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (>= 8.0.0-rc.2.23479.6) - Microsoft.Extensions.Primitives (8.0.0-rc.2.23479.6) - Microsoft.JSInterop (8.0.0-rc.2.23480.2) - Microsoft.JSInterop.WebAssembly (8.0.0-rc.2.23480.2) - Microsoft.JSInterop (>= 8.0.0-rc.2.23480.2) + Microsoft.Extensions.Configuration (8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Configuration.Abstractions (8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Configuration.Binder (8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.Configuration.FileExtensions (8.0) + Microsoft.Extensions.Configuration (>= 8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.FileProviders.Abstractions (>= 8.0) + Microsoft.Extensions.FileProviders.Physical (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Configuration.Json (8.0) + Microsoft.Extensions.Configuration (>= 8.0) + Microsoft.Extensions.Configuration.Abstractions (>= 8.0) + Microsoft.Extensions.Configuration.FileExtensions (>= 8.0) + Microsoft.Extensions.FileProviders.Abstractions (>= 8.0) + System.Text.Json (>= 8.0) + Microsoft.Extensions.DependencyInjection (8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (8.0) + Microsoft.Extensions.FileProviders.Abstractions (8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.FileProviders.Physical (8.0) + Microsoft.Extensions.FileProviders.Abstractions (>= 8.0) + Microsoft.Extensions.FileSystemGlobbing (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.FileSystemGlobbing (8.0) + Microsoft.Extensions.Logging (8.0) + Microsoft.Extensions.DependencyInjection (>= 8.0) + Microsoft.Extensions.Logging.Abstractions (>= 8.0) + Microsoft.Extensions.Options (>= 8.0) + Microsoft.Extensions.Logging.Abstractions (8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.Options (8.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0) + Microsoft.Extensions.Primitives (>= 8.0) + Microsoft.Extensions.Primitives (8.0) + Microsoft.JSInterop (8.0) + Microsoft.JSInterop.WebAssembly (8.0) + Microsoft.JSInterop (>= 8.0) Microsoft.OpenApi (1.6.10) - System.IO.Pipelines (8.0.0-rc.2.23479.6) - System.Text.Encodings.Web (8.0.0-rc.2.23479.6) - System.Text.Json (8.0.0-rc.2.23479.6) - System.Text.Encodings.Web (>= 8.0.0-rc.2.23479.6) + System.IO.Pipelines (8.0) + System.Text.Encodings.Web (8.0) + System.Text.Json (8.0) + System.Text.Encodings.Web (>= 8.0) diff --git a/src/Bolero.Server/paket.template b/src/Bolero.Server/paket.template index 9e61209b..1bba8e71 100644 --- a/src/Bolero.Server/paket.template +++ b/src/Bolero.Server/paket.template @@ -16,6 +16,6 @@ dependencies framework: net6.0 framework: net7.0 framework: net8.0 - Microsoft.AspNetCore.Components.Web >= 8.0-rc.2.23480.2 - Microsoft.AspNetCore.Components.WebAssembly >= 8.0-rc.2.23480.2 - Microsoft.JSInterop.WebAssembly >= 8.0-rc.2.23480.2 + Microsoft.AspNetCore.Components.Web >= 8.0 + Microsoft.AspNetCore.Components.WebAssembly >= 8.0 + Microsoft.JSInterop.WebAssembly >= 8.0 diff --git a/src/Bolero/paket.template b/src/Bolero/paket.template index 7a378a6b..0a836f1b 100644 --- a/src/Bolero/paket.template +++ b/src/Bolero/paket.template @@ -29,5 +29,5 @@ dependencies Microsoft.JSInterop.WebAssembly ~> 7.0 Microsoft.AspNetCore.Components.WebAssembly ~> 7.0 framework: net8.0 - Microsoft.JSInterop.WebAssembly ~> 8.0 - Microsoft.AspNetCore.Components.WebAssembly ~> 8.0 + Microsoft.JSInterop.WebAssembly >= 8.0 + Microsoft.AspNetCore.Components.WebAssembly >= 8.0 From 49b9d02dc51b5f462800808980aa04765f485215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Denuzi=C3=A8re?= Date: Sat, 18 Nov 2023 14:11:25 +0100 Subject: [PATCH 4/7] fix hash scrolling on first render --- src/Bolero/Components.fs | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/Bolero/Components.fs b/src/Bolero/Components.fs index c9a26e45..8c943540 100644 --- a/src/Bolero/Components.fs +++ b/src/Bolero/Components.fs @@ -231,22 +231,19 @@ and [] | None -> initModel, [] override this.OnAfterRenderAsync(firstRender) = - if firstRender then - runProgramLoop() - if router.IsSome then - this.NavigationInterception.EnableNavigationInterceptionAsync() - else - Task.CompletedTask - else + task { + if firstRender then + runProgramLoop() + if router.IsSome then + do! this.NavigationInterception.EnableNavigationInterceptionAsync() + match routeHash with - | None -> - Task.CompletedTask + | None -> () | Some h -> routeHash <- None - task { - let! elt = this.JSRuntime.InvokeAsync("document.getElementById", h) - return! elt.InvokeVoidAsync("scrollIntoView") - } + let! elt = this.JSRuntime.InvokeAsync("document.getElementById", h) + return! elt.InvokeVoidAsync("scrollIntoView") + } override this.Render() = view From 9dac1d747f78cdbea9309e1b86ffcb5d39d7bcc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Denuzi=C3=A8re?= Date: Mon, 20 Nov 2023 14:20:44 +0100 Subject: [PATCH 5/7] fix: github action test report on pull requests (#338) --- .github/workflows/build.yml | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bc176287..c8931a42 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -57,23 +57,13 @@ jobs: name: TestResults path: tests/Unit/TestResults/*.trx - report: - needs: build - if: github.event.pull_request.head.repo.full_name == github.repository - runs-on: ubuntu-latest - - steps: - - name: Download test results - uses: actions/download-artifact@v2 - with: - name: TestResults - - - name: Report tests - uses: dorny/test-reporter@v1 - with: - name: Unit tests - path: TestResults/*.trx - reporter: dotnet-trx + - name: Report tests + if: ${{ ! (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) }} + uses: dorny/test-reporter@v1 + with: + name: Unit tests + path: tests/Unit/TestResults/*.trx + reporter: dotnet-trx prerelease: runs-on: ubuntu-latest From 40e3d78696b6b4446b6c4cb3497fcdd3500f506b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Denuzi=C3=A8re?= Date: Mon, 20 Nov 2023 13:16:07 +0100 Subject: [PATCH 6/7] fix: support scoped CSS in Node.Elt (#336) --- .../Bolero.Templating.Provider.fsproj | 1 + src/Bolero/Attr.fs | 10 +--------- src/Bolero/Bolero.fsproj | 5 +++-- src/Bolero/Components.fs | 2 +- src/Bolero/Node.fs | 15 +++++++++----- src/Bolero/NodeTypes.fs | 20 +++++++++++++++++++ src/Bolero/Router.fs | 4 +++- .../Library.fs | 1 + tests/Server/Startup.fs | 3 ++- tests/Unit.Client/Templating.fs | 14 +++++++++++++ tests/Unit/Tests/Templating.fs | 10 ++++++++++ 11 files changed, 66 insertions(+), 19 deletions(-) create mode 100644 src/Bolero/NodeTypes.fs diff --git a/src/Bolero.Templating.Provider/Bolero.Templating.Provider.fsproj b/src/Bolero.Templating.Provider/Bolero.Templating.Provider.fsproj index fcc0663d..cb94837a 100644 --- a/src/Bolero.Templating.Provider/Bolero.Templating.Provider.fsproj +++ b/src/Bolero.Templating.Provider/Bolero.Templating.Provider.fsproj @@ -17,6 +17,7 @@ True paket-files/ProvidedTypes.fs + diff --git a/src/Bolero/Attr.fs b/src/Bolero/Attr.fs index 55a2a349..24185179 100644 --- a/src/Bolero/Attr.fs +++ b/src/Bolero/Attr.fs @@ -20,15 +20,7 @@ namespace Bolero -open Microsoft.AspNetCore.Components - -/// -/// HTML attribute or Blazor component parameter. -/// Use or to create attributes. -/// -/// HTML -type Attr = delegate of obj * Rendering.RenderTreeBuilder * int -> int - +[] module Attr = /// Create an HTML attribute or a component parameter. diff --git a/src/Bolero/Bolero.fsproj b/src/Bolero/Bolero.fsproj index c991ca0a..6bbcd024 100644 --- a/src/Bolero/Bolero.fsproj +++ b/src/Bolero/Bolero.fsproj @@ -9,11 +9,12 @@ - - + + + diff --git a/src/Bolero/Components.fs b/src/Bolero/Components.fs index 8c943540..483fbcc0 100644 --- a/src/Bolero/Components.fs +++ b/src/Bolero/Components.fs @@ -117,7 +117,7 @@ and [] inherit Component<'model>() let mutable oldModel = None - let mutable view = Node.Empty() + let mutable view = Node(fun _ _ s -> s) let mutable runProgramLoop = fun () -> () let mutable dispatch = ignore<'msg> let mutable program = Unchecked.defaultof> diff --git a/src/Bolero/Node.fs b/src/Bolero/Node.fs index 7b94232d..b4f7507b 100644 --- a/src/Bolero/Node.fs +++ b/src/Bolero/Node.fs @@ -26,10 +26,6 @@ open System open FSharp.Reflection open Microsoft.AspNetCore.Components -/// An HTML fragment. -/// HTML -type Node = delegate of obj * Rendering.RenderTreeBuilder * int -> int - /// [] type Matcher<'T> private () = @@ -51,6 +47,7 @@ type Matcher<'T> private () = let tagReader = FSharpValue.PreComputeUnionTagReader(typeof<'T>) fun (x: 'T) -> tagReader (box x) +[] module Node = /// Create an empty HTML fragment. @@ -65,7 +62,15 @@ module Node = /// let inline Elt name (attrs: seq) (children: seq) = Node(fun comp tb i -> tb.OpenElement(i, name) - let mutable i = i + 1 + + match comp with + | :? Component as c -> + match c.CssScope with + | null -> () + | s -> tb.AddAttribute(i + 1, s) + | _ -> () + + let mutable i = i + 2 for attr in attrs do i <- attr.Invoke(comp, tb, i) for node in children do diff --git a/src/Bolero/NodeTypes.fs b/src/Bolero/NodeTypes.fs new file mode 100644 index 00000000..53b1ea22 --- /dev/null +++ b/src/Bolero/NodeTypes.fs @@ -0,0 +1,20 @@ +namespace Bolero + +open Microsoft.AspNetCore.Components.Rendering + +/// +/// HTML attribute or Blazor component parameter. +/// Use or to create attributes. +/// +/// HTML +type Attr = delegate of obj * RenderTreeBuilder * int -> int + +/// An HTML fragment. +/// HTML +type Node = delegate of obj * RenderTreeBuilder * int -> int + +#if IS_DESIGNTIME +type Component() = + inherit Microsoft.AspNetCore.Components.ComponentBase() + member _.CssScope = "" +#endif diff --git a/src/Bolero/Router.fs b/src/Bolero/Router.fs index 146a5c00..883c0d12 100644 --- a/src/Bolero/Router.fs +++ b/src/Bolero/Router.fs @@ -974,4 +974,6 @@ type RouterExtensions = /// An href attribute pointing to the given endpoint. [] static member HRef(this: Router<'ep, _, _>, endpoint: 'ep, [] hash: string) : Attr = - Attr.Make "href" (this.Link(endpoint, hash)) + Attr(fun _ tb i -> + tb.AddAttribute(i, "href", this.Link(endpoint, hash)) + i + 1) diff --git a/src/tpdummy/Microsoft.AspNetCore.Components/Library.fs b/src/tpdummy/Microsoft.AspNetCore.Components/Library.fs index 7362a4ce..19dd70e9 100644 --- a/src/tpdummy/Microsoft.AspNetCore.Components/Library.fs +++ b/src/tpdummy/Microsoft.AspNetCore.Components/Library.fs @@ -17,6 +17,7 @@ type RenderTreeBuilder = member _.OpenComponent(_: int, _: Type) : unit = raise (NotImplementedException()) member _.CloseComponent() : unit = raise (NotImplementedException()) member _.AddAttribute(_: int, _: string, _: obj) : unit = raise (NotImplementedException()) + member _.AddAttribute(_: int, _: string) : unit = raise (NotImplementedException()) member _.AddContent(_: int, _: string) : unit = raise (NotImplementedException()) member _.AddMarkupContent(_: int, _: string) : unit = raise (NotImplementedException()) member _.OpenRegion(_: int) : unit = raise (NotImplementedException()) diff --git a/tests/Server/Startup.fs b/tests/Server/Startup.fs index d4f2fe94..6df3d9e2 100644 --- a/tests/Server/Startup.fs +++ b/tests/Server/Startup.fs @@ -33,7 +33,8 @@ type Startup() = member this.ConfigureServices(services: IServiceCollection) = services.AddMvc() |> ignore services.AddServerSideBlazor() |> ignore - services.AddBoleroHost(server = false) |> ignore + services.AddBoleroHost(prerendered = true) |> ignore + services.AddLogging() |> ignore member this.Configure(app: IApplicationBuilder) = app diff --git a/tests/Unit.Client/Templating.fs b/tests/Unit.Client/Templating.fs index 4cf51caa..ad5de345 100644 --- a/tests/Unit.Client/Templating.fs +++ b/tests/Unit.Client/Templating.fs @@ -199,6 +199,19 @@ type RefTester() = Refs().Elt() } +type TemplateForScopedCss = Template<""" +${Text} + +"""> + +type ScopedCssTester() = + inherit Component() + + override _.CssScope = "dummy-scope" + + override _.Render() = + TemplateForScopedCss().Text("content").Elt() + type ``Regression #11`` = Template<"""${Hole}"""> type ``Regression #256`` = Template<""" @@ -243,4 +256,5 @@ let Tests() = comp comp comp + comp } diff --git a/tests/Unit/Tests/Templating.fs b/tests/Unit/Tests/Templating.fs index f4b4d68d..4fcfb8c2 100644 --- a/tests/Unit/Tests/Templating.fs +++ b/tests/Unit/Tests/Templating.fs @@ -237,6 +237,16 @@ module Templating = btn.Click() elt.Eventually <@ btn.Text = "Template ref is bound" @> + [] + let ``Scoped CSS is propagated to elements that have holes``() = + let elt = elt.ById("holed-must-be-scoped") + testNotNull <@ elt.GetAttribute("dummy-scope") @> + + [] + let ``Scoped CSS is propagated to elements that don't have holes``() = + let elt = elt.ById("non-holed-must-be-scoped") + testNotNull <@ elt.GetAttribute("dummy-scope") @> + [] let ``Regression #11: common hole in attrs and children``() = test <@ elt.ByClass("regression-11").Text = "regression-11" @> From 9a7481c41cea7b1b6bf12f323216bcb99aac049c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Denuzi=C3=A8re?= Date: Mon, 20 Nov 2023 13:44:34 +0100 Subject: [PATCH 7/7] fix: support scoped CSS in templates by default (#336) --- src/Bolero.Templating.Provider/Parsing.fs | 28 +++++++++++----------- src/Bolero.Templating.Provider/Provider.fs | 12 ++++++---- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/Bolero.Templating.Provider/Parsing.fs b/src/Bolero.Templating.Provider/Parsing.fs index 040b2ef2..8f48a859 100644 --- a/src/Bolero.Templating.Provider/Parsing.fs +++ b/src/Bolero.Templating.Provider/Parsing.fs @@ -307,7 +307,7 @@ let ParseAttribute (ownerNode: HtmlNode) (attr: HtmlAttribute) : Parsed = | _ -> WithVars parsed.Vars [Attr(name, Concat parsed.Expr)] -let rec ParseNode (node: HtmlNode) : Parsed = +let rec ParseNode (optimizeHtml: bool) (node: HtmlNode) : Parsed = match node.NodeType with | HtmlNodeType.Element -> let name = node.Name @@ -317,13 +317,9 @@ let rec ParseNode (node: HtmlNode) : Parsed = |> Parsed.Concat let children = node.ChildNodes - |> Seq.map ParseNode + |> Seq.map (ParseNode optimizeHtml) |> Parsed.Concat - if HasVars attrs || HasVars children then - (attrs, children) - ||> Parsed.Map2 (fun attrs children -> - [Elt (name, attrs, children)]) - else + if optimizeHtml && not (HasVars attrs || HasVars children) then // Node has no vars, we can represent it as raw HTML for performance. let rec removeComments (n: HtmlNode) = if isNull n then () else @@ -333,15 +329,19 @@ let rec ParseNode (node: HtmlNode) : Parsed = | _ -> n.Remove() removeComments nxt NoVars [PlainHtml node.OuterHtml] + else + (attrs, children) + ||> Parsed.Map2 (fun attrs children -> + [Elt (name, attrs, children)]) | HtmlNodeType.Text -> // Using .InnerHtml and RawHtml to properly interpret HTML entities. ParseText (node :?> HtmlTextNode).InnerHtml HoleType.Html | _ -> NoVars [] // Ignore comments -let ParseOneTemplate (nodes: HtmlNodeCollection) : Parsed = +let ParseOneTemplate (optimizeHtml: bool) (nodes: HtmlNodeCollection) : Parsed = nodes - |> Seq.map ParseNode + |> Seq.map (ParseNode optimizeHtml) |> Parsed.Concat type ParsedTemplates = @@ -351,7 +351,7 @@ type ParsedTemplates = Nested: Map } -let ParseDoc (filename: option) (doc: HtmlDocument) : ParsedTemplates = +let ParseDoc (optimizeHtml: bool) (filename: option) (doc: HtmlDocument) : ParsedTemplates = let nested = let templateNodes = match doc.DocumentNode.SelectNodes("//template") with @@ -366,12 +366,12 @@ let ParseDoc (filename: option) (doc: HtmlDocument) : ParsedTemplates = | null -> failwith "Nested template must have an id" // at {n.Line}:{n.LinePosition}" | id -> - let parsed = ParseOneTemplate n.ChildNodes + let parsed = ParseOneTemplate optimizeHtml n.ChildNodes n.Remove() (id, parsed) ) |> Map.ofSeq - let main = ParseOneTemplate doc.DocumentNode.ChildNodes + let main = ParseOneTemplate optimizeHtml doc.DocumentNode.ChildNodes { Filename = filename; Main = main; Nested = nested } /// Get the HTML document for the given type provider argument, either inline or from a file. @@ -389,6 +389,6 @@ let GetDoc (fileOrContent: string) (rootFolder: string) : option * HtmlD Some (Path.GetRelativePath rootFolder fullPath), doc /// Parse a type provider argument into a set of templates. -let ParseFileOrContent (fileOrContent: string) (rootFolder: string) : ParsedTemplates = +let ParseFileOrContent (fileOrContent: string) (rootFolder: string) (optimizeHtml: bool) : ParsedTemplates = GetDoc fileOrContent rootFolder - ||> ParseDoc + ||> ParseDoc optimizeHtml diff --git a/src/Bolero.Templating.Provider/Provider.fs b/src/Bolero.Templating.Provider/Provider.fs index af00d83f..dc702951 100644 --- a/src/Bolero.Templating.Provider/Provider.fs +++ b/src/Bolero.Templating.Provider/Provider.fs @@ -62,18 +62,20 @@ type Template (cfg: TypeProviderConfig) as this = do try let templateTy = ProvidedTypeDefinition(thisAssembly, rootNamespace, "Template", None, isErased = false) - let sp = ProvidedStaticParameter("pathOrHtml", typeof) - sp.AddXmlDoc("The path to an HTML file, or an HTML string directly.") - templateTy.DefineStaticParameters([sp], fun typename pars -> + let pathOrHtmlParam = ProvidedStaticParameter("pathOrHtml", typeof) + pathOrHtmlParam.AddXmlDoc("The path to an HTML file, or an HTML string directly.") + let optimizeHtmlParam = ProvidedStaticParameter("optimizePlainHtml", typeof, false) + optimizeHtmlParam.AddXmlDoc("Optimize the rendering of HTML segments that don't contain any holes. Warning: this is incompatible with the use of CSS scopes.") + templateTy.DefineStaticParameters([pathOrHtmlParam; optimizeHtmlParam], fun typename pars -> match pars with - | [| :? string as pathOrHtml |] -> + | [| :? string as pathOrHtml; :? bool as optimizeHtml |] -> let ty, _ = cache.GetOrAdd(pathOrHtml, fun key -> let asm = ProvidedAssembly() let ty = ProvidedTypeDefinition(asm, rootNamespace, typename, Some typeof, isErased = false, hideObjectMethods = true) - let content = Parsing.ParseFileOrContent pathOrHtml cfg.ResolutionFolder + let content = Parsing.ParseFileOrContent pathOrHtml cfg.ResolutionFolder optimizeHtml CodeGen.Populate ty content asm.AddTypes([ty]) let fileWatcher = content.Filename |> Option.map (watchFileChanges key)