From 315a0c9f7d141ab5bdf1ce54870ef8b600913940 Mon Sep 17 00:00:00 2001 From: David Pine Date: Thu, 14 Nov 2024 10:14:28 -0600 Subject: [PATCH] Upgrade to .NET 9.0 --- .github/workflows/build-validation.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/pr-validation.yml | 2 +- .github/workflows/publish-nuget.yml | 2 +- Directory.Build.props | 7 +- Directory.Packages.props | 26 +++---- HaveIBeenPwned.sln | 14 ---- README.md | 2 +- samples/Directory.Build.props | 2 +- .../HaveIBeenPwned.BlazorApp/Client/App.razor | 11 --- .../HaveIBeenPwned.BlazorApp.Client.csproj | 17 ----- .../Client/Pages/Counter.razor | 13 ---- .../Client/Pages/FetchData.razor | 6 -- .../Client/Pages/Index.razor | 5 -- .../Client/Program.cs | 12 --- .../Client/Shared/MainLayout.razor | 56 -------------- .../Client/Shared/MainLayout.razor.css | 70 ------------------ .../Client/_Imports.razor | 10 --- .../Client/wwwroot/css/app.css | 60 --------------- .../Client/wwwroot/favicon.ico | Bin 5430 -> 0 bytes .../Client/wwwroot/icon-192.png | Bin 2626 -> 0 bytes .../Client/wwwroot/index.html | 41 ---------- .../Client/wwwroot/media/blazor-logo.png | Bin 15490 -> 0 bytes .../Extensions/RouteGroupBuilderExtensions.cs | 24 ------ .../Server/GlobalUsings.cs | 4 - .../HaveIBeenPwned.BlazorApp.Server.csproj | 19 ----- .../Server/Pages/Error.cshtml | 42 ----------- .../Server/Pages/Error.cshtml.cs | 19 ----- .../Server/Program.cs | 48 ------------ .../Server/appsettings.Development.json | 9 --- .../Server/appsettings.json | 10 --- .../HaveIBeenPwned.BlazorApp.Shared.csproj | 11 --- .../Shared/WeatherForecast.cs | 12 --- .../HaveIBeenPwned.MinimalApi.csproj | 1 + .../HaveIBeenPwned.WebApi.csproj | 4 + .../HaveIBeenPwned.Client.Abstractions.csproj | 3 +- ...veIBeenPwned.Client.PollyExtensions.csproj | 3 +- .../HaveIBeenPwned.Client.csproj | 3 +- .../Options/HibpOptions.cs | 8 +- tests/Directory.Build.props | 2 +- ...IBeenPwned.Client.AbstractionsTests.csproj | 6 +- ...veIBeenPwned.Client.AcceptanceTests.csproj | 6 +- ...enPwned.Client.PollyExtensionsTests.csproj | 6 +- .../HaveIBeenPwned.ClientTests.csproj | 6 +- 44 files changed, 55 insertions(+), 551 deletions(-) delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/App.razor delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/HaveIBeenPwned.BlazorApp.Client.csproj delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/Pages/Counter.razor delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/Pages/FetchData.razor delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/Pages/Index.razor delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/Program.cs delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/Shared/MainLayout.razor delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/Shared/MainLayout.razor.css delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/_Imports.razor delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/css/app.css delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/favicon.ico delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/icon-192.png delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/index.html delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/media/blazor-logo.png delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Server/Extensions/RouteGroupBuilderExtensions.cs delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Server/GlobalUsings.cs delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Server/HaveIBeenPwned.BlazorApp.Server.csproj delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Server/Pages/Error.cshtml delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Server/Pages/Error.cshtml.cs delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Server/Program.cs delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Server/appsettings.Development.json delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Server/appsettings.json delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Shared/HaveIBeenPwned.BlazorApp.Shared.csproj delete mode 100644 samples/HaveIBeenPwned.BlazorApp/Shared/WeatherForecast.cs diff --git a/.github/workflows/build-validation.yml b/.github/workflows/build-validation.yml index ef210dd..de7bffe 100644 --- a/.github/workflows/build-validation.yml +++ b/.github/workflows/build-validation.yml @@ -14,7 +14,7 @@ on: default: 'Manual build' env: - DOTNET_VERSION: '8.0.x' # set this to the dot net version to use + DOTNET_VERSION: '9.0.x' # set this to the dot net version to use jobs: build: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 547d15b..2982b9e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -28,7 +28,7 @@ on: default: 'Manual build' env: - DOTNET_VERSION: '8.0.x' # set this to the dot net version to use + DOTNET_VERSION: '9.0.x' # set this to the dot net version to use jobs: analyze: diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index 01df93c..459f50b 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -8,7 +8,7 @@ on: - '**.csproj' env: - DOTNET_VERSION: '8.0.x' # set this to the dot net version to use + DOTNET_VERSION: '9.0.x' # set this to the dot net version to use jobs: validate: diff --git a/.github/workflows/publish-nuget.yml b/.github/workflows/publish-nuget.yml index f3fdf5b..8fe0b4b 100644 --- a/.github/workflows/publish-nuget.yml +++ b/.github/workflows/publish-nuget.yml @@ -26,7 +26,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v4 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Restore dependencies run: | diff --git a/Directory.Build.props b/Directory.Build.props index 45c2e31..a7b75b8 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,7 +1,7 @@ - net8.0 + net9.0 preview enable enable @@ -10,10 +10,7 @@ true true true - - - - true + true \ No newline at end of file diff --git a/Directory.Packages.props b/Directory.Packages.props index d6a5aff..b4f4acd 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,26 +1,24 @@ true - 8.0.1 - 8.0.0 - - - + + + - + - - - - - - - - + + + + + + + + diff --git a/HaveIBeenPwned.sln b/HaveIBeenPwned.sln index ce89a9e..6dfd69e 100644 --- a/HaveIBeenPwned.sln +++ b/HaveIBeenPwned.sln @@ -34,10 +34,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HaveIBeenPwned.MinimalApi", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HaveIBeenPwned.Client.Abstractions", "src\HaveIBeenPwned.Client.Abstractions\HaveIBeenPwned.Client.Abstractions.csproj", "{9C452881-7278-455B-A47F-105FA05DEACE}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HaveIBeenPwned.BlazorApp.Client", "samples\HaveIBeenPwned.BlazorApp\Client\HaveIBeenPwned.BlazorApp.Client.csproj", "{545FF986-D9A1-4EAD-8022-F4A7D4AF9938}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HaveIBeenPwned.BlazorApp.Server", "samples\HaveIBeenPwned.BlazorApp\Server\HaveIBeenPwned.BlazorApp.Server.csproj", "{74857A8E-6DA4-43CC-BB55-F019E1AAE397}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HaveIBeenPwned.Client.PollyExtensions", "src\HaveIBeenPwned.Client.PollyExtensions\HaveIBeenPwned.Client.PollyExtensions.csproj", "{13901B13-2A98-4115-AB0A-5C206711EFBC}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HaveIBeenPwned.Client.AbstractionsTests", "tests\HaveIBeenPwned.Client.AbstractionsTests\HaveIBeenPwned.Client.AbstractionsTests.csproj", "{7A84DA2F-60D0-4297-9566-E0E08E3F9A93}" @@ -72,14 +68,6 @@ Global {9C452881-7278-455B-A47F-105FA05DEACE}.Debug|Any CPU.Build.0 = Debug|Any CPU {9C452881-7278-455B-A47F-105FA05DEACE}.Release|Any CPU.ActiveCfg = Release|Any CPU {9C452881-7278-455B-A47F-105FA05DEACE}.Release|Any CPU.Build.0 = Release|Any CPU - {545FF986-D9A1-4EAD-8022-F4A7D4AF9938}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {545FF986-D9A1-4EAD-8022-F4A7D4AF9938}.Debug|Any CPU.Build.0 = Debug|Any CPU - {545FF986-D9A1-4EAD-8022-F4A7D4AF9938}.Release|Any CPU.ActiveCfg = Release|Any CPU - {545FF986-D9A1-4EAD-8022-F4A7D4AF9938}.Release|Any CPU.Build.0 = Release|Any CPU - {74857A8E-6DA4-43CC-BB55-F019E1AAE397}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {74857A8E-6DA4-43CC-BB55-F019E1AAE397}.Debug|Any CPU.Build.0 = Debug|Any CPU - {74857A8E-6DA4-43CC-BB55-F019E1AAE397}.Release|Any CPU.ActiveCfg = Release|Any CPU - {74857A8E-6DA4-43CC-BB55-F019E1AAE397}.Release|Any CPU.Build.0 = Release|Any CPU {13901B13-2A98-4115-AB0A-5C206711EFBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {13901B13-2A98-4115-AB0A-5C206711EFBC}.Debug|Any CPU.Build.0 = Debug|Any CPU {13901B13-2A98-4115-AB0A-5C206711EFBC}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -106,8 +94,6 @@ Global {D9FEEEE8-1621-46C0-AE64-6E1BF9DF4C8A} = {3044EDD9-13CF-47A3-8589-A7B84AEFE0C1} {1CA5C0A6-14DC-4665-8B3F-9245CC485CB6} = {3044EDD9-13CF-47A3-8589-A7B84AEFE0C1} {9C452881-7278-455B-A47F-105FA05DEACE} = {033A7DA8-9E54-4C45-9674-1FA069A1D587} - {545FF986-D9A1-4EAD-8022-F4A7D4AF9938} = {3044EDD9-13CF-47A3-8589-A7B84AEFE0C1} - {74857A8E-6DA4-43CC-BB55-F019E1AAE397} = {3044EDD9-13CF-47A3-8589-A7B84AEFE0C1} {13901B13-2A98-4115-AB0A-5C206711EFBC} = {033A7DA8-9E54-4C45-9674-1FA069A1D587} {7A84DA2F-60D0-4297-9566-E0E08E3F9A93} = {6B93FD23-7EC5-4866-82BC-5C091FA6589B} {6BFF5F8C-B5C6-4724-BEC8-5CFD16492BE4} = {6B93FD23-7EC5-4866-82BC-5C091FA6589B} diff --git a/README.md b/README.md index 1a9cd65..eed3a66 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Then you can require any of the available DI-ready types: ### Without dependency injection -If you're not using the DI approach, simply instaniate `PwnedClient` with your API key and use it as you see fit. +If you're not using the DI approach, simply instantiate `PwnedClient` with your API key and use it as you see fit. ```csharp IPwnedClient client = new PwnedClient(""); diff --git a/samples/Directory.Build.props b/samples/Directory.Build.props index 16accd8..4ae1000 100644 --- a/samples/Directory.Build.props +++ b/samples/Directory.Build.props @@ -1,7 +1,7 @@ - net8.0 + net9.0 preview enable enable diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/App.razor b/samples/HaveIBeenPwned.BlazorApp/Client/App.razor deleted file mode 100644 index 1901f4e..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/App.razor +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - -

