From afed1dbc81fb183939cb9908afe99db31adb387e Mon Sep 17 00:00:00 2001 From: koeeenig Date: Wed, 13 Dec 2023 09:01:10 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Refactor=20Source=20Code?= =?UTF-8?q?=20Generators=20and=20Migrate=20to=20net8.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Source genereators use IIncrementalGenerator - Added API Routes Generator - Added Mardown Support (Page.md) --- BlazeKit.sln | 23 +- README.md | 32 +++ .../BlazeKit.Abstraction.csproj | 1 + src/BlazeKit.Abstraction/IDeleteRequest.cs | 12 + src/BlazeKit.Abstraction/IGetRequest.cs | 9 + src/BlazeKit.Abstraction/IPatchRequest.cs | 12 + src/BlazeKit.Abstraction/IPostRequest.cs | 10 + src/BlazeKit.Abstraction/IPutRequest.cs | 12 + src/BlazeKit.CLI/BlazeKit.CLI.csproj | 2 +- .../Commands/New/Assets/TPL_NEW_PROJECT.zip | Bin 4273 -> 0 bytes .../New/Assets/TPL_NEW_PROJECT_SERVER.zip | Bin 188334 -> 0 bytes src/BlazeKit.CLI/Commands/New/NewCommand.cs | 178 +++++++++++--- .../Commands/New}/SanititizedNamespace.cs | 2 +- src/BlazeKit.Core/Routing/Navigating.cs | 110 ++++----- .../BlazeKit.Reactivity.csproj} | 0 .../Blazor/Derived.cs | 4 +- .../Blazor/ReactiveComponentEnvelope.cs | 17 ++ .../Blazor/State.cs | 4 +- .../ISignal.cs | 2 +- .../Signals/Computed.cs | 2 +- .../Signals/Effect.cs | 2 +- .../Signals/ReactiveContext.cs | 2 +- .../Signals/Signal.cs | 2 +- .../Signals/SignalEnvelope.cs | 2 +- .../icon.png | Bin src/BlazeKit.Site/App.razor | 7 +- src/BlazeKit.Site/Assets/but-why.md | 14 -- src/BlazeKit.Site/Assets/routing.md | 36 --- src/BlazeKit.Site/Assets/todos.md | 6 - src/BlazeKit.Site/BlazeKit.Site.csproj | 30 +-- .../Components/AnchorNavigation.razor | 46 ++++ src/BlazeKit.Site/Components/Error.razor | 1 + .../Create-A-Project/Page.razor | 14 -- src/BlazeKit.Site/Pages/Layouts/Page.razor | 20 -- src/BlazeKit.Site/Pages/Page.razor | 34 --- src/BlazeKit.Site/Pages/Reactivity/Page.razor | 3 - src/BlazeKit.Site/Pages/Routing/Page.razor | 16 -- .../Create-A-Project/Page.md} | 10 +- .../(Getting-Started)/Layout.razor | 1 + .../(Public)/Items/Details/Layout.razor | 0 .../(Public)/Items/Details/Page.razor} | 0 .../(Public)/Items/Details/[Id]/Page.razor | 6 +- .../(Public)/Items/Layout.razor | 0 .../{Pages => Routes}/(Public)/Layout.razor | 0 .../{Pages => Routes}/Layout.razor | 9 +- src/BlazeKit.Site/Routes/Layouts/Layout.razor | 14 ++ .../layouts.md => Routes/Layouts/Page.md} | 22 +- src/BlazeKit.Site/Routes/Page.md | 34 +++ .../Routes/Reactivity/Basic/Layout.razor | 9 + .../Reactivity/Basic/Page.razor | 9 +- .../{Pages => Routes}/Reactivity/Layout.razor | 0 .../Reactivity/MVVM/Page.razor | 3 +- .../Reactivity/MVVM/VMCounter.cs | 4 +- .../Reactivity/Page.md} | 0 src/BlazeKit.Site/Routes/Routing/Layout.razor | 11 + src/BlazeKit.Site/Routes/Routing/Page.md | 119 ++++++++++ src/BlazeKit.Site/wwwroot/css/app.css | 6 + src/BlazeKit.Site/wwwroot/index.html | 2 +- src/BlazeKit/BlazeKit.csproj | 64 +++-- src/BlazeKit/Config.cs | 60 ----- src/BlazeKit/Layout/ClosestLayout.cs | 12 +- src/BlazeKit/Layout/IsLayout.cs | 2 +- src/BlazeKit/Layout/NestedLayoutsGenerator.cs | 91 +++++++ .../SourceTemplates/ErrorLayoutClassSource.cs | 36 +++ .../LayoutClassSource.cs | 6 +- .../Layout/SourceTemplates/error-layout.tpl | 26 ++ src/BlazeKit/Log.cs | 78 ------ src/BlazeKit/Routes/Api/ApiRoute.cs | 14 ++ src/BlazeKit/Routes/Api/ApiRoutesGenerator.cs | 167 +++++++++++++ .../Routes/Page/MarkdownRoutesGenerator.cs | 80 +++++++ .../Routes/Page/PageRoutesGenerator.cs | 65 +++++ .../Templates/MarkdownRouteClassSource.cs | 64 +++++ .../Page/Templates}/RouteClassSource.cs | 2 +- .../{Routing => Routes}/RouteParameters.cs | 7 +- .../{Routing => Routes}/RouteSegments.cs | 23 +- .../Routing/PageFromMarkdownClassSource.cs | 44 ---- .../RouteAndLayoutGenerator.cs | 223 ------------------ src/BlazeKit/{ => Utils}/IsUnderRoot.cs | 4 +- src/BlazeKit/{ => Utils}/NamespaceSegments.cs | 2 +- src/BlazeKit/Utils/SanititizedNamespace.cs | 28 +++ src/BlazeKit/build/BlazeKit.props | 3 +- .../BlazeKit.Routing.TestApp.csproj | 24 ++ .../BlazorRenderer.cs | 34 +++ .../BlazorWebAssemblyExtensions.cs | 37 +++ .../BlazorWebJSExtensions.cs | 64 +++++ .../CustomHttpContext.cs | 80 +++++++ .../HttpNavigationManager.cs | 18 ++ tests/BlazeKit.Routing.TestApp/MatchResult.cs | 24 ++ tests/BlazeKit.Routing.TestApp/Program.cs | 70 ++++++ .../Properties/launchSettings.json | 38 +++ tests/BlazeKit.Routing.TestApp/Route.cs | 28 +++ .../BlazeKit.Routing.TestApp/RouteManager.cs | 55 +++++ .../Routes/(Public)/About/Layout.razor | 6 + .../Routes/(Public)/About/Page.md | 19 ++ .../Routes/(Public)/Contact/Page.md | 3 + .../Routes/(Public)/Layout.razor | 7 + .../Routes/(Public)/Pricing/Page.md | 11 + .../Routes/(Public)/Terms/Page.md | 24 ++ .../Routes/Api/Test/Server.cs | 12 + .../BlazeKit.Routing.TestApp/Routes/App.razor | 26 ++ .../Routes/Layout.razor | 28 +++ .../Routes/Layout.razor.css | 18 ++ tests/BlazeKit.Routing.TestApp/Routes/Page.md | 31 +++ .../Routes/Routes.razor | 6 + .../Routes/Test/Page.razor | 5 + .../Routes/Test/[Id]/Layout.razor | 6 + .../Routes/Test/[Id]/Page.razor | 5 + tests/BlazeKit.Routing.TestApp/_Imports.razor | 9 + .../appsettings.Development.json | 8 + .../BlazeKit.Routing.TestApp/appsettings.json | 9 + .../BlazeKit.Routing.TestApp/wwwroot/app.css | 29 +++ .../wwwroot/images/blazekit-logo.svg | 4 + .../images/blazekit-social-preview-image.png | Bin 0 -> 18459 bytes .../wwwroot/images/github-mark.svg | 1 + 114 files changed, 2006 insertions(+), 760 deletions(-) create mode 100644 src/BlazeKit.Abstraction/IDeleteRequest.cs create mode 100644 src/BlazeKit.Abstraction/IGetRequest.cs create mode 100644 src/BlazeKit.Abstraction/IPatchRequest.cs create mode 100644 src/BlazeKit.Abstraction/IPostRequest.cs create mode 100644 src/BlazeKit.Abstraction/IPutRequest.cs delete mode 100644 src/BlazeKit.CLI/Commands/New/Assets/TPL_NEW_PROJECT.zip delete mode 100644 src/BlazeKit.CLI/Commands/New/Assets/TPL_NEW_PROJECT_SERVER.zip rename src/{BlazeKit => BlazeKit.CLI/Commands/New}/SanititizedNamespace.cs (97%) rename src/{BlazeKit.Reactive/BlazeKit.Reactive.csproj => BlazeKit.Reactivity/BlazeKit.Reactivity.csproj} (100%) rename src/{BlazeKit.Reactive => BlazeKit.Reactivity}/Blazor/Derived.cs (96%) create mode 100644 src/BlazeKit.Reactivity/Blazor/ReactiveComponentEnvelope.cs rename src/{BlazeKit.Reactive => BlazeKit.Reactivity}/Blazor/State.cs (95%) rename src/{BlazeKit.Reactive => BlazeKit.Reactivity}/ISignal.cs (90%) rename src/{BlazeKit.Reactive => BlazeKit.Reactivity}/Signals/Computed.cs (95%) rename src/{BlazeKit.Reactive => BlazeKit.Reactivity}/Signals/Effect.cs (96%) rename src/{BlazeKit.Reactive => BlazeKit.Reactivity}/Signals/ReactiveContext.cs (93%) rename src/{BlazeKit.Reactive => BlazeKit.Reactivity}/Signals/Signal.cs (92%) rename src/{BlazeKit.Reactive => BlazeKit.Reactivity}/Signals/SignalEnvelope.cs (97%) rename src/{BlazeKit.Reactive => BlazeKit.Reactivity}/icon.png (100%) delete mode 100644 src/BlazeKit.Site/Assets/but-why.md delete mode 100644 src/BlazeKit.Site/Assets/routing.md delete mode 100644 src/BlazeKit.Site/Assets/todos.md create mode 100644 src/BlazeKit.Site/Components/AnchorNavigation.razor create mode 100644 src/BlazeKit.Site/Components/Error.razor delete mode 100644 src/BlazeKit.Site/Pages/(Getting-Started)/Create-A-Project/Page.razor delete mode 100644 src/BlazeKit.Site/Pages/Layouts/Page.razor delete mode 100644 src/BlazeKit.Site/Pages/Page.razor delete mode 100644 src/BlazeKit.Site/Pages/Reactivity/Page.razor delete mode 100644 src/BlazeKit.Site/Pages/Routing/Page.razor rename src/BlazeKit.Site/{Assets/getting-started.md => Routes/(Getting-Started)/Create-A-Project/Page.md} (75%) rename src/BlazeKit.Site/{Pages => Routes}/(Getting-Started)/Layout.razor (80%) rename src/BlazeKit.Site/{Pages => Routes}/(Public)/Items/Details/Layout.razor (100%) rename src/BlazeKit.Site/{Pages/(Public)/Items/Details/Page@.razor => Routes/(Public)/Items/Details/Page.razor} (100%) rename src/BlazeKit.Site/{Pages => Routes}/(Public)/Items/Details/[Id]/Page.razor (96%) rename src/BlazeKit.Site/{Pages => Routes}/(Public)/Items/Layout.razor (100%) rename src/BlazeKit.Site/{Pages => Routes}/(Public)/Layout.razor (100%) rename src/BlazeKit.Site/{Pages => Routes}/Layout.razor (90%) create mode 100644 src/BlazeKit.Site/Routes/Layouts/Layout.razor rename src/BlazeKit.Site/{Assets/layouts.md => Routes/Layouts/Page.md} (89%) create mode 100644 src/BlazeKit.Site/Routes/Page.md create mode 100644 src/BlazeKit.Site/Routes/Reactivity/Basic/Layout.razor rename src/BlazeKit.Site/{Pages => Routes}/Reactivity/Basic/Page.razor (94%) rename src/BlazeKit.Site/{Pages => Routes}/Reactivity/Layout.razor (100%) rename src/BlazeKit.Site/{Pages => Routes}/Reactivity/MVVM/Page.razor (97%) rename src/BlazeKit.Site/{Pages => Routes}/Reactivity/MVVM/VMCounter.cs (92%) rename src/BlazeKit.Site/{Assets/reactivity.md => Routes/Reactivity/Page.md} (100%) create mode 100644 src/BlazeKit.Site/Routes/Routing/Layout.razor create mode 100644 src/BlazeKit.Site/Routes/Routing/Page.md delete mode 100644 src/BlazeKit/Config.cs create mode 100644 src/BlazeKit/Layout/NestedLayoutsGenerator.cs create mode 100644 src/BlazeKit/Layout/SourceTemplates/ErrorLayoutClassSource.cs rename src/BlazeKit/Layout/{ => SourceTemplates}/LayoutClassSource.cs (85%) create mode 100644 src/BlazeKit/Layout/SourceTemplates/error-layout.tpl delete mode 100644 src/BlazeKit/Log.cs create mode 100644 src/BlazeKit/Routes/Api/ApiRoute.cs create mode 100644 src/BlazeKit/Routes/Api/ApiRoutesGenerator.cs create mode 100644 src/BlazeKit/Routes/Page/MarkdownRoutesGenerator.cs create mode 100644 src/BlazeKit/Routes/Page/PageRoutesGenerator.cs create mode 100644 src/BlazeKit/Routes/Page/Templates/MarkdownRouteClassSource.cs rename src/BlazeKit/{Routing => Routes/Page/Templates}/RouteClassSource.cs (97%) rename src/BlazeKit/{Routing => Routes}/RouteParameters.cs (71%) rename src/BlazeKit/{Routing => Routes}/RouteSegments.cs (75%) delete mode 100644 src/BlazeKit/Routing/PageFromMarkdownClassSource.cs delete mode 100644 src/BlazeKit/SourceGenerators/RouteAndLayoutGenerator.cs rename src/BlazeKit/{ => Utils}/IsUnderRoot.cs (84%) rename src/BlazeKit/{ => Utils}/NamespaceSegments.cs (96%) create mode 100644 src/BlazeKit/Utils/SanititizedNamespace.cs create mode 100644 tests/BlazeKit.Routing.TestApp/BlazeKit.Routing.TestApp.csproj create mode 100644 tests/BlazeKit.Routing.TestApp/BlazorRenderer.cs create mode 100644 tests/BlazeKit.Routing.TestApp/BlazorWebAssemblyExtensions.cs create mode 100644 tests/BlazeKit.Routing.TestApp/BlazorWebJSExtensions.cs create mode 100644 tests/BlazeKit.Routing.TestApp/CustomHttpContext.cs create mode 100644 tests/BlazeKit.Routing.TestApp/HttpNavigationManager.cs create mode 100644 tests/BlazeKit.Routing.TestApp/MatchResult.cs create mode 100644 tests/BlazeKit.Routing.TestApp/Program.cs create mode 100644 tests/BlazeKit.Routing.TestApp/Properties/launchSettings.json create mode 100644 tests/BlazeKit.Routing.TestApp/Route.cs create mode 100644 tests/BlazeKit.Routing.TestApp/RouteManager.cs create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/(Public)/About/Layout.razor create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/(Public)/About/Page.md create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/(Public)/Contact/Page.md create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/(Public)/Layout.razor create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/(Public)/Pricing/Page.md create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/(Public)/Terms/Page.md create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/Api/Test/Server.cs create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/App.razor create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/Layout.razor create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/Layout.razor.css create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/Page.md create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/Routes.razor create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/Test/Page.razor create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/Test/[Id]/Layout.razor create mode 100644 tests/BlazeKit.Routing.TestApp/Routes/Test/[Id]/Page.razor create mode 100644 tests/BlazeKit.Routing.TestApp/_Imports.razor create mode 100644 tests/BlazeKit.Routing.TestApp/appsettings.Development.json create mode 100644 tests/BlazeKit.Routing.TestApp/appsettings.json create mode 100644 tests/BlazeKit.Routing.TestApp/wwwroot/app.css create mode 100644 tests/BlazeKit.Routing.TestApp/wwwroot/images/blazekit-logo.svg create mode 100644 tests/BlazeKit.Routing.TestApp/wwwroot/images/blazekit-social-preview-image.png create mode 100644 tests/BlazeKit.Routing.TestApp/wwwroot/images/github-mark.svg diff --git a/BlazeKit.sln b/BlazeKit.sln index 64b555c..37a2e68 100644 --- a/BlazeKit.sln +++ b/BlazeKit.sln @@ -5,8 +5,6 @@ VisualStudioVersion = 17.7.34009.444 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazeKit", "src\BlazeKit\BlazeKit.csproj", "{93775A2B-DB61-4195-9A38-D0C6BEF80267}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazeKit.Reactive", "src\BlazeKit.Reactive\BlazeKit.Reactive.csproj", "{1C08F700-1DC7-4B33-842E-2AFD3BA76B38}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazeKit.Deployment.Vercel", "src\BlazeKit.Deployment.Vercel\BlazeKit.Deployment.Vercel.csproj", "{CB3D0D42-28F1-4AFA-8BC9-37A1523A4583}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazeKit.Abstraction", "src\BlazeKit.Abstraction\BlazeKit.Abstraction.csproj", "{DD6DE816-D517-47D6-9EDB-3A30E0213BEC}" @@ -27,22 +25,20 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazeKit.Reactive.Tests", " EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "build\_build.csproj", "{6B6EFC67-31B4-4D2E-98D5-1A731AF98B0B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlazeKit.Reactivity", "src\BlazeKit.Reactivity\BlazeKit.Reactivity.csproj", "{3CD31A61-9A86-4D79-A7A6-B6A4AD0BF7D8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlazeKit.Routing.TestApp", "tests\BlazeKit.Routing.TestApp\BlazeKit.Routing.TestApp.csproj", "{196C36B5-D580-4C2D-BDFF-AFD530255F2E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6B6EFC67-31B4-4D2E-98D5-1A731AF98B0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6B6EFC67-31B4-4D2E-98D5-1A731AF98B0B}.Release|Any CPU.ActiveCfg = Release|Any CPU {93775A2B-DB61-4195-9A38-D0C6BEF80267}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {93775A2B-DB61-4195-9A38-D0C6BEF80267}.Debug|Any CPU.Build.0 = Debug|Any CPU {93775A2B-DB61-4195-9A38-D0C6BEF80267}.Release|Any CPU.ActiveCfg = Release|Any CPU {93775A2B-DB61-4195-9A38-D0C6BEF80267}.Release|Any CPU.Build.0 = Release|Any CPU - {1C08F700-1DC7-4B33-842E-2AFD3BA76B38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1C08F700-1DC7-4B33-842E-2AFD3BA76B38}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1C08F700-1DC7-4B33-842E-2AFD3BA76B38}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1C08F700-1DC7-4B33-842E-2AFD3BA76B38}.Release|Any CPU.Build.0 = Release|Any CPU {CB3D0D42-28F1-4AFA-8BC9-37A1523A4583}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CB3D0D42-28F1-4AFA-8BC9-37A1523A4583}.Debug|Any CPU.Build.0 = Debug|Any CPU {CB3D0D42-28F1-4AFA-8BC9-37A1523A4583}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -71,6 +67,16 @@ Global {4D98C97D-CFCC-4473-BFD8-B28DA3199EF6}.Debug|Any CPU.Build.0 = Debug|Any CPU {4D98C97D-CFCC-4473-BFD8-B28DA3199EF6}.Release|Any CPU.ActiveCfg = Release|Any CPU {4D98C97D-CFCC-4473-BFD8-B28DA3199EF6}.Release|Any CPU.Build.0 = Release|Any CPU + {6B6EFC67-31B4-4D2E-98D5-1A731AF98B0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B6EFC67-31B4-4D2E-98D5-1A731AF98B0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3CD31A61-9A86-4D79-A7A6-B6A4AD0BF7D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3CD31A61-9A86-4D79-A7A6-B6A4AD0BF7D8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3CD31A61-9A86-4D79-A7A6-B6A4AD0BF7D8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3CD31A61-9A86-4D79-A7A6-B6A4AD0BF7D8}.Release|Any CPU.Build.0 = Release|Any CPU + {196C36B5-D580-4C2D-BDFF-AFD530255F2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {196C36B5-D580-4C2D-BDFF-AFD530255F2E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {196C36B5-D580-4C2D-BDFF-AFD530255F2E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {196C36B5-D580-4C2D-BDFF-AFD530255F2E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -79,6 +85,7 @@ Global {CB3D0D42-28F1-4AFA-8BC9-37A1523A4583} = {B5C21DC5-2745-4530-A317-F4CD52DBE22E} {D466841A-00F1-4E37-BEB3-F7DEAF7EABB1} = {952B525D-297C-4F66-85E2-967C9982771F} {4D98C97D-CFCC-4473-BFD8-B28DA3199EF6} = {952B525D-297C-4F66-85E2-967C9982771F} + {196C36B5-D580-4C2D-BDFF-AFD530255F2E} = {952B525D-297C-4F66-85E2-967C9982771F} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {8F0560BE-EE70-4DE3-8ACA-590A2B56C96A} diff --git a/README.md b/README.md index 5bba1ee..74774f5 100644 --- a/README.md +++ b/README.md @@ -9,3 +9,35 @@ BlazeKit aims to provide Meta-framework-like Features for Blazor which has been - 🪄 Auto-Generated Route Parameters Some more infos can be found at [blazekit.dev](https://blazekit.dev) but keep in mind BlazeKit is work in progress. + +# 🚀 Getting Started +Before creating your first BlazeKit project, you should ensure that your local machine has: +- .NET 8 - you can find the download [here](https://dotnet.microsoft.com/en-us/download) + +That's it 👍 + +## ✨ Create an app using the CLI +After you have installed the required dependencies, the easiest way to get a project up an running is by using the BlazeKit CLI. +```ps +# Install the BlazeKit CLI +dotnet tool install --global BlazeKit.CLI --version 0.1.0-alpha.2 +``` +Now simply create your first BlazeKit project by running the following command +```ps +bkit new NextUnicorn +``` +You will be prompted to choose one of the Blazor Hosting Models such as **Blazor WebAssembly** or **Blazor Server**. +Afterwards a BlazeKit app will be created with the choosen hosting model. +Next **_cd_** into your project folder and start .NET's local development server using the **_dotnet watch_** command +```ps +cd NextUnicorn +dotnet watch +``` +And here it is, your first BalzeKit project 🎉 + +## 🔄️ Updating the BlazeKit CLI +The easiest way to update the BlazeKit CLI is to simply uninstall and reinstall it. +```ps +dotnet tool uninstall -g BlazeKit.CLI +dotnet tool install -g BlazeKit.CLI --version 0.1.0-alpha.2 +``` diff --git a/src/BlazeKit.Abstraction/BlazeKit.Abstraction.csproj b/src/BlazeKit.Abstraction/BlazeKit.Abstraction.csproj index 9f5c4f4..262da3b 100644 --- a/src/BlazeKit.Abstraction/BlazeKit.Abstraction.csproj +++ b/src/BlazeKit.Abstraction/BlazeKit.Abstraction.csproj @@ -2,6 +2,7 @@ netstandard2.0 + latest diff --git a/src/BlazeKit.Abstraction/IDeleteRequest.cs b/src/BlazeKit.Abstraction/IDeleteRequest.cs new file mode 100644 index 0000000..64eaa88 --- /dev/null +++ b/src/BlazeKit.Abstraction/IDeleteRequest.cs @@ -0,0 +1,12 @@ +using System; + +namespace BlazeKit.Abstraction; +/// +/// Interface for Delete Request +/// +public interface IDeleteRequest +{ + Delegate Delete(); +} + + diff --git a/src/BlazeKit.Abstraction/IGetRequest.cs b/src/BlazeKit.Abstraction/IGetRequest.cs new file mode 100644 index 0000000..2056ad9 --- /dev/null +++ b/src/BlazeKit.Abstraction/IGetRequest.cs @@ -0,0 +1,9 @@ +using System; + +namespace BlazeKit.Abstraction; +public interface IGetRequest +{ + Delegate Get(); +} + + diff --git a/src/BlazeKit.Abstraction/IPatchRequest.cs b/src/BlazeKit.Abstraction/IPatchRequest.cs new file mode 100644 index 0000000..3a56754 --- /dev/null +++ b/src/BlazeKit.Abstraction/IPatchRequest.cs @@ -0,0 +1,12 @@ +using System; + +namespace BlazeKit.Abstraction; +/// +/// Interface for Patch Request +/// +public interface IPatchRequest +{ + Delegate Patch(); +} + + diff --git a/src/BlazeKit.Abstraction/IPostRequest.cs b/src/BlazeKit.Abstraction/IPostRequest.cs new file mode 100644 index 0000000..a714a6b --- /dev/null +++ b/src/BlazeKit.Abstraction/IPostRequest.cs @@ -0,0 +1,10 @@ +using System; + +namespace BlazeKit.Abstraction; +/// +/// Interface for Post Request +/// +public interface IPostRequest +{ + Delegate Post(); +} diff --git a/src/BlazeKit.Abstraction/IPutRequest.cs b/src/BlazeKit.Abstraction/IPutRequest.cs new file mode 100644 index 0000000..4111323 --- /dev/null +++ b/src/BlazeKit.Abstraction/IPutRequest.cs @@ -0,0 +1,12 @@ +using System; + +namespace BlazeKit.Abstraction; +/// +/// Interface for Put Request +/// +public interface IPutRequest +{ + Delegate Put(); +} + + diff --git a/src/BlazeKit.CLI/BlazeKit.CLI.csproj b/src/BlazeKit.CLI/BlazeKit.CLI.csproj index 1ecf687..9659565 100644 --- a/src/BlazeKit.CLI/BlazeKit.CLI.csproj +++ b/src/BlazeKit.CLI/BlazeKit.CLI.csproj @@ -2,7 +2,7 @@ Exe - net7.0 + net8.0 enable enable true diff --git a/src/BlazeKit.CLI/Commands/New/Assets/TPL_NEW_PROJECT.zip b/src/BlazeKit.CLI/Commands/New/Assets/TPL_NEW_PROJECT.zip deleted file mode 100644 index bc4a4600325b56aa376e0732678c9e8b2158b591..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4273 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 EZ}8Ieu>b%7 diff --git a/src/BlazeKit.CLI/Commands/New/Assets/TPL_NEW_PROJECT_SERVER.zip b/src/BlazeKit.CLI/Commands/New/Assets/TPL_NEW_PROJECT_SERVER.zip deleted file mode 100644 index e49a0d40503e4a93ccaced436274e852f49ae84f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188334 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

u1fq_bc00F`2Zk~o0kRev{n_c$5l^T0RB-} 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 ExecuteAsync([NotNull] CommandContext context, [ return 1; } - Directory.CreateDirectory(projectDir); - - // Ask for the user which template to use + // Ask for the user which template to use var blazorAppType = AnsiConsole.Prompt( new SelectionPrompt() - .Title("Hosting model?") + .Title("Choose which type of Blazor App you would like to scaffold:") .PageSize(10) .MoreChoicesText("[grey](Move up and down to reveal more fruits)[/]") .AddChoices(new[] { "Blazor WebAssembly", - "Blazor Server" + "Blazor WebApp" })); - var template = "TPL_NEW_PROJECT.zip"; - switch (blazorAppType) { + switch (blazorAppType) { case "Blazor WebAssembly": - template = "TPL_NEW_PROJECT.zip"; + AnsiConsole.Status() + .Start("Creating Blazor WebAssembly project...", ctx => + { + ctx.Spinner(Spinner.Known.Star); + ctx.SpinnerStyle(Style.Parse("green")); + CreateWasmProject(settings); + }); break; - case "Blazor Server": - template = "TPL_NEW_PROJECT_SERVER.zip"; + case "Blazor WebApp": + AnsiConsole.Status() + .Start("Creating Blazor WebApp project...", ctx => + { + ctx.Spinner(Spinner.Known.Star); + ctx.SpinnerStyle(Style.Parse("green")); + CreateWebAppProject(settings); + }); break; + default: + AnsiConsole.MarkupLine($"[red]Error:[/] Unknown Blazor App type [bold]{blazorAppType}[/]."); + return 1; } - using (var zip = new ZipArchive(new ResourceOf($"Commands/New/Assets/{template}", this.GetType()).Stream())) - { - zip.ExtractToDirectory(projectDir); - } - - foreach (var file in Directory.GetFiles(projectDir, "*.*",SearchOption.AllDirectories)) - { - File.WriteAllText(file, File.ReadAllText(file).Replace("[PROJECTNAME]", settings.Name)); - } - // rename the csproj file - var csproj = Directory.GetFiles(projectDir, "*.csproj", SearchOption.TopDirectoryOnly); - if(csproj.Length == 1) + // list all created files in the project directory + AnsiConsole.MarkupLine("[yellow]Created files:[/]"); + foreach(var file in Directory.GetFiles(projectDir, "*", SearchOption.AllDirectories)) { - File.Move(csproj[0], Path.Combine(projectDir,$"{settings.Name}.csproj")); - } - - // print a list of created files - AnsiConsole.MarkupLine($"[bold]Created files:[/]"); - foreach (var file in Directory.GetFiles(projectDir, "*.*", SearchOption.AllDirectories)) - { - AnsiConsole.MarkupLine($"[green]{file.Replace(projectDir, "").TrimStart('/','\\')}[/]"); + AnsiConsole.MarkupLine($"[green]{file.Replace(projectDir, "")}[/]"); } AnsiConsole.WriteLine(); @@ -72,5 +66,125 @@ public override async Task ExecuteAsync([NotNull] CommandContext context, [ return 0; } + + private async void CreateWebAppProject(NewSettings settings) + { + var projectDir = Path.Combine(Directory.GetCurrentDirectory(), settings.Name); + // call dotnet new + DotNetNewProject(settings, "blazor"); + + AnsiConsole.MarkupLine("[yellow]Scaffolding BlazeKit into the project...[/]"); + // remove the Component/Layout folder + Directory.Delete(Path.Combine(projectDir, "Components", "Layout"), true); + // remove the first line of the Components/Pages.Error.razor file + var lines = File.ReadAllLines(Path.Combine(projectDir, "Components", "Pages", "Error.razor")); + + new FileInfo(Path.Combine(projectDir, "Routes", "Error", "Page.razor")).Directory.Create(); + File.WriteAllLines(Path.Combine(projectDir, "Routes", "Error", "Page.razor"), lines.Skip(1).ToArray()); + + // move the Components/Pages/App.razor and Components/Pages/_Imports.razor to the project directory + File.Move(Path.Combine(projectDir, "Components", "App.razor"), Path.Combine(projectDir, "App.razor")); + File.Move(Path.Combine(projectDir, "Components", "_Imports.razor"), Path.Combine(projectDir, "_Imports.razor")); + // replace Layout.MainLayout with Layout int Routes.razor + var lines2 = File.ReadAllLines(Path.Combine(projectDir, "Components", "Routes.razor")); + File.WriteAllLines(Path.Combine(projectDir, "Components", "Routes.razor"), lines2.Select(l => l.Replace("Layout.MainLayout", $"{new SanititizedNamespace(settings.Name).Value}.Routes.Layout")).ToArray()); + + // remove the Components/Pages folder + Directory.Delete(Path.Combine(projectDir, "Components", "Pages"), true); + + // create a layout.razor in the Routes directory with the following content: + // @inherits LayoutComponentBase + // @Body + File.WriteAllText(Path.Combine(projectDir, "Routes", "Layout.razor"), "@inherits LayoutComponentBase\n@Body"); + + // replace first line in Program.cs with using BlazKit + var lines3 = File.ReadAllLines(Path.Combine(projectDir, "Program.cs")); + File.WriteAllLines(Path.Combine(projectDir, "Program.cs"), lines3.Select((l, i) => i == 0 ? $"using {new SanititizedNamespace(settings.Name).Value};" : l).ToArray()); + + // add BlazeKit packages with dotnet add packe + AddNuGetPackage(projectDir, "BlazeKit"); + AddNuGetPackage(projectDir, "BlazeKit.Reactivity"); + + // add a Routes folder in the porject directory using System.IO + Directory.CreateDirectory(Path.Combine(projectDir, "Routes")); + // add a Page.razor file in the Routes folder using System.IO + File.WriteAllText(Path.Combine(projectDir, "Routes", "Page.razor"), "

Welcome to BlazeKit 👋

"); + } + + private static void DotNetNewProject(NewSettings settings, string template) + { + var process = + Process.Start( + new ProcessStartInfo("dotnet", $"new {template} -e -o {settings.Name}") + { + RedirectStandardOutput = true, + RedirectStandardError = true, + UseShellExecute = false, + CreateNoWindow = true, + // WorkingDirectory = Directory.GetCurrentDirectory() + } + + ); + + process.OutputDataReceived += (sender, args) => AnsiConsole.MarkupLine(args.Data); + process.ErrorDataReceived += (sender, args) => AnsiConsole.MarkupLine($"[red]{args.Data}[/]"); + + process.WaitForExit(); + } + + private static void AddNuGetPackage(string projectDir, string package) + { + var process = + Process.Start( + new ProcessStartInfo("dotnet", $"add package {package}") + { + RedirectStandardOutput = true, + RedirectStandardError = true, + UseShellExecute = false, + CreateNoWindow = true, + WorkingDirectory = projectDir + } + ); + + process.OutputDataReceived += (sender, args) => AnsiConsole.MarkupLine(args.Data); + process.ErrorDataReceived += (sender, args) => AnsiConsole.MarkupLine($"[red]{args.Data}[/]"); + process.WaitForExit(); + } + + private void CreateWasmProject(NewSettings settings) + { + var projectDir = Path.Combine(Directory.GetCurrentDirectory(), settings.Name); + // call dotnet new + DotNetNewProject(settings, "blazorwasm"); + + AnsiConsole.MarkupLine("[yellow]Scaffolding BlazeKit into the project...[/]"); + // remove the PAges directory + Directory.Delete(Path.Combine(projectDir, "Pages"), true); + // remove the layout directory + Directory.Delete(Path.Combine(projectDir, "Layout"), true); + // remove the last line of the _Imports.razor file + var lines = File.ReadAllLines(Path.Combine(projectDir, "_Imports.razor")); + File.WriteAllLines(Path.Combine(projectDir, "_Imports.razor"), lines.Take(lines.Length - 1).ToArray()); + + // replace Layout.MainLayout with Layout int Routes.razor + var lines2 = File.ReadAllLines(Path.Combine(projectDir, "App.razor")); + File.WriteAllLines(Path.Combine(projectDir, "App.razor"), lines2.Select(l => l.Replace("MainLayout", $"{new SanititizedNamespace(settings.Name).Value}.Routes.Layout")).ToArray()); + + // add a Routes folder in the porject directory using System.IO + Directory.CreateDirectory(Path.Combine(projectDir, "Routes")); + // add a Page.razor file in the Routes folder using System.IO + File.WriteAllText(Path.Combine(projectDir, "Routes", "Page.razor"),"

Welcome to BlazeKit 👋

"); + + // create a layout.razor in the Routes directory with the following content: + // @inherits LayoutComponentBase + // @Body + File.WriteAllText(Path.Combine(projectDir, "Routes", "Layout.razor"), "@inherits LayoutComponentBase\n@Body"); + + + + // add BlazeKit packages with dotnet add packe + AddNuGetPackage(projectDir, "BlazeKit"); + AddNuGetPackage(projectDir, "BlazeKit.Reactivity"); + } } } diff --git a/src/BlazeKit/SanititizedNamespace.cs b/src/BlazeKit.CLI/Commands/New/SanititizedNamespace.cs similarity index 97% rename from src/BlazeKit/SanititizedNamespace.cs rename to src/BlazeKit.CLI/Commands/New/SanititizedNamespace.cs index 5d8d876..3c0421f 100644 --- a/src/BlazeKit/SanititizedNamespace.cs +++ b/src/BlazeKit.CLI/Commands/New/SanititizedNamespace.cs @@ -2,7 +2,7 @@ using System.Linq; using System.Text.RegularExpressions; -namespace BlazeKit +namespace BlazeKit.CLI { /// /// Sanitizes a namespace string to be a valid C# namespace. diff --git a/src/BlazeKit.Core/Routing/Navigating.cs b/src/BlazeKit.Core/Routing/Navigating.cs index fd908dd..4e3c440 100644 --- a/src/BlazeKit.Core/Routing/Navigating.cs +++ b/src/BlazeKit.Core/Routing/Navigating.cs @@ -1,61 +1,61 @@ -using BlazeKit.Reactive.Signals; -using Microsoft.AspNetCore.Components; -using Microsoft.JSInterop; +// using BlazeKit.Reactivity.Signals; +// using Microsoft.AspNetCore.Components; +// using Microsoft.JSInterop; -namespace BlazeKit.Core.Routing -{ - public class Navigating : SignalEnvelope - { - private readonly IDictionary scrollPositions; - private readonly NavigationManager router; - private readonly IJSRuntime jsRuntime; +// namespace BlazeKit.Core.Routing +// { +// public class Navigating : SignalEnvelope +// { +// private readonly IDictionary scrollPositions; +// private readonly NavigationManager router; +// private readonly IJSRuntime jsRuntime; - public Navigating() : base(true) - { } - public Navigating(NavigationManager router, IJSRuntime jsRuntime) : base(false) - { - scrollPositions = new Dictionary(); - if(router != null) - { - router.RegisterLocationChangingHandler(async ctx => - { - // strore scroll position - var scrollPosition = await jsRuntime.InvokeAsync("getScrollPosition"); - //Console.WriteLine($"Storing scroll position for {router.Uri}"); - scrollPositions[router.Uri] = scrollPosition; - this.Value = true; - }); +// public Navigating() : base(true) +// { } +// public Navigating(NavigationManager router, IJSRuntime jsRuntime) : base(false) +// { +// scrollPositions = new Dictionary(); +// if(router != null) +// { +// router.RegisterLocationChangingHandler(async ctx => +// { +// // strore scroll position +// var scrollPosition = await jsRuntime.InvokeAsync("getScrollPosition"); +// //Console.WriteLine($"Storing scroll position for {router.Uri}"); +// scrollPositions[router.Uri] = scrollPosition; +// this.Value = true; +// }); - router.LocationChanged += (sender, args) => - { - //// check if we have a scroll position for this route - //if (scrollPositions.ContainsKey(args.Location)) - //{ - // // restore scroll position - // var scrollPosition = scrollPositions[args.Location]; - // jsRuntime.InvokeVoidAsync("setScrollPosition", scrollPosition.X, scrollPosition.Y); - //} - //Console.WriteLine(args.Location); - this.Value = false; - }; - } +// router.LocationChanged += (sender, args) => +// { +// //// check if we have a scroll position for this route +// //if (scrollPositions.ContainsKey(args.Location)) +// //{ +// // // restore scroll position +// // var scrollPosition = scrollPositions[args.Location]; +// // jsRuntime.InvokeVoidAsync("setScrollPosition", scrollPosition.X, scrollPosition.Y); +// //} +// //Console.WriteLine(args.Location); +// this.Value = false; +// }; +// } - this.router = router; - this.jsRuntime = jsRuntime; - } +// this.router = router; +// this.jsRuntime = jsRuntime; +// } - public void ApplyScrollPosition() - { - //Console.WriteLine($"Applying scroll position for {router.Uri}"); - // check if we have a scroll position for this route - if (scrollPositions.ContainsKey(router.Uri)) - { - // restore scroll position - var scrollPosition = scrollPositions[router.Uri]; - jsRuntime.InvokeVoidAsync("setScrollPosition", scrollPosition.X, scrollPosition.Y); - } - } +// public void ApplyScrollPosition() +// { +// //Console.WriteLine($"Applying scroll position for {router.Uri}"); +// // check if we have a scroll position for this route +// if (scrollPositions.ContainsKey(router.Uri)) +// { +// // restore scroll position +// var scrollPosition = scrollPositions[router.Uri]; +// jsRuntime.InvokeVoidAsync("setScrollPosition", scrollPosition.X, scrollPosition.Y); +// } +// } - record ScrollPosition(float X, float Y); - } -} +// record ScrollPosition(float X, float Y); +// } +// } diff --git a/src/BlazeKit.Reactive/BlazeKit.Reactive.csproj b/src/BlazeKit.Reactivity/BlazeKit.Reactivity.csproj similarity index 100% rename from src/BlazeKit.Reactive/BlazeKit.Reactive.csproj rename to src/BlazeKit.Reactivity/BlazeKit.Reactivity.csproj diff --git a/src/BlazeKit.Reactive/Blazor/Derived.cs b/src/BlazeKit.Reactivity/Blazor/Derived.cs similarity index 96% rename from src/BlazeKit.Reactive/Blazor/Derived.cs rename to src/BlazeKit.Reactivity/Blazor/Derived.cs index 27c78d7..c61d39f 100644 --- a/src/BlazeKit.Reactive/Blazor/Derived.cs +++ b/src/BlazeKit.Reactivity/Blazor/Derived.cs @@ -1,9 +1,9 @@ using BlazeKit.Abstraction; -using BlazeKit.Reactive.Signals; +using BlazeKit.Reactivity.Signals; using System; using System.Collections.Generic; -namespace BlazeKit.Reactive.Blazor; +namespace BlazeKit.Reactivity.Blazor; /// /// A derived value as that can be used in a Blazor component."/> diff --git a/src/BlazeKit.Reactivity/Blazor/ReactiveComponentEnvelope.cs b/src/BlazeKit.Reactivity/Blazor/ReactiveComponentEnvelope.cs new file mode 100644 index 0000000..19a1176 --- /dev/null +++ b/src/BlazeKit.Reactivity/Blazor/ReactiveComponentEnvelope.cs @@ -0,0 +1,17 @@ +namespace BlazeKit.Reactivity.Blazor; +/// +/// An Envelope for . +/// Inherit your Blazor Component from this class to get for free in none BlazeKit apps. +/// None BlazeKit apps are only using BlazeKit.Reactivitiy package instead of the full BlazeKit package. +/// +public abstract class ReactiveComponentEnvelope : Microsoft.AspNetCore.Components.ComponentBase, BlazeKit.Abstraction.IReactiveComponent +{ + /// + /// An Envelope for . + /// Inherit from this class to get for free in none BlazeKit apps. + /// + public ReactiveComponentEnvelope() : base() + { } + public void Update() => InvokeAsync(StateHasChanged); + +} diff --git a/src/BlazeKit.Reactive/Blazor/State.cs b/src/BlazeKit.Reactivity/Blazor/State.cs similarity index 95% rename from src/BlazeKit.Reactive/Blazor/State.cs rename to src/BlazeKit.Reactivity/Blazor/State.cs index 380efea..5ce8ace 100644 --- a/src/BlazeKit.Reactive/Blazor/State.cs +++ b/src/BlazeKit.Reactivity/Blazor/State.cs @@ -1,9 +1,9 @@ using BlazeKit.Abstraction; -using BlazeKit.Reactive.Signals; +using BlazeKit.Reactivity.Signals; using System; using System.ComponentModel; -namespace BlazeKit.Reactive.Blazor; +namespace BlazeKit.Reactivity.Blazor; /// /// A that can be used in a Blazor component."/> diff --git a/src/BlazeKit.Reactive/ISignal.cs b/src/BlazeKit.Reactivity/ISignal.cs similarity index 90% rename from src/BlazeKit.Reactive/ISignal.cs rename to src/BlazeKit.Reactivity/ISignal.cs index 7534ca6..0dd7a93 100644 --- a/src/BlazeKit.Reactive/ISignal.cs +++ b/src/BlazeKit.Reactivity/ISignal.cs @@ -1,6 +1,6 @@ using System; -namespace BlazeKit.Reactive; +namespace BlazeKit.Reactivity; /// /// A reactive primitive /// diff --git a/src/BlazeKit.Reactive/Signals/Computed.cs b/src/BlazeKit.Reactivity/Signals/Computed.cs similarity index 95% rename from src/BlazeKit.Reactive/Signals/Computed.cs rename to src/BlazeKit.Reactivity/Signals/Computed.cs index b79df0e..1a142b9 100644 --- a/src/BlazeKit.Reactive/Signals/Computed.cs +++ b/src/BlazeKit.Reactivity/Signals/Computed.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace BlazeKit.Reactive.Signals; +namespace BlazeKit.Reactivity.Signals; /// /// A computed value from on ore more s diff --git a/src/BlazeKit.Reactive/Signals/Effect.cs b/src/BlazeKit.Reactivity/Signals/Effect.cs similarity index 96% rename from src/BlazeKit.Reactive/Signals/Effect.cs rename to src/BlazeKit.Reactivity/Signals/Effect.cs index f11c03e..8dc8072 100644 --- a/src/BlazeKit.Reactive/Signals/Effect.cs +++ b/src/BlazeKit.Reactivity/Signals/Effect.cs @@ -1,6 +1,6 @@ using System; -namespace BlazeKit.Reactive.Signals; +namespace BlazeKit.Reactivity.Signals; /// /// An effect that is triggered by one ore more s diff --git a/src/BlazeKit.Reactive/Signals/ReactiveContext.cs b/src/BlazeKit.Reactivity/Signals/ReactiveContext.cs similarity index 93% rename from src/BlazeKit.Reactive/Signals/ReactiveContext.cs rename to src/BlazeKit.Reactivity/Signals/ReactiveContext.cs index fe25eab..4050b84 100644 --- a/src/BlazeKit.Reactive/Signals/ReactiveContext.cs +++ b/src/BlazeKit.Reactivity/Signals/ReactiveContext.cs @@ -3,7 +3,7 @@ using System.Diagnostics; using System.Linq; -namespace BlazeKit.Reactive.Signals; +namespace BlazeKit.Reactivity.Signals; /// /// A global Context stack used for tracking observers. diff --git a/src/BlazeKit.Reactive/Signals/Signal.cs b/src/BlazeKit.Reactivity/Signals/Signal.cs similarity index 92% rename from src/BlazeKit.Reactive/Signals/Signal.cs rename to src/BlazeKit.Reactivity/Signals/Signal.cs index 80a4855..616ce70 100644 --- a/src/BlazeKit.Reactive/Signals/Signal.cs +++ b/src/BlazeKit.Reactivity/Signals/Signal.cs @@ -1,7 +1,7 @@ using System; using System.Net.Http.Headers; -namespace BlazeKit.Reactive.Signals; +namespace BlazeKit.Reactivity.Signals; /// /// A diff --git a/src/BlazeKit.Reactive/Signals/SignalEnvelope.cs b/src/BlazeKit.Reactivity/Signals/SignalEnvelope.cs similarity index 97% rename from src/BlazeKit.Reactive/Signals/SignalEnvelope.cs rename to src/BlazeKit.Reactivity/Signals/SignalEnvelope.cs index 4279135..363bd5e 100644 --- a/src/BlazeKit.Reactive/Signals/SignalEnvelope.cs +++ b/src/BlazeKit.Reactivity/Signals/SignalEnvelope.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace BlazeKit.Reactive.Signals; +namespace BlazeKit.Reactivity.Signals; /// /// An envelope for a diff --git a/src/BlazeKit.Reactive/icon.png b/src/BlazeKit.Reactivity/icon.png similarity index 100% rename from src/BlazeKit.Reactive/icon.png rename to src/BlazeKit.Reactivity/icon.png diff --git a/src/BlazeKit.Site/App.razor b/src/BlazeKit.Site/App.razor index 7c64fd3..eea82e1 100644 --- a/src/BlazeKit.Site/App.razor +++ b/src/BlazeKit.Site/App.razor @@ -1,14 +1,13 @@ -@namespace BlazeKit.Site @using BlazeKit.Site; @using BlazeKit.Site.Pages; - + - Not found - + BlazeKit - Not found +

🤷 Sorry, there's nothing at this address.

diff --git a/src/BlazeKit.Site/Assets/but-why.md b/src/BlazeKit.Site/Assets/but-why.md deleted file mode 100644 index 76d2892..0000000 --- a/src/BlazeKit.Site/Assets/but-why.md +++ /dev/null @@ -1,14 +0,0 @@ -### 🤔 Why? -Is the Blazor Framework itself not enough to build web apps? It certainly is and the Team at Microsoft has done a awesome job with Blazor. - - -In my day job i write a lot of C# code and also many Blazor applications when ever a UI is required since Blazor can be used for Desktop apps as well. -However, in my spear time i am playing around with the JavaScript/TypeScript ecosystem and noticed the growing trend of so called Meta-Frameworks to build web apps. - -I used [SvelteKit](https://kit.svelte.dev/){target="_blank"} in a side project and fell in love with the file-based routing and the reactivity implemented by Svelte. - -Back in my day job, i missed these simple features in Blazor. So i sad down and thought how i could address features like file-based routing, file-based layouts and reactivity in the Blazor ecosystem. And here it is ... **BlazeKit** ✨ - -**Are more features coming to BlazeKit?** - -I am certainly like to keep working on BlazeKit since i see some oppertunities with the release of .NET 8. Yes, i am looking at you Server-Side-Rendering. diff --git a/src/BlazeKit.Site/Assets/routing.md b/src/BlazeKit.Site/Assets/routing.md deleted file mode 100644 index a53154d..0000000 --- a/src/BlazeKit.Site/Assets/routing.md +++ /dev/null @@ -1,36 +0,0 @@ -# 🪧 File-based Routing -The routing in BlazeKit is based on the filesystem. Each route is represented by a folder which contains a `Page.razor` file. -The folder structure is used to define the route of the page. For example the following folder structure: -``` -Pages/ -├ About/ -│ └ Page.razor -└ Page.razor -``` -will result in the following routes: -- `/` -- `/about` - -## Route Parameters -Route parameters can be defined by adding a folder with the name of the parameter surrounded by square brakets [Param]. -For example the following folder structure: -``` -Pages/ -├ About/ -│ └ Page.razor -├ Project/ -│ └ [Id]/ -│ └ Page.razor -└ Page.razor -``` -will result in the following routes: -- `/` -- `/about` -- `/project/{id}` - -BlazeKit will generate a class with the name of the parameter which can be used to access the parameter value. -In the above example the `Id` parameter can be accessed in the `Pages/Project/[Id]/Page.razor` file by `Id` property. -```html -

Project Id: @Id

-``` - diff --git a/src/BlazeKit.Site/Assets/todos.md b/src/BlazeKit.Site/Assets/todos.md deleted file mode 100644 index e0ded40..0000000 --- a/src/BlazeKit.Site/Assets/todos.md +++ /dev/null @@ -1,6 +0,0 @@ -- [ ] Add CLI to scaffold new projects -- [ ] Deploy to Vercel -- [ ] Publish NuGet Packages -- [ ] Improve Documentation -- [ ] Deploy to Netlify -- [ ] Deploy to Azure Static WebApps diff --git a/src/BlazeKit.Site/BlazeKit.Site.csproj b/src/BlazeKit.Site/BlazeKit.Site.csproj index 6f534bd..2a38a02 100644 --- a/src/BlazeKit.Site/BlazeKit.Site.csproj +++ b/src/BlazeKit.Site/BlazeKit.Site.csproj @@ -10,27 +10,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -46,8 +25,13 @@ - - + + + + + + + diff --git a/src/BlazeKit.Site/Components/AnchorNavigation.razor b/src/BlazeKit.Site/Components/AnchorNavigation.razor new file mode 100644 index 0000000..5c2f5ef --- /dev/null +++ b/src/BlazeKit.Site/Components/AnchorNavigation.razor @@ -0,0 +1,46 @@ +@inject IJSRuntime JSRuntime +@inject NavigationManager NavigationManager +@implements IDisposable +@code { + protected override void OnInitialized() + { + NavigationManager.LocationChanged += OnLocationChanged; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await ScrollToFragment(); + } + + public void Dispose() + { + NavigationManager.LocationChanged -= OnLocationChanged; + } + + private async void OnLocationChanged(object sender, LocationChangedEventArgs e) + { + await ScrollToFragment(); + } + + private async Task ScrollToFragment() + { + var uri = new Uri(NavigationManager.Uri, UriKind.Absolute); + var fragment = uri.Fragment; + if (fragment.StartsWith('#')) + { + // Handle text fragment (https://example.org/#test:~:text=foo) + // https://github.com/WICG/scroll-to-text-fragment/ + var elementId = fragment.Substring(1); + var index = elementId.IndexOf(":~:", StringComparison.Ordinal); + if (index > 0) + { + elementId = elementId.Substring(0, index); + } + + if (!string.IsNullOrEmpty(elementId)) + { + await JSRuntime.InvokeVoidAsync("BlazorScrollToId", elementId); + } + } + } +} diff --git a/src/BlazeKit.Site/Components/Error.razor b/src/BlazeKit.Site/Components/Error.razor new file mode 100644 index 0000000..9f3fe22 --- /dev/null +++ b/src/BlazeKit.Site/Components/Error.razor @@ -0,0 +1 @@ +

Something went wrong

diff --git a/src/BlazeKit.Site/Pages/(Getting-Started)/Create-A-Project/Page.razor b/src/BlazeKit.Site/Pages/(Getting-Started)/Create-A-Project/Page.razor deleted file mode 100644 index 09b2902..0000000 --- a/src/BlazeKit.Site/Pages/(Getting-Started)/Create-A-Project/Page.razor +++ /dev/null @@ -1,14 +0,0 @@ -@code { - - public string MarkdownContent { get; set; } - - public Page() - { - MarkdownContent = - new Yaapii.Atoms.Text.TextOf( - new Yaapii.Atoms.IO.ResourceOf("Assets/getting-started.md", this.GetType()) - ).AsString(); - } -} -BlazeKit - Getting Started - diff --git a/src/BlazeKit.Site/Pages/Layouts/Page.razor b/src/BlazeKit.Site/Pages/Layouts/Page.razor deleted file mode 100644 index 776a12f..0000000 --- a/src/BlazeKit.Site/Pages/Layouts/Page.razor +++ /dev/null @@ -1,20 +0,0 @@ -@using BlazeKit.Reactive; -@using BlazeKit.Reactive.Blazor; -@using BlazeKit.Reactive.Signals; -@using Yaapii.Atoms.IO; -@using Yaapii.Atoms.Text; -@code { - - public string MarkdownContent { get; set; } - - public Page() - { - MarkdownContent = - new TextOf( - new ResourceOf("Assets/layouts.md", this.GetType()) - ).AsString(); - } -} -BlazeKit - 🖼️ Layouts -@*

*@ - diff --git a/src/BlazeKit.Site/Pages/Page.razor b/src/BlazeKit.Site/Pages/Page.razor deleted file mode 100644 index 4dcd21f..0000000 --- a/src/BlazeKit.Site/Pages/Page.razor +++ /dev/null @@ -1,34 +0,0 @@ -@using BlazeKit.Reactive; -@using BlazeKit.Reactive.Signals; -@using System.ComponentModel; -@using Yaapii.Atoms.IO; -@using Yaapii.Atoms.Text; - -

Welcome to BlazeKit! 👋

-

BlazeKit aims to provide Meta-framework-like Features for Blazor which has been inspired by SvelteKit. BlazeKit currently supports the following features:

-
    -
  • ⚡ Reactive primitives inspired by the signals pattern.
  • -
  • 🪧 File-based Routing
  • -
  • 🖼️ File-based Layouts
  • -
  • 🪄 Auto-Generated Route Parameters
  • -
-
-
💡
-
BlazeKit is unopinionated about the Blazor Hosting Model. BlazeKit works with either Blazor Server,Blazor WebAssembly or the new Blazor Server-Side Rendering Model.
-
- -

Want to get started with BlazeKit? Head over to Getting Started to create your first Blazekit app.

- - -@* But Why section *@ - - -

Links to Examples

- diff --git a/src/BlazeKit.Site/Pages/Reactivity/Page.razor b/src/BlazeKit.Site/Pages/Reactivity/Page.razor deleted file mode 100644 index 9a5f082..0000000 --- a/src/BlazeKit.Site/Pages/Reactivity/Page.razor +++ /dev/null @@ -1,3 +0,0 @@ -@using Yaapii.Atoms.IO; -@using Yaapii.Atoms.Text; - diff --git a/src/BlazeKit.Site/Pages/Routing/Page.razor b/src/BlazeKit.Site/Pages/Routing/Page.razor deleted file mode 100644 index bb24aad..0000000 --- a/src/BlazeKit.Site/Pages/Routing/Page.razor +++ /dev/null @@ -1,16 +0,0 @@ -@using BlazeKit.Reactive; -@using BlazeKit.Reactive.Blazor; -@using BlazeKit.Reactive.Signals; -@using Yaapii.Atoms.IO; -@using Yaapii.Atoms.Text; -@code { - - public string MarkdownContent { get; set; } - - public Page() - { - MarkdownContent = new TextOf(new ResourceOf("Assets/routing.md",this.GetType())).AsString(); - } -} -BlazeKit - 🪧 Routing - diff --git a/src/BlazeKit.Site/Assets/getting-started.md b/src/BlazeKit.Site/Routes/(Getting-Started)/Create-A-Project/Page.md similarity index 75% rename from src/BlazeKit.Site/Assets/getting-started.md rename to src/BlazeKit.Site/Routes/(Getting-Started)/Create-A-Project/Page.md index bd657a8..17b1d53 100644 --- a/src/BlazeKit.Site/Assets/getting-started.md +++ b/src/BlazeKit.Site/Routes/(Getting-Started)/Create-A-Project/Page.md @@ -1,7 +1,7 @@ -# 🚀 Getting Started +# 🚀 Getting Started ## ☝️ Requirements Before creating your first BlazeKit project, you should ensure that your local machine has: -- .NET 7+ - you can find the download [here](https://dotnet.microsoft.com/en-us/download){target="_blank"} +- .NET 8 - you can find the download [here](https://dotnet.microsoft.com/en-us/download){target="_blank"} That's it 👍 @@ -9,13 +9,13 @@ That's it 👍 After you have installed the required dependencies, the easiest way to get a project up an running is by using the BlazeKit CLI. ```shell # Install the BlazeKit CLI -dotnet tool install --global BlazeKit.CLI --version 0.1.0-alpha.2 +dotnet tool install --global BlazeKit.CLI --version 0.1.0 ``` Now simply create your first BlazeKit project by running the following command ```shell bkit new NextUnicorn ``` -You will be prompted to choose one of the Blazor Hosting Models such as **Blazor WebAssembly** or **Blazor Server**. +You will be prompted to choose one of the Blazor Hosting Models such as **Blazor WebAssembly** or **Blazor WebApp**. Afterwards a BlazeKit app will be created with the choosen hosting model. Next **_cd_** into your project folder and start .NET's local development server using the **_dotnet watch_** command ```shell @@ -28,5 +28,5 @@ And here it is, your first BalzeKit project 🎉 The easiest way to update the BlazeKit CLI is to simply uninstall and reinstall it. ```shell dotnet tool uninstall -g BlazeKit.CLI -dotnet tool install -g BlazeKit.CLI --version 0.1.0-alpha.2 +dotnet tool install -g BlazeKit.CLI --version 0.1.0 ``` diff --git a/src/BlazeKit.Site/Pages/(Getting-Started)/Layout.razor b/src/BlazeKit.Site/Routes/(Getting-Started)/Layout.razor similarity index 80% rename from src/BlazeKit.Site/Pages/(Getting-Started)/Layout.razor rename to src/BlazeKit.Site/Routes/(Getting-Started)/Layout.razor index 6fc4730..4265ba3 100644 --- a/src/BlazeKit.Site/Pages/(Getting-Started)/Layout.razor +++ b/src/BlazeKit.Site/Routes/(Getting-Started)/Layout.razor @@ -7,4 +7,5 @@ JSRuntime.InvokeVoidAsync("highlight"); } } +BlazeKit - 🚀 Getting Started @Body diff --git a/src/BlazeKit.Site/Pages/(Public)/Items/Details/Layout.razor b/src/BlazeKit.Site/Routes/(Public)/Items/Details/Layout.razor similarity index 100% rename from src/BlazeKit.Site/Pages/(Public)/Items/Details/Layout.razor rename to src/BlazeKit.Site/Routes/(Public)/Items/Details/Layout.razor diff --git a/src/BlazeKit.Site/Pages/(Public)/Items/Details/Page@.razor b/src/BlazeKit.Site/Routes/(Public)/Items/Details/Page.razor similarity index 100% rename from src/BlazeKit.Site/Pages/(Public)/Items/Details/Page@.razor rename to src/BlazeKit.Site/Routes/(Public)/Items/Details/Page.razor diff --git a/src/BlazeKit.Site/Pages/(Public)/Items/Details/[Id]/Page.razor b/src/BlazeKit.Site/Routes/(Public)/Items/Details/[Id]/Page.razor similarity index 96% rename from src/BlazeKit.Site/Pages/(Public)/Items/Details/[Id]/Page.razor rename to src/BlazeKit.Site/Routes/(Public)/Items/Details/[Id]/Page.razor index 6fd1780..481d5cf 100644 --- a/src/BlazeKit.Site/Pages/(Public)/Items/Details/[Id]/Page.razor +++ b/src/BlazeKit.Site/Routes/(Public)/Items/Details/[Id]/Page.razor @@ -1,6 +1,6 @@ -@using BlazeKit.Reactive.Signals; -@using BlazeKit.Reactive; -@using BlazeKit.Reactive.Blazor; +@using BlazeKit.Reactivity.Signals; +@using BlazeKit.Reactivity +@using BlazeKit.Reactivity.Blazor; @using System.Text.Json.Nodes; @code { diff --git a/src/BlazeKit.Site/Pages/(Public)/Items/Layout.razor b/src/BlazeKit.Site/Routes/(Public)/Items/Layout.razor similarity index 100% rename from src/BlazeKit.Site/Pages/(Public)/Items/Layout.razor rename to src/BlazeKit.Site/Routes/(Public)/Items/Layout.razor diff --git a/src/BlazeKit.Site/Pages/(Public)/Layout.razor b/src/BlazeKit.Site/Routes/(Public)/Layout.razor similarity index 100% rename from src/BlazeKit.Site/Pages/(Public)/Layout.razor rename to src/BlazeKit.Site/Routes/(Public)/Layout.razor diff --git a/src/BlazeKit.Site/Pages/Layout.razor b/src/BlazeKit.Site/Routes/Layout.razor similarity index 90% rename from src/BlazeKit.Site/Pages/Layout.razor rename to src/BlazeKit.Site/Routes/Layout.razor index 3a385e4..49c6593 100644 --- a/src/BlazeKit.Site/Pages/Layout.razor +++ b/src/BlazeKit.Site/Routes/Layout.razor @@ -27,7 +27,14 @@
- @Body + + + + + + @Body + +