Sorry, there's nothing at this address.

-
-
-
diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/HaveIBeenPwned.BlazorApp.Client.csproj b/samples/HaveIBeenPwned.BlazorApp/Client/HaveIBeenPwned.BlazorApp.Client.csproj deleted file mode 100644 index c4fe934..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/HaveIBeenPwned.BlazorApp.Client.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - false - - - - - - - - - - - - - diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/Pages/Counter.razor b/samples/HaveIBeenPwned.BlazorApp/Client/Pages/Counter.razor deleted file mode 100644 index 534e1bc..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/Pages/Counter.razor +++ /dev/null @@ -1,13 +0,0 @@ -@page "/counter" - -

Counter

- -

Current count: @currentCount

- - - -@code { - private int currentCount = 0; - - private void IncrementCount() => currentCount++; -} diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/Pages/FetchData.razor b/samples/HaveIBeenPwned.BlazorApp/Client/Pages/FetchData.razor deleted file mode 100644 index 98f126f..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/Pages/FetchData.razor +++ /dev/null @@ -1,6 +0,0 @@ -@page "/fetchdata" -@inject HttpClient Http - -

Weather forecast

- -

This component demonstrates fetching data from the server.

diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/Pages/Index.razor b/samples/HaveIBeenPwned.BlazorApp/Client/Pages/Index.razor deleted file mode 100644 index c122431..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/Pages/Index.razor +++ /dev/null @@ -1,5 +0,0 @@ -@page "/" - -

Hello, world!

- -Welcome to your new app. diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/Program.cs b/samples/HaveIBeenPwned.BlazorApp/Client/Program.cs deleted file mode 100644 index 1085063..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/Program.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) David Pine. All rights reserved. -// Licensed under the MIT License. - -using HaveIBeenPwned.BlazorApp.Client; -using Microsoft.AspNetCore.Components.WebAssembly.Hosting; - -var builder = WebAssemblyHostBuilder.CreateDefault(args); -builder.RootComponents.Add("#app"); - -builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); - -await builder.Build().RunAsync(); diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/Shared/MainLayout.razor b/samples/HaveIBeenPwned.BlazorApp/Client/Shared/MainLayout.razor deleted file mode 100644 index 0375654..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/Shared/MainLayout.razor +++ /dev/null @@ -1,56 +0,0 @@ -@inherits LayoutComponentBase - -
-
- -
- -
-
- @Body -
-
- -
-
-

- The "';-- Have I Been Pwned? .NET HTTP Client" by David Pine. -

-

- The source code is - licensed MIT. -

-

- @System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription -

-
-
- -
diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/Shared/MainLayout.razor.css b/samples/HaveIBeenPwned.BlazorApp/Client/Shared/MainLayout.razor.css deleted file mode 100644 index 699f17c..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/Shared/MainLayout.razor.css +++ /dev/null @@ -1,70 +0,0 @@ -.page { - position: relative; - display: flex; - flex-direction: column; -} - -main { - flex: 1; -} - -.sidebar { - background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); -} - -.top-row { - background-color: #f7f7f7; - border-bottom: 1px solid #d6d5d5; - justify-content: flex-end; - height: 3.5rem; - display: flex; - align-items: center; -} - - .top-row ::deep a, .top-row .btn-link { - white-space: nowrap; - margin-left: 1.5rem; - } - - .top-row a:first-child { - overflow: hidden; - text-overflow: ellipsis; - } - -@media (max-width: 640.98px) { - .top-row:not(.auth) { - display: none; - } - - .top-row.auth { - justify-content: space-between; - } - - .top-row a, .top-row .btn-link { - margin-left: 0; - } -} - -@media (min-width: 641px) { - .page { - flex-direction: row; - } - - .sidebar { - width: 250px; - height: 100vh; - position: sticky; - top: 0; - } - - .top-row { - position: sticky; - top: 0; - z-index: 1; - } - - .top-row, article { - padding-left: 2rem !important; - padding-right: 1.5rem !important; - } -} diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/_Imports.razor b/samples/HaveIBeenPwned.BlazorApp/Client/_Imports.razor deleted file mode 100644 index fb8fe1e..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/_Imports.razor +++ /dev/null @@ -1,10 +0,0 @@ -@using System.Net.Http -@using System.Net.Http.Json -@using Microsoft.AspNetCore.Components.Forms -@using Microsoft.AspNetCore.Components.Routing -@using Microsoft.AspNetCore.Components.Web -@using Microsoft.AspNetCore.Components.Web.Virtualization -@using Microsoft.AspNetCore.Components.WebAssembly.Http -@using Microsoft.JSInterop -@using HaveIBeenPwned.BlazorApp.Client -@using HaveIBeenPwned.BlazorApp.Client.Shared diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/css/app.css b/samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/css/app.css deleted file mode 100644 index 596b7ff..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/css/app.css +++ /dev/null @@ -1,60 +0,0 @@ -@import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); - -html, body { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; -} - -a, .btn-link { - color: #0077cc; -} - -.btn-primary { - color: #fff; - background-color: #1b6ec2; - border-color: #1861ac; -} - -.content { - padding-top: 1.1rem; -} - -.valid.modified:not([type=checkbox]) { - outline: 1px solid #26b050; -} - -.invalid { - outline: 1px solid red; -} - -.validation-message { - color: red; -} - -#blazor-error-ui { - background: lightyellow; - bottom: 0; - box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); - display: none; - left: 0; - padding: 0.6rem 1.25rem 0.7rem 1.25rem; - position: fixed; - width: 100%; - z-index: 1000; -} - - #blazor-error-ui .dismiss { - cursor: pointer; - position: absolute; - right: 0.75rem; - top: 0.5rem; - } - -.blazor-error-boundary { - background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; - padding: 1rem 1rem 1rem 3.7rem; - color: white; -} - - .blazor-error-boundary::after { - content: "An error has occurred." - } diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/favicon.ico b/samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/favicon.ico deleted file mode 100644 index 63e859b476eff5055e0e557aaa151ca8223fbeef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5430 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 diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/index.html b/samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/index.html deleted file mode 100644 index d27ddd1..0000000 --- a/samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - 🔥 #Blazor — 🤬 ';-- Have I Been Pwned? - - - - - - - - - - -
-
-
-
- -
- Blazor WebAssembly: Loading... -
-
-
-
-
- -
- An unhandled error has occurred. - Reload - 🗙 -
- - - - diff --git a/samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/media/blazor-logo.png b/samples/HaveIBeenPwned.BlazorApp/Client/wwwroot/media/blazor-logo.png deleted file mode 100644 index 27e45799926331b4b2cc6659cc29b822ff318f77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15490 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