From 55fd54161472f610d27926d37b896f86b5314126 Mon Sep 17 00:00:00 2001 From: Bastien Olivier Dijkstra Date: Mon, 14 Oct 2024 17:37:39 +0200 Subject: [PATCH 01/70] ADD docker file support --- src/Dutchskull.Aspire.GinApp/Dockerfile | 13 +++ src/Dutchskull.Aspire.GinApp/ginapp.go | 36 ++++++++ src/Dutchskull.Aspire.GinApp/go.mod | 34 +++++++ src/Dutchskull.Aspire.GinApp/go.sum | 89 +++++++++++++++++++ .../Program.cs | 5 ++ .../ProjectResourceBuilderExtensions.cs | 13 +++ 6 files changed, 190 insertions(+) create mode 100644 src/Dutchskull.Aspire.GinApp/Dockerfile create mode 100644 src/Dutchskull.Aspire.GinApp/ginapp.go create mode 100644 src/Dutchskull.Aspire.GinApp/go.mod create mode 100644 src/Dutchskull.Aspire.GinApp/go.sum diff --git a/src/Dutchskull.Aspire.GinApp/Dockerfile b/src/Dutchskull.Aspire.GinApp/Dockerfile new file mode 100644 index 0000000..3946001 --- /dev/null +++ b/src/Dutchskull.Aspire.GinApp/Dockerfile @@ -0,0 +1,13 @@ +# Stage 1: Build the Go program +ARG GO_VERSION=1.22 +FROM golang:${GO_VERSION} AS builder +WORKDIR /app +COPY . . +RUN go mod tidy +RUN go build . + +# Stage 2: Run the Go program +FROM mcr.microsoft.com/cbl-mariner/base/core:2.0 +WORKDIR /app +COPY --from=builder /app/ginapp . +CMD ["./ginapp"] diff --git a/src/Dutchskull.Aspire.GinApp/ginapp.go b/src/Dutchskull.Aspire.GinApp/ginapp.go new file mode 100644 index 0000000..2af1508 --- /dev/null +++ b/src/Dutchskull.Aspire.GinApp/ginapp.go @@ -0,0 +1,36 @@ +package main + +import ( + "github.com/gin-gonic/gin" + "fmt" + "os" + "strconv" +) + +func main() { + // Create a Gin router with default middleware: logger and recovery (crash-free) middleware + router := gin.Default() + + // Define a route that listens to GET requests on /helloworld + router.GET("/", func(c *gin.Context) { + c.JSON(200, gin.H{ + "message": "Hello, World!", + }) + }) + + portVar := os.Getenv("PORT") + if portVar == "" { + fmt.Println("Environment variable PORT is not set.") + return + } + + port, err := strconv.Atoi(portVar) + if err != nil { + fmt.Printf("Error converting PORT to integer: %s\n", err) + return + } + + endpoint := fmt.Sprintf(":%d", port); + // Start the server on port 5555 + router.Run(endpoint) +} \ No newline at end of file diff --git a/src/Dutchskull.Aspire.GinApp/go.mod b/src/Dutchskull.Aspire.GinApp/go.mod new file mode 100644 index 0000000..f05aa5a --- /dev/null +++ b/src/Dutchskull.Aspire.GinApp/go.mod @@ -0,0 +1,34 @@ +module github.com/dotnet/aspire-samples/samples/container-build/ginapp/v2 + +go 1.22 + +require github.com/gin-gonic/gin v1.10.0 + +require ( + github.com/bytedance/sonic v1.11.9 // indirect + github.com/bytedance/sonic/loader v0.1.1 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.4 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.22.0 // indirect + github.com/goccy/go-json v0.10.3 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.2.8 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + golang.org/x/arch v0.8.0 // indirect + golang.org/x/crypto v0.25.0 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/src/Dutchskull.Aspire.GinApp/go.sum b/src/Dutchskull.Aspire.GinApp/go.sum new file mode 100644 index 0000000..c6e46b6 --- /dev/null +++ b/src/Dutchskull.Aspire.GinApp/go.sum @@ -0,0 +1,89 @@ +github.com/bytedance/sonic v1.11.9 h1:LFHENlIY/SLzDWverzdOvgMztTxcfcF+cqNsz9pK5zg= +github.com/bytedance/sonic v1.11.9/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4= +github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gabriel-vasile/mimetype v1.4.4 h1:QjV6pZ7/XZ7ryI2KuyeEDE8wnh7fHP9YnQy+R0LnH8I= +github.com/gabriel-vasile/mimetype v1.4.4/go.mod h1:JwLei5XPtWdGiMFB5Pjle1oEeoSeEuJfJE+TtfvdB/s= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= +github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao= +github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= +github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= +github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc= +golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs index c725f55..45153f2 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs @@ -43,6 +43,11 @@ .WithReference(apiService) .WithHttpEndpoint(54622); +IResourceBuilder dockerFile = builder + .AddDockerFileFromRepository("nodeProject", repository, "src/Dutchskull.Aspire.PolyRepo.Node") + .WithEndpoint(scheme: "http", targetPort: 5555, env: "PORT") + .WithBuildArg("GO_VERSION", "1.23rc1"); + builder.Services.TryAddEnumerable(ServiceDescriptor .Singleton()); diff --git a/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs b/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs index a65e7fd..b6392fa 100644 --- a/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs +++ b/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs @@ -57,4 +57,17 @@ public static IResourceBuilder AddNodeAppFromRepository( return builder.AddNodeApp(name, projectPath, workingDirectory, args); } + + public static IResourceBuilder AddDockerFileFromRepository( + this IDistributedApplicationBuilder builder, + string name, + IResourceBuilder repository, + string relativeProjectPath, + string? dockerFilePath = null, + string? stage = null) + { + string projectPath = repository.Resource.Resolve(relativeProjectPath); + + return builder.AddDockerfile(name, projectPath, dockerFilePath, stage); + } } \ No newline at end of file From 551d0b72db0ba499f0b6174f419c46c67e47f524 Mon Sep 17 00:00:00 2001 From: "BAS-LAPTOP\\bas10" Date: Wed, 18 Dec 2024 21:16:13 +0100 Subject: [PATCH 02/70] FIX going to aspire 9 --- .../Dutchskull.Aspire.PolyRepo.AppHost.csproj | 4 +++- src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj b/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj index d8a2cb0..504c0c2 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj @@ -1,5 +1,7 @@  - + + + Exe net8.0 diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs index 45153f2..3c1242e 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs @@ -44,7 +44,7 @@ .WithHttpEndpoint(54622); IResourceBuilder dockerFile = builder - .AddDockerFileFromRepository("nodeProject", repository, "src/Dutchskull.Aspire.PolyRepo.Node") + .AddDockerFileFromRepository("dockerProject", repository, "src/Dutchskull.Aspire.PolyRepo.Node") .WithEndpoint(scheme: "http", targetPort: 5555, env: "PORT") .WithBuildArg("GO_VERSION", "1.23rc1"); From 44cba9f9b298e50126d09f3c7ed830d3b706902a Mon Sep 17 00:00:00 2001 From: Bastien Olivier Dijkstra Date: Mon, 27 Jan 2025 20:39:37 +0100 Subject: [PATCH 03/70] ADD update to documentation --- README.md | 30 ++++++++++++++++-------------- todo.md | 15 --------------- 2 files changed, 16 insertions(+), 29 deletions(-) delete mode 100644 todo.md diff --git a/README.md b/README.md index 9584916..a436b56 100644 --- a/README.md +++ b/README.md @@ -30,25 +30,27 @@ var repository = builder.AddRepository( "https://github.com/Dutchskull/Aspire-Git.git", c => c.WithDefaultBranch("feature/rename_and_new_api") .WithTargetPath("../../repos")); +``` var dotnetProject = builder - .AddProjectFromRepository("dotnetProject", repository, - "src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj") - .WithReference(cache) - .WithReference(apiService); +.AddProjectFromRepository("dotnetProject", repository, +"src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj") +.WithReference(cache) +.WithReference(apiService); var reactProject = builder - .AddNpmAppFromRepository("reactProject", repository, "src/Dutchskull.Aspire.PolyRepo.React") - .WithReference(cache) - .WithReference(apiService) - .WithHttpEndpoint(3000); +.AddNpmAppFromRepository("reactProject", repository, "src/Dutchskull.Aspire.PolyRepo.React") +.WithReference(cache) +.WithReference(apiService) +.WithHttpEndpoint(3000); var nodeProject = builder - .AddNodeAppFromRepository("nodeProject", repository, "src/Dutchskull.Aspire.PolyRepo.Node") - .WithReference(cache) - .WithReference(apiService) - .WithHttpEndpoint(54622); -``` +.AddNodeAppFromRepository("nodeProject", repository, "src/Dutchskull.Aspire.PolyRepo.Node") +.WithReference(cache) +.WithReference(apiService) +.WithHttpEndpoint(54622); + +```` Navigate to your App Host project directory in the terminal. @@ -56,7 +58,7 @@ Run the application using the .NET CLI or Visual Studio 2022. ```sh dotnet run -``` +```` ## Example diff --git a/todo.md b/todo.md deleted file mode 100644 index b092623..0000000 --- a/todo.md +++ /dev/null @@ -1,15 +0,0 @@ -# Todo - -[x] Update readme with message that this is alpha and subject to change -[x] Write a blog post -[x] Update readme -[x] Test the new api if it still works -[x] Release 0.3.0 -[x] Add libgit2sharp -[x] Add keep branch up to date -[x] add logger -[] write documentation -[] add better tests -[] fix tests -[] WithTarget path has to work with absolute and relative path -[x] Rename repo to PolyRepo From 305ab9f85f5820de6501bec9041210de7c4b3b2a Mon Sep 17 00:00:00 2001 From: Bastien Olivier Dijkstra Date: Sat, 4 Oct 2025 21:11:04 +0200 Subject: [PATCH 04/70] chore: added props files --- src/Directory.Build.props | 7 ++++ src/Directory.Packages.props | 32 +++++++++++++++++++ ...tchskull.Aspire.PolyRepo.ApiService.csproj | 4 +-- .../Dutchskull.Aspire.PolyRepo.AppHost.csproj | 8 ++--- ...ull.Aspire.PolyRepo.ServiceDefaults.csproj | 16 +++++----- ...utchskull.Aspire.PolyRepo.Tests.E2E.csproj | 16 +++++----- ...tchskull.Aspire.PolyRepo.Tests.Unit.csproj | 14 ++++---- .../Dutchskull.Aspire.PolyRepo.Web.csproj | 4 +-- .../Dutchskull.Aspire.PolyRepo.csproj | 6 ++-- 9 files changed, 73 insertions(+), 34 deletions(-) create mode 100644 src/Directory.Build.props create mode 100644 src/Directory.Packages.props diff --git a/src/Directory.Build.props b/src/Directory.Build.props new file mode 100644 index 0000000..99cae99 --- /dev/null +++ b/src/Directory.Build.props @@ -0,0 +1,7 @@ + + + + true + + + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props new file mode 100644 index 0000000..967ea1b --- /dev/null +++ b/src/Directory.Packages.props @@ -0,0 +1,32 @@ + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj b/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj index 8a4228a..98d64e3 100644 --- a/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj @@ -7,8 +7,8 @@ - - + + diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj b/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj index 40437e4..cb20631 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj @@ -1,4 +1,4 @@ - + @@ -16,9 +16,9 @@ - - - + + + \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj b/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj index 6d97fd0..cc00dd0 100644 --- a/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj @@ -10,14 +10,14 @@ - - - - - - - - + + + + + + + + diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj index 9d4f8d0..5a236ba 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj @@ -1,4 +1,4 @@ - + net9.0 @@ -9,19 +9,19 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj index a55f63f..7b865be 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj @@ -10,19 +10,19 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj b/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj index 06f76ef..37ea7d7 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj @@ -1,4 +1,4 @@ - + net9.0 @@ -11,7 +11,7 @@ - + diff --git a/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj b/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj index 02716ce..8daa155 100644 --- a/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj +++ b/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj @@ -35,9 +35,9 @@ - - - + + + From 334f3e0b55e93c295e7186bb013d741561243d9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Oct 2025 03:16:56 +0000 Subject: [PATCH 05/70] Bump the alldependencies group with 2 updates Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.13.0 to 1.13.1 Bumps OpenTelemetry.Extensions.Hosting from 1.13.0 to 1.13.1 --- updated-dependencies: - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.13.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.13.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 967ea1b..1162657 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -19,8 +19,8 @@ - - + + From 9519a55ff35cc998e6a3c69b3e2b97ec9179e18c Mon Sep 17 00:00:00 2001 From: Bastien Olivier Dijkstra Date: Thu, 16 Oct 2025 18:10:49 +0200 Subject: [PATCH 06/70] add: file to sln --- src/Dutchskull.Aspire.PolyRepo.sln | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.sln b/src/Dutchskull.Aspire.PolyRepo.sln index 7c4cfdc..efe1c0a 100644 --- a/src/Dutchskull.Aspire.PolyRepo.sln +++ b/src/Dutchskull.Aspire.PolyRepo.sln @@ -17,9 +17,11 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{590CD7CC-738C-4302-8E24-022C3526CB1D}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig - ..\README.md = ..\README.md - ..\.github\workflows\main.yml = ..\.github\workflows\main.yml ..\.github\dependabot.yml = ..\.github\dependabot.yml + Directory.Build.props = Directory.Build.props + Directory.Packages.props = Directory.Packages.props + ..\.github\workflows\main.yml = ..\.github\workflows\main.yml + ..\README.md = ..\README.md EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{21DA0F88-D439-4398-AB99-0856EAC759D7}" From d58e66b931e3b8516e4e04ac85f5ade100469dfc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 03:15:47 +0000 Subject: [PATCH 07/70] Bump the alldependencies group with 2 updates Bumps Microsoft.AspNetCore.OpenApi from 9.0.9 to 9.0.10 Bumps Microsoft.Extensions.Http.Resilience from 9.9.0 to 9.10.0 --- updated-dependencies: - dependency-name: Microsoft.AspNetCore.OpenApi dependency-version: 9.0.10 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 9.10.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 1162657..9f1b8d1 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -14,8 +14,8 @@ - - + + From 6c4fb101224c21629f5cdb08964b9da26816cc92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 03:23:15 +0000 Subject: [PATCH 08/70] Bump the alldependencies group with 4 updates Bumps Microsoft.Extensions.ServiceDiscovery from 9.5.1 to 9.5.2 Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.12.0 to 1.13.0 Bumps OpenTelemetry.Instrumentation.Http from 1.12.0 to 1.13.0 Bumps OpenTelemetry.Instrumentation.Runtime from 1.12.0 to 1.13.0 --- updated-dependencies: - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 9.5.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.AspNetCore dependency-version: 1.13.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Http dependency-version: 1.13.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Runtime dependency-version: 1.13.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 9f1b8d1..985ca22 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -16,15 +16,15 @@ - + - + - - + + From 42b5fc87bbc5523591b76c60e1a1b549ccea9577 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Nov 2025 03:26:00 +0000 Subject: [PATCH 09/70] Bump the alldependencies group with 10 updates Bumps Microsoft.AspNetCore.OpenApi from 9.0.10 to 9.0.11 Bumps Microsoft.Extensions.Http.Resilience from 9.10.0 to 10.0.0 Bumps Microsoft.Extensions.ServiceDiscovery from 9.5.2 to 10.0.0 Bumps Microsoft.NET.Test.Sdk from 18.0.0 to 18.0.1 Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.13.1 to 1.14.0 Bumps OpenTelemetry.Extensions.Hosting from 1.13.1 to 1.14.0 Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.13.0 to 1.14.0 Bumps OpenTelemetry.Instrumentation.Http from 1.13.0 to 1.14.0 Bumps OpenTelemetry.Instrumentation.Runtime from 1.13.0 to 1.14.0 Bumps Swashbuckle.AspNetCore from 9.0.6 to 10.0.1 --- updated-dependencies: - dependency-name: Microsoft.AspNetCore.OpenApi dependency-version: 9.0.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: alldependencies - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.14.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.14.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.AspNetCore dependency-version: 1.14.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Http dependency-version: 1.14.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Runtime dependency-version: 1.14.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.0.1 dependency-type: direct:production update-type: version-update:semver-major dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 985ca22..563b6bf 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -14,18 +14,18 @@ - - - - + + + + - - - + + + - - - + + + From 7b9a67bcbf46ca42dd93a769b3a15ad876dcf70e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 03:11:53 +0000 Subject: [PATCH 10/70] Bump the alldependencies group with 2 updates Bumps Microsoft.Extensions.Http.Resilience from 10.0.0 to 10.1.0 Bumps Microsoft.Extensions.ServiceDiscovery from 10.0.0 to 10.1.0 --- updated-dependencies: - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 563b6bf..73d52c3 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,8 +15,8 @@ - - + + From e6ecc031d147e0f6c490a8354f5bd4b575f46949 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 16 Dec 2025 12:44:17 +0000 Subject: [PATCH 11/70] update all projects to .net 10, update javascript methods to reflect latest aspire package changes --- src/Directory.Packages.props | 9 +- ...tchskull.Aspire.PolyRepo.ApiService.csproj | 2 +- .../Dutchskull.Aspire.PolyRepo.AppHost.csproj | 4 +- .../NodeAppAddPortEventSubscriber.cs | 58 ++++++++++ .../NodeAppAddPortLifecycleHook.cs | 43 -------- .../Program.cs | 5 +- ...ull.Aspire.PolyRepo.ServiceDefaults.csproj | 2 +- ...utchskull.Aspire.PolyRepo.Tests.E2E.csproj | 4 +- ...tchskull.Aspire.PolyRepo.Tests.Unit.csproj | 2 +- .../Dutchskull.Aspire.PolyRepo.Web.csproj | 2 +- .../Dutchskull.Aspire.PolyRepo.csproj | 4 +- .../GitConfigBuilder.cs | 2 + .../ProjectResourceBuilderExtensions.cs | 26 +++-- .../Properties/Resources.Designer.cs | 63 +++++++++++ .../Properties/Resources.resx | 101 ++++++++++++++++++ 15 files changed, 259 insertions(+), 68 deletions(-) create mode 100644 src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs delete mode 100644 src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortLifecycleHook.cs create mode 100644 src/Dutchskull.Aspire.PolyRepo/Properties/Resources.Designer.cs create mode 100644 src/Dutchskull.Aspire.PolyRepo/Properties/Resources.resx diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 73d52c3..1731913 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -4,10 +4,11 @@ false - - - - + + + + + diff --git a/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj b/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj index 98d64e3..3ec524e 100644 --- a/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 enable enable diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj b/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj index cb20631..2f87272 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj @@ -4,7 +4,7 @@ Exe - net9.0 + net10.0 enable enable true @@ -17,8 +17,8 @@ + - \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs b/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs new file mode 100644 index 0000000..2e92b3a --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs @@ -0,0 +1,58 @@ +using Aspire.Hosting; +using Aspire.Hosting.ApplicationModel; +using Aspire.Hosting.Eventing; +using Aspire.Hosting.JavaScript; +using Aspire.Hosting.Lifecycle; + +namespace Dutchskull.Aspire.PolyRepo.AppHost; + +internal class NodeAppAddPortEventSubscriber : IDistributedApplicationEventingSubscriber +{ + public Task SubscribeAsync(IDistributedApplicationEventing eventing, DistributedApplicationExecutionContext executionContext, CancellationToken cancellationToken) + { + eventing.Subscribe((@event, cancellationToken) => + { + DistributedApplicationModel model = @event.Model; + + IEnumerable nodeApps = + model.Resources.OfType(); + + foreach (NodeAppResource app in nodeApps) + { + if (!app.TryGetEndpoints(out IEnumerable? bindings)) + { + continue; + } + + var endpointList = bindings.ToList(); + + var envAnnotation = new EnvironmentCallbackAnnotation(env => + { + bool multiBindings = endpointList.Count > 1; + + if (multiBindings) + { + foreach (EndpointAnnotation binding in endpointList) + { + string serviceName = + $"{app.Name}_{binding.Name}"; + + env[$"PORT_{binding.Name.ToUpperInvariant()}"] = + $"{{{{- portForServing \"{serviceName}\" -}}}}"; + } + } + else + { + env["PORT"] = + $"{{{{- portForServing \"{app.Name}\" -}}}}"; + } + }); + + app.Annotations.Add(envAnnotation); + } + return Task.CompletedTask; + }); + + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortLifecycleHook.cs b/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortLifecycleHook.cs deleted file mode 100644 index b1ad1da..0000000 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortLifecycleHook.cs +++ /dev/null @@ -1,43 +0,0 @@ -using Aspire.Hosting; -using Aspire.Hosting.ApplicationModel; -using Aspire.Hosting.Lifecycle; - -namespace Dutchskull.Aspire.PolyRepo.AppHost; - -internal class NodeAppAddPortLifecycleHook : IDistributedApplicationLifecycleHook -{ - public Task BeforeStartAsync(DistributedApplicationModel distributedApplicationModel, CancellationToken cancellationToken = default) - { - IEnumerable nodeApps = distributedApplicationModel.Resources.OfType(); - - foreach (NodeAppResource app in nodeApps) - { - if (!app.TryGetEndpoints(out IEnumerable? bindings)) - { - continue; - } - - EnvironmentCallbackAnnotation envAnnotation = new(env => - { - bool multiBindings = bindings.Count() > 1; - - if (multiBindings) - { - foreach (EndpointAnnotation binding in bindings) - { - string serviceName = multiBindings ? $"{app.Name}_{binding.Name}" : app.Name; - env[$"PORT_{binding.Name.ToUpperInvariant()}"] = $"{{{{- portForServing \"{serviceName}\" -}}}}"; - } - } - else - { - env["PORT"] = $"{{{{- portForServing \"{app.Name}\" -}}}}"; - } - }); - - app.Annotations.Add(envAnnotation); - } - - return Task.CompletedTask; - } -} \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs index 5c89d88..5666ebe 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs @@ -1,3 +1,4 @@ +using Aspire.Hosting.JavaScript; using Aspire.Hosting.Lifecycle; using Dutchskull.Aspire.PolyRepo; using Dutchskull.Aspire.PolyRepo.AppHost; @@ -32,7 +33,7 @@ .WithReference(cache) .WithReference(apiService); -IResourceBuilder reactProject = builder +IResourceBuilder reactProject = builder .AddNpmAppFromRepository("reactProject", repository, "src/Dutchskull.Aspire.PolyRepo.React") .WithReference(cache) .WithReference(apiService) @@ -50,7 +51,7 @@ .WithBuildArg("GO_VERSION", "1.23rc1"); builder.Services.TryAddEnumerable(ServiceDescriptor - .Singleton()); + .Singleton()); if (builder.Environment.IsDevelopment() && builder.Configuration["DOTNET_LAUNCH_PROFILE"] == "https") diff --git a/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj b/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj index cc00dd0..da69c4a 100644 --- a/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 enable enable true diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj index 5a236ba..1470541 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj @@ -1,7 +1,7 @@ - + - net9.0 + net10.0 enable enable false diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj index 7b865be..fb17ab2 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 enable enable diff --git a/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj b/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj index 37ea7d7..fc0369e 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 enable enable diff --git a/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj b/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj index 9dc3851..b3ee437 100644 --- a/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj +++ b/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj @@ -1,4 +1,4 @@ - + net9.0 @@ -36,7 +36,7 @@ - + diff --git a/src/Dutchskull.Aspire.PolyRepo/GitConfigBuilder.cs b/src/Dutchskull.Aspire.PolyRepo/GitConfigBuilder.cs index 4fa60e2..cedc5d3 100644 --- a/src/Dutchskull.Aspire.PolyRepo/GitConfigBuilder.cs +++ b/src/Dutchskull.Aspire.PolyRepo/GitConfigBuilder.cs @@ -42,6 +42,7 @@ public GitConfig Build() _customHeaders ??= []; +#pragma warning disable CS8601 // Possible null reference assignment. return new GitConfig { Url = _url, @@ -49,5 +50,6 @@ public GitConfig Build() Password = _password, CustomHeaders = _customHeaders }; +#pragma warning restore CS8601 // Possible null reference assignment. } } \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs b/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs index fc77aaf..36f0577 100644 --- a/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs +++ b/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs @@ -1,5 +1,6 @@ using Aspire.Hosting; using Aspire.Hosting.ApplicationModel; +using Aspire.Hosting.JavaScript; namespace Dutchskull.Aspire.PolyRepo; @@ -31,18 +32,27 @@ public static IResourceBuilder AddProjectFromRepository( return builder.AddProject(name, projectPath); } - public static IResourceBuilder AddNpmAppFromRepository( + public static IResourceBuilder AddNpmAppFromRepository( this IDistributedApplicationBuilder builder, string name, IResourceBuilder repository, string relativeProjectPath, - string scriptName = "start", - string[]? args = null) + string scriptName = "start") { string projectPath = repository.Resource.Resolve(relativeProjectPath); - repository.Resource.RepositoryConfig?.ProcessCommandsExecutor.NpmInstall(projectPath); + return builder.AddJavaScriptApp(name, projectPath, scriptName); + } - return builder.AddNpmApp(name, projectPath, scriptName, args); + public static IResourceBuilder AddViteAppFromRepository( + this IDistributedApplicationBuilder builder, + string name, + IResourceBuilder repository, + string relativeProjectPath, + string scriptName = "dev" + ) + { + string projectPath = repository.Resource.Resolve(relativeProjectPath); + return builder.AddViteApp(name, projectPath, scriptName); } public static IResourceBuilder AddNodeAppFromRepository( @@ -50,13 +60,11 @@ public static IResourceBuilder AddNodeAppFromRepository( string name, IResourceBuilder repository, string relativeProjectPath, - string? workingDirectory = null, - string[]? args = null) + string? workingDirectory = null) { string projectPath = repository.Resource.Resolve(relativeProjectPath); - repository.Resource.RepositoryConfig?.ProcessCommandsExecutor.NpmInstall(projectPath); - return builder.AddNodeApp(name, projectPath, workingDirectory, args); + return builder.AddNodeApp(name, projectPath, workingDirectory ?? "app.js"); } public static IResourceBuilder AddDockerFileFromRepository( diff --git a/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.Designer.cs b/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.Designer.cs new file mode 100644 index 0000000..38a5ed2 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Dutchskull.Aspire.PolyRepo.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Dutchskull.Aspire.PolyRepo.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.resx b/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.resx new file mode 100644 index 0000000..4fdb1b6 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file From 5cef8673e078b8c6720036234fb9e1e9d5d5c463 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 16 Dec 2025 14:03:54 +0000 Subject: [PATCH 12/70] update test package --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 1731913..23c66aa 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -9,7 +9,7 @@ - + From ee1759f1bc3ff52e30c98a5858bbc2f768116b70 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 16 Dec 2025 14:34:42 +0000 Subject: [PATCH 13/70] remove withopenapi, update package --- src/Directory.Packages.props | 4 ++-- src/Dutchskull.Aspire.PolyRepo.ApiService/Program.cs | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 23c66aa..48b8fbb 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -10,12 +10,12 @@ - + - + diff --git a/src/Dutchskull.Aspire.PolyRepo.ApiService/Program.cs b/src/Dutchskull.Aspire.PolyRepo.ApiService/Program.cs index 39f4be4..92bbaf1 100644 --- a/src/Dutchskull.Aspire.PolyRepo.ApiService/Program.cs +++ b/src/Dutchskull.Aspire.PolyRepo.ApiService/Program.cs @@ -40,7 +40,6 @@ ))]; return forecast; }) -.WithName("GetWeatherForecast") -.WithOpenApi(); +.WithName("GetWeatherForecast"); app.Run(); \ No newline at end of file From 1699abb7e62e293034a384f2f035a54f41e5f8dc Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 16 Dec 2025 14:51:39 +0000 Subject: [PATCH 14/70] include all javascript resources --- .../NodeAppAddPortEventSubscriber.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs b/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs index 2e92b3a..227e29d 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs @@ -13,11 +13,9 @@ public Task SubscribeAsync(IDistributedApplicationEventing eventing, Distributed eventing.Subscribe((@event, cancellationToken) => { DistributedApplicationModel model = @event.Model; + var javascriptApps = model.Resources.OfType(); - IEnumerable nodeApps = - model.Resources.OfType(); - - foreach (NodeAppResource app in nodeApps) + foreach (var app in javascriptApps) { if (!app.TryGetEndpoints(out IEnumerable? bindings)) { @@ -50,6 +48,7 @@ public Task SubscribeAsync(IDistributedApplicationEventing eventing, Distributed app.Annotations.Add(envAnnotation); } + return Task.CompletedTask; }); From b47a8b0a11c7841ab9f22a2b6262cd6e0957f278 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 16 Dec 2025 15:12:08 +0000 Subject: [PATCH 15/70] remove npm i because it's already included in the new aspire release, added default app.js as working directory --- .../Interfaces/IProcessCommandExecutor.cs | 2 -- src/Dutchskull.Aspire.PolyRepo/ProcessCommandExecutor.cs | 3 --- .../ProjectResourceBuilderExtensions.cs | 6 ++---- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo/Interfaces/IProcessCommandExecutor.cs b/src/Dutchskull.Aspire.PolyRepo/Interfaces/IProcessCommandExecutor.cs index e99b261..2430001 100644 --- a/src/Dutchskull.Aspire.PolyRepo/Interfaces/IProcessCommandExecutor.cs +++ b/src/Dutchskull.Aspire.PolyRepo/Interfaces/IProcessCommandExecutor.cs @@ -6,7 +6,5 @@ public interface IProcessCommandExecutor void CloneGitRepository(GitConfig gitConfig, string resolvedRepositoryPath, string? branch = null); - int NpmInstall(string resolvedRepositoryPath); - void PullAndResetRepository(GitConfig gitConfig, string repositoryConfigRepositoryPath); } \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo/ProcessCommandExecutor.cs b/src/Dutchskull.Aspire.PolyRepo/ProcessCommandExecutor.cs index 0a5e9f5..0df2d80 100644 --- a/src/Dutchskull.Aspire.PolyRepo/ProcessCommandExecutor.cs +++ b/src/Dutchskull.Aspire.PolyRepo/ProcessCommandExecutor.cs @@ -39,9 +39,6 @@ public void CloneGitRepository(GitConfig gitConfig, string resolvedRepositoryPat Repository.Clone(gitConfig.Url, resolvedRepositoryPath, cloneOptions); } - public int NpmInstall(string resolvedRepositoryPath) => - RunProcess("cmd.exe", $"/C cd {resolvedRepositoryPath} && npm i"); - public void PullAndResetRepository(GitConfig gitConfig, string repositoryConfigRepositoryPath) { using Repository repository = new(repositoryConfigRepositoryPath); diff --git a/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs b/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs index 36f0577..26d4809 100644 --- a/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs +++ b/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs @@ -60,11 +60,10 @@ public static IResourceBuilder AddNodeAppFromRepository( string name, IResourceBuilder repository, string relativeProjectPath, - string? workingDirectory = null) + string workingDirectory = "app.js") { string projectPath = repository.Resource.Resolve(relativeProjectPath); - - return builder.AddNodeApp(name, projectPath, workingDirectory ?? "app.js"); + return builder.AddNodeApp(name, projectPath, workingDirectory); } public static IResourceBuilder AddDockerFileFromRepository( @@ -76,7 +75,6 @@ public static IResourceBuilder AddDockerFileFromRepository( string? stage = null) { string projectPath = repository.Resource.Resolve(relativeProjectPath); - return builder.AddDockerfile(name, projectPath, dockerFilePath, stage); } } \ No newline at end of file From e24dddfa4fc0c96602171fa34ebc68e7860289bf Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 16 Dec 2025 15:12:42 +0000 Subject: [PATCH 16/70] add vite example --- .../Program.cs | 8 + .../.gitignore | 24 + src/Dutchskull.Aspire.PolyRepo.Vite/README.md | 73 + .../eslint.config.js | 23 + .../index.html | 13 + .../package-lock.json | 3224 +++++++++++++++++ .../package.json | 30 + .../public/vite.svg | 1 + .../src/App.css | 42 + .../src/App.tsx | 35 + .../src/assets/react.svg | 1 + .../src/index.css | 68 + .../src/main.tsx | 10 + .../tsconfig.app.json | 28 + .../tsconfig.json | 7 + .../tsconfig.node.json | 26 + .../vite.config.ts | 7 + 17 files changed, 3620 insertions(+) create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/.gitignore create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/README.md create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/eslint.config.js create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/index.html create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/package-lock.json create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/package.json create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/public/vite.svg create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/src/App.css create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/src/assets/react.svg create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/src/index.css create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/src/main.tsx create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.app.json create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.json create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.node.json create mode 100644 src/Dutchskull.Aspire.PolyRepo.Vite/vite.config.ts diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs index 5666ebe..c81d221 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs @@ -1,3 +1,4 @@ +using Aspire.Hosting; using Aspire.Hosting.JavaScript; using Aspire.Hosting.Lifecycle; using Dutchskull.Aspire.PolyRepo; @@ -39,6 +40,12 @@ .WithReference(apiService) .WithHttpEndpoint(3000); +IResourceBuilder viteProject = builder + .AddViteAppFromRepository("viteProject", repository, "src/Dutchskull.Aspire.PolyRepo.Vite") + .WithReference(cache) + .WithReference(apiService) + .WithHttpEndpoint(3001, name: "vite"); + IResourceBuilder nodeProject = builder .AddNodeAppFromRepository("nodeProject", repository, "src/Dutchskull.Aspire.PolyRepo.Node") .WithReference(cache) @@ -57,6 +64,7 @@ builder.Configuration["DOTNET_LAUNCH_PROFILE"] == "https") { reactProject.WithEnvironment("NODE_TLS_REJECT_UNAUTHORIZED", "0"); + viteProject.WithEnvironment("NODE_TLS_REJECT_UNAUTHORIZED", "0"); nodeProject.WithEnvironment("NODE_TLS_REJECT_UNAUTHORIZED", "0"); } diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/.gitignore b/src/Dutchskull.Aspire.PolyRepo.Vite/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/README.md b/src/Dutchskull.Aspire.PolyRepo.Vite/README.md new file mode 100644 index 0000000..d2e7761 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/README.md @@ -0,0 +1,73 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/eslint.config.js b/src/Dutchskull.Aspire.PolyRepo.Vite/eslint.config.js new file mode 100644 index 0000000..5e6b472 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/index.html b/src/Dutchskull.Aspire.PolyRepo.Vite/index.html new file mode 100644 index 0000000..1f738fe --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/index.html @@ -0,0 +1,13 @@ + + + + + + + vite-app + + +
+ + + diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/package-lock.json b/src/Dutchskull.Aspire.PolyRepo.Vite/package-lock.json new file mode 100644 index 0000000..f6560ae --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/package-lock.json @@ -0,0 +1,3224 @@ +{ + "name": "vite-app", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vite-app", + "version": "0.0.0", + "dependencies": { + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/node": "^24.10.1", + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.46.4", + "vite": "^7.2.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.1.tgz", + "integrity": "sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.1.tgz", + "integrity": "sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.1.tgz", + "integrity": "sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.1.tgz", + "integrity": "sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.1.tgz", + "integrity": "sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.1.tgz", + "integrity": "sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.1.tgz", + "integrity": "sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.1.tgz", + "integrity": "sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.1.tgz", + "integrity": "sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.1.tgz", + "integrity": "sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.1.tgz", + "integrity": "sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.1.tgz", + "integrity": "sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.1.tgz", + "integrity": "sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.1.tgz", + "integrity": "sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.1.tgz", + "integrity": "sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.1.tgz", + "integrity": "sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.1.tgz", + "integrity": "sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.1.tgz", + "integrity": "sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.1.tgz", + "integrity": "sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.1.tgz", + "integrity": "sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.1.tgz", + "integrity": "sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.1.tgz", + "integrity": "sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.1.tgz", + "integrity": "sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.1.tgz", + "integrity": "sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.1.tgz", + "integrity": "sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.1.tgz", + "integrity": "sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz", + "integrity": "sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.5.tgz", + "integrity": "sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.5.tgz", + "integrity": "sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.5.tgz", + "integrity": "sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.5.tgz", + "integrity": "sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.5.tgz", + "integrity": "sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.5.tgz", + "integrity": "sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.5.tgz", + "integrity": "sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.5.tgz", + "integrity": "sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.5.tgz", + "integrity": "sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.5.tgz", + "integrity": "sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.5.tgz", + "integrity": "sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.5.tgz", + "integrity": "sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.5.tgz", + "integrity": "sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.5.tgz", + "integrity": "sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.5.tgz", + "integrity": "sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.5.tgz", + "integrity": "sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.5.tgz", + "integrity": "sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.5.tgz", + "integrity": "sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.5.tgz", + "integrity": "sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.5.tgz", + "integrity": "sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.5.tgz", + "integrity": "sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.5.tgz", + "integrity": "sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.4.tgz", + "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", + "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.50.0.tgz", + "integrity": "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/type-utils": "8.50.0", + "@typescript-eslint/utils": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.50.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.50.0.tgz", + "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.50.0.tgz", + "integrity": "sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.50.0", + "@typescript-eslint/types": "^8.50.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.50.0.tgz", + "integrity": "sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.50.0.tgz", + "integrity": "sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.50.0.tgz", + "integrity": "sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0", + "@typescript-eslint/utils": "8.50.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", + "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz", + "integrity": "sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.50.0", + "@typescript-eslint/tsconfig-utils": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", + "debug": "^4.3.4", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.50.0.tgz", + "integrity": "sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz", + "integrity": "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.50.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz", + "integrity": "sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.5", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.53", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.8", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.8.tgz", + "integrity": "sha512-Y1fOuNDowLfgKOypdc9SPABfoWXuZHBOyCS4cD52IeZBhr4Md6CLLs6atcxVrzRmQ06E7hSlm5bHHApPKR/byA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001760", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz", + "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.1.tgz", + "integrity": "sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.1", + "@esbuild/android-arm": "0.27.1", + "@esbuild/android-arm64": "0.27.1", + "@esbuild/android-x64": "0.27.1", + "@esbuild/darwin-arm64": "0.27.1", + "@esbuild/darwin-x64": "0.27.1", + "@esbuild/freebsd-arm64": "0.27.1", + "@esbuild/freebsd-x64": "0.27.1", + "@esbuild/linux-arm": "0.27.1", + "@esbuild/linux-arm64": "0.27.1", + "@esbuild/linux-ia32": "0.27.1", + "@esbuild/linux-loong64": "0.27.1", + "@esbuild/linux-mips64el": "0.27.1", + "@esbuild/linux-ppc64": "0.27.1", + "@esbuild/linux-riscv64": "0.27.1", + "@esbuild/linux-s390x": "0.27.1", + "@esbuild/linux-x64": "0.27.1", + "@esbuild/netbsd-arm64": "0.27.1", + "@esbuild/netbsd-x64": "0.27.1", + "@esbuild/openbsd-arm64": "0.27.1", + "@esbuild/openbsd-x64": "0.27.1", + "@esbuild/openharmony-arm64": "0.27.1", + "@esbuild/sunos-x64": "0.27.1", + "@esbuild/win32-arm64": "0.27.1", + "@esbuild/win32-ia32": "0.27.1", + "@esbuild/win32-x64": "0.27.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.25", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.25.tgz", + "integrity": "sha512-dRUD2LOdEqI4zXHqbQ442blQAzdSuShAaiSq5Vtyy6LT08YUf0oOjBDo4VPx0dCPgiPWh1WB4dtbLOd0kOlDPQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.3" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.53.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.5.tgz", + "integrity": "sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.5", + "@rollup/rollup-android-arm64": "4.53.5", + "@rollup/rollup-darwin-arm64": "4.53.5", + "@rollup/rollup-darwin-x64": "4.53.5", + "@rollup/rollup-freebsd-arm64": "4.53.5", + "@rollup/rollup-freebsd-x64": "4.53.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.5", + "@rollup/rollup-linux-arm-musleabihf": "4.53.5", + "@rollup/rollup-linux-arm64-gnu": "4.53.5", + "@rollup/rollup-linux-arm64-musl": "4.53.5", + "@rollup/rollup-linux-loong64-gnu": "4.53.5", + "@rollup/rollup-linux-ppc64-gnu": "4.53.5", + "@rollup/rollup-linux-riscv64-gnu": "4.53.5", + "@rollup/rollup-linux-riscv64-musl": "4.53.5", + "@rollup/rollup-linux-s390x-gnu": "4.53.5", + "@rollup/rollup-linux-x64-gnu": "4.53.5", + "@rollup/rollup-linux-x64-musl": "4.53.5", + "@rollup/rollup-openharmony-arm64": "4.53.5", + "@rollup/rollup-win32-arm64-msvc": "4.53.5", + "@rollup/rollup-win32-ia32-msvc": "4.53.5", + "@rollup/rollup-win32-x64-gnu": "4.53.5", + "@rollup/rollup-win32-x64-msvc": "4.53.5", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.50.0.tgz", + "integrity": "sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.50.0", + "@typescript-eslint/parser": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0", + "@typescript-eslint/utils": "8.50.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz", + "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", + "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.1.tgz", + "integrity": "sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + } + } +} diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/package.json b/src/Dutchskull.Aspire.PolyRepo.Vite/package.json new file mode 100644 index 0000000..6dc6ee3 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/package.json @@ -0,0 +1,30 @@ +{ + "name": "vite-app", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/node": "^24.10.1", + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.46.4", + "vite": "^7.2.4" + } +} diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/public/vite.svg b/src/Dutchskull.Aspire.PolyRepo.Vite/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.css b/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx b/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx new file mode 100644 index 0000000..3d7ded3 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx @@ -0,0 +1,35 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( + <> + +

Vite + React

+
+ +

+ Edit src/App.tsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+ + ) +} + +export default App diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/src/assets/react.svg b/src/Dutchskull.Aspire.PolyRepo.Vite/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/src/index.css b/src/Dutchskull.Aspire.PolyRepo.Vite/src/index.css new file mode 100644 index 0000000..08a3ac9 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/src/main.tsx b/src/Dutchskull.Aspire.PolyRepo.Vite/src/main.tsx new file mode 100644 index 0000000..bef5202 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.app.json b/src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.app.json new file mode 100644 index 0000000..a9b5a59 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.app.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "types": ["vite/client"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.json b/src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.node.json b/src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.node.json new file mode 100644 index 0000000..8a67f62 --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/tsconfig.node.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/vite.config.ts b/src/Dutchskull.Aspire.PolyRepo.Vite/vite.config.ts new file mode 100644 index 0000000..8b0f57b --- /dev/null +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From edad533666a6d751a5df4b04474c6694845d16cb Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 16 Dec 2025 15:23:16 +0000 Subject: [PATCH 17/70] add test --- .../ServiceDiscoveryTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/ServiceDiscoveryTests.cs b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/ServiceDiscoveryTests.cs index ee5daff..ef4f2b2 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/ServiceDiscoveryTests.cs +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/ServiceDiscoveryTests.cs @@ -14,6 +14,7 @@ public class ServiceDiscoveryTests : IAsyncLifetime private ResourceNotificationService? _resourceNotificationService; [Theory] + [InlineData("viteProject", "/", HttpStatusCode.NotModified)] [InlineData("reactProject", "/", HttpStatusCode.NotModified)] [InlineData("nodeProject", "/", HttpStatusCode.OK)] [InlineData("dotnetProject", "/", HttpStatusCode.OK)] From 710687569dd6d831bc9b727e9206937f2ef2649f Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 16 Dec 2025 18:55:53 +0000 Subject: [PATCH 18/70] docker image was not running after building because of a lack of cache reference --- src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs index c81d221..93b509a 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs @@ -54,6 +54,7 @@ IResourceBuilder dockerFile = builder .AddDockerFileFromRepository("dockerProject", repository, "src/Dutchskull.Aspire.PolyRepo.Node") + .WithReference(cache) .WithEndpoint(scheme: "http", targetPort: 5555, env: "PORT") .WithBuildArg("GO_VERSION", "1.23rc1"); From 67e98c4b93adba9ae3b65e1d70fcba995c3f70c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 03:12:09 +0000 Subject: [PATCH 19/70] Bump the alldependencies group with 1 update Bumps Swashbuckle.AspNetCore from 10.0.1 to 10.1.0 --- updated-dependencies: - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 73d52c3..0d7fe88 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -25,7 +25,7 @@ - +
From 0b6392b6f5ab3ad5584fb8e948b907457a7385e1 Mon Sep 17 00:00:00 2001 From: Bastien Olivier Dijkstra Date: Mon, 5 Jan 2026 12:31:17 +0100 Subject: [PATCH 20/70] feat: Add dotnet 8,9,10 support to csproj --- src/Directory.Build.props | 8 +- src/Directory.Packages.props | 74 +++++++++------- ...tchskull.Aspire.PolyRepo.ApiService.csproj | 22 ++--- .../Dutchskull.Aspire.PolyRepo.AppHost.csproj | 4 +- ...ull.Aspire.PolyRepo.ServiceDefaults.csproj | 32 +++---- ...utchskull.Aspire.PolyRepo.Tests.E2E.csproj | 62 +++++++------ ...tchskull.Aspire.PolyRepo.Tests.Unit.csproj | 61 ++++++------- .../Dutchskull.Aspire.PolyRepo.Web.csproj | 18 ++-- .../Dutchskull.Aspire.PolyRepo.csproj | 88 +++++++++---------- 9 files changed, 179 insertions(+), 190 deletions(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 99cae99..750be83 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,7 +1,9 @@ - - true - + + net8.0;net9.0;net10.0 + enable + enable + diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 0d7fe88..abf8855 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -1,32 +1,46 @@ - - true - false - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj b/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj index 98d64e3..38191d0 100644 --- a/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.ApiService/Dutchskull.Aspire.PolyRepo.ApiService.csproj @@ -1,18 +1,12 @@ - - net9.0 - enable - enable - - - - - - - - - - + + + + + + + + diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj b/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj index cb20631..91c9695 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj @@ -1,12 +1,10 @@ + Exe - net9.0 - enable - enable true diff --git a/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj b/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj index cc00dd0..35c8408 100644 --- a/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.ServiceDefaults/Dutchskull.Aspire.PolyRepo.ServiceDefaults.csproj @@ -1,23 +1,19 @@ - - net9.0 - enable - enable - true - + + true + - - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj index 5a236ba..9fc8560 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj @@ -1,39 +1,37 @@ - - net9.0 - enable - enable - false - true - + + net10.0 + false + true + - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + - - - + + + - - - - + + + + diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj index 7b865be..e4cf49e 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj @@ -1,39 +1,36 @@ - - net9.0 - enable - enable + + net10.0 + false + true + - false - true - + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + - - - - - - - + + + diff --git a/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj b/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj index 37ea7d7..6e322ec 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Web/Dutchskull.Aspire.PolyRepo.Web.csproj @@ -1,17 +1,11 @@ - - net9.0 - enable - enable - + + + - - - - - - - + + + diff --git a/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj b/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj index 9dc3851..87b0b67 100644 --- a/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj +++ b/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj @@ -1,49 +1,45 @@ - - - - net9.0 - enable - enable - - Dutchskull.Aspire.PolyRepo - 0.3.3 - Dutchskull - A description of your package. - aspire git example - MIT - git - https://github.com/Dutchskull/Aspire-Git - https://github.com/Dutchskull/Aspire-Git - - false - - docs\README.md - docs\logo.jpg - - - - - true - docs/ - docs/logo.jpg - - - true - docs/ - docs/README.md - - - - - + + + + Dutchskull.Aspire.PolyRepo + 0.3.3 + Dutchskull + A description of your package. + aspire git example + MIT + git + https://github.com/Dutchskull/Aspire-Git + https://github.com/Dutchskull/Aspire-Git + + false + + docs\README.md + docs\logo.jpg + + + + + true + docs/ + docs/logo.jpg + + + true + docs/ + docs/README.md + + + + + - - - - - - <_Parameter1>Dutchskull.Aspire.PolyRepo.Tests.Unit - - + + + + + + <_Parameter1>Dutchskull.Aspire.PolyRepo.Tests.Unit + + \ No newline at end of file From c23579fa91b7ca870fe6bd33178f4c7bfd3229b6 Mon Sep 17 00:00:00 2001 From: Bastien Olivier Dijkstra Date: Mon, 5 Jan 2026 12:37:37 +0100 Subject: [PATCH 21/70] chore: update the next version to be 10 --- .github/workflows/main.yml | 5 ++++- GitVersion.yml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dbf18c4..8b41d01 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,10 @@ jobs: - name: Setup .NET SDKs uses: actions/setup-dotnet@v3 with: - dotnet-version: "9.0.x" + dotnet-version: | + 8.0.x + 9.0.x + 10.0.x - name: Install GitVersion uses: gittools/actions/gitversion/setup@v2.0.1 diff --git a/GitVersion.yml b/GitVersion.yml index 54e2ef0..1ee3ef7 100644 --- a/GitVersion.yml +++ b/GitVersion.yml @@ -1,5 +1,5 @@ mode: ContinuousDeployment -next-version: 9.0.0 +next-version: 10.0.0 branches: main: From 36f57b8536aab147b5d9c8612475fd878eefccae Mon Sep 17 00:00:00 2001 From: Bastien Olivier Dijkstra Date: Mon, 5 Jan 2026 12:38:11 +0100 Subject: [PATCH 22/70] fix: not all csproj where using the Directory.Build.props targets yet --- .../Dutchskull.Aspire.PolyRepo.AppHost.csproj | 5 ++--- .../Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj | 1 - .../Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj b/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj index 91c9695..2e115c0 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Dutchskull.Aspire.PolyRepo.AppHost.csproj @@ -1,7 +1,6 @@ - + - - + Exe diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj index 9fc8560..26ea3dd 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj @@ -1,7 +1,6 @@ - net10.0 false true diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj index e4cf49e..fe05958 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/Dutchskull.Aspire.PolyRepo.Tests.Unit.csproj @@ -1,7 +1,6 @@ - net10.0 false true From 1765633d0ed9a5f8d0cf921c01bf05fc95ffb518 Mon Sep 17 00:00:00 2001 From: Bastien Olivier Dijkstra Date: Mon, 5 Jan 2026 12:40:30 +0100 Subject: [PATCH 23/70] chore: add gitversion.yml to solution items --- src/Dutchskull.Aspire.PolyRepo.sln | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.sln b/src/Dutchskull.Aspire.PolyRepo.sln index efe1c0a..e2384ee 100644 --- a/src/Dutchskull.Aspire.PolyRepo.sln +++ b/src/Dutchskull.Aspire.PolyRepo.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.8.0.0 +# Visual Studio Version 18 +VisualStudioVersion = 18.1.11312.151 d18.0 MinimumVisualStudioVersion = 17.8.0.0 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dutchskull.Aspire.PolyRepo.AppHost", "Dutchskull.Aspire.PolyRepo.AppHost\Dutchskull.Aspire.PolyRepo.AppHost.csproj", "{ED328B7D-035C-4459-ABC3-D0435F386DA6}" EndProject @@ -20,6 +20,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ..\.github\dependabot.yml = ..\.github\dependabot.yml Directory.Build.props = Directory.Build.props Directory.Packages.props = Directory.Packages.props + ..\GitVersion.yml = ..\GitVersion.yml ..\.github\workflows\main.yml = ..\.github\workflows\main.yml ..\README.md = ..\README.md EndProjectSection From 0847acf9b200cf5c8613779532f9836ec058dcc2 Mon Sep 17 00:00:00 2001 From: Olivierus <36532695+WhiteOlivierus@users.noreply.github.com> Date: Mon, 5 Jan 2026 15:33:18 +0100 Subject: [PATCH 24/70] Update dependabot.yml to remove Aspire ignore rule Removed ignore rule for Aspire dependencies. --- .github/dependabot.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index a618eea..c600260 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -17,5 +17,3 @@ updates: ignore: - dependency-name: "FluentAssertions" versions: [ ">=8.0.0" ] - - dependency-name: "Aspire*" - versions: [ ">=9.0.0" ] From d0f35a5e2d3ea60d74f35b0592574d6eac0d4ec7 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 15:59:25 +0000 Subject: [PATCH 25/70] reinstate and make obsolete NpmInstall for compatibility --- .../Interfaces/IProcessCommandExecutor.cs | 3 +++ src/Dutchskull.Aspire.PolyRepo/ProcessCommandExecutor.cs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/Dutchskull.Aspire.PolyRepo/Interfaces/IProcessCommandExecutor.cs b/src/Dutchskull.Aspire.PolyRepo/Interfaces/IProcessCommandExecutor.cs index 2430001..c0ce62e 100644 --- a/src/Dutchskull.Aspire.PolyRepo/Interfaces/IProcessCommandExecutor.cs +++ b/src/Dutchskull.Aspire.PolyRepo/Interfaces/IProcessCommandExecutor.cs @@ -6,5 +6,8 @@ public interface IProcessCommandExecutor void CloneGitRepository(GitConfig gitConfig, string resolvedRepositoryPath, string? branch = null); + [Obsolete("Already present in Aspire.Hosting.Javascript .WithNpm() extension method, please use it instead.")] + int NpmInstall(string resolvedRepositoryPath); + void PullAndResetRepository(GitConfig gitConfig, string repositoryConfigRepositoryPath); } \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo/ProcessCommandExecutor.cs b/src/Dutchskull.Aspire.PolyRepo/ProcessCommandExecutor.cs index 0df2d80..426e592 100644 --- a/src/Dutchskull.Aspire.PolyRepo/ProcessCommandExecutor.cs +++ b/src/Dutchskull.Aspire.PolyRepo/ProcessCommandExecutor.cs @@ -121,4 +121,7 @@ private static DataReceivedEventHandler LogData(StringBuilder output, string typ Console.WriteLine($"[{type}]: {e.Data}"); }; } + + [Obsolete("Already present in Aspire.Hosting.Javascript .WithNpm() extension method, please use it instead.")] + public int NpmInstall(string resolvedRepositoryPath) => RunProcess("cmd.exe", $"/C cd {resolvedRepositoryPath} && npm i"); } \ No newline at end of file From 8b1c6b30403b18ba2173db5747b261aa46157778 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 15:59:47 +0000 Subject: [PATCH 26/70] delete contents of Properties --- .../Properties/Resources.Designer.cs | 63 ----------- .../Properties/Resources.resx | 101 ------------------ 2 files changed, 164 deletions(-) delete mode 100644 src/Dutchskull.Aspire.PolyRepo/Properties/Resources.Designer.cs delete mode 100644 src/Dutchskull.Aspire.PolyRepo/Properties/Resources.resx diff --git a/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.Designer.cs b/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.Designer.cs deleted file mode 100644 index 38a5ed2..0000000 --- a/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Dutchskull.Aspire.PolyRepo.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Dutchskull.Aspire.PolyRepo.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} diff --git a/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.resx b/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.resx deleted file mode 100644 index 4fdb1b6..0000000 --- a/src/Dutchskull.Aspire.PolyRepo/Properties/Resources.resx +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file From 017dd56b3a09e5782e6b651572aead774a1d4013 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 15:59:57 +0000 Subject: [PATCH 27/70] update to .net 10 --- .../Dutchskull.Aspire.PolyRepo.csproj | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj b/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj index b3ee437..b2ff72c 100644 --- a/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj +++ b/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj @@ -1,7 +1,7 @@  - net9.0 + net10.0 enable enable @@ -46,4 +46,8 @@ + + + + \ No newline at end of file From e23b0a8b5dc92b457fafd56cdb2f2289e1ff106e Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 16:00:43 +0000 Subject: [PATCH 28/70] rename to a more suitable name, since it's the name used in .net aspire now --- ...ventSubscriber.cs => JavascriptAppAddPortEventSubscriber.cs} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/Dutchskull.Aspire.PolyRepo.AppHost/{NodeAppAddPortEventSubscriber.cs => JavascriptAppAddPortEventSubscriber.cs} (95%) diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs b/src/Dutchskull.Aspire.PolyRepo.AppHost/JavascriptAppAddPortEventSubscriber.cs similarity index 95% rename from src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs rename to src/Dutchskull.Aspire.PolyRepo.AppHost/JavascriptAppAddPortEventSubscriber.cs index 227e29d..22194b9 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/NodeAppAddPortEventSubscriber.cs +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/JavascriptAppAddPortEventSubscriber.cs @@ -6,7 +6,7 @@ namespace Dutchskull.Aspire.PolyRepo.AppHost; -internal class NodeAppAddPortEventSubscriber : IDistributedApplicationEventingSubscriber +internal class JavascriptAppAddPortEventSubscriber : IDistributedApplicationEventingSubscriber { public Task SubscribeAsync(IDistributedApplicationEventing eventing, DistributedApplicationExecutionContext executionContext, CancellationToken cancellationToken) { From 36713173835bde4376410bba418ee7736a24b595 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 16:01:23 +0000 Subject: [PATCH 29/70] check for null, whitespace or empty url --- src/Dutchskull.Aspire.PolyRepo/GitConfigBuilder.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo/GitConfigBuilder.cs b/src/Dutchskull.Aspire.PolyRepo/GitConfigBuilder.cs index cedc5d3..a2c0dfa 100644 --- a/src/Dutchskull.Aspire.PolyRepo/GitConfigBuilder.cs +++ b/src/Dutchskull.Aspire.PolyRepo/GitConfigBuilder.cs @@ -9,6 +9,9 @@ public class GitConfigBuilder internal GitConfigBuilder WithUrl(string url) { + ArgumentNullException.ThrowIfNullOrWhiteSpace(url); + ArgumentNullException.ThrowIfNullOrEmpty(nameof(url)); + _url = url; return this; @@ -30,6 +33,11 @@ public GitConfigBuilder WithCustomHeaders(params string[] headers) public GitConfig Build() { + if (string.IsNullOrEmpty(_url) || string.IsNullOrWhiteSpace(_url)) + { + throw new InvalidOperationException(nameof(_url)); + } + if (string.IsNullOrEmpty(_username)) { _username = string.Empty; @@ -42,7 +50,6 @@ public GitConfig Build() _customHeaders ??= []; -#pragma warning disable CS8601 // Possible null reference assignment. return new GitConfig { Url = _url, @@ -50,6 +57,5 @@ public GitConfig Build() Password = _password, CustomHeaders = _customHeaders }; -#pragma warning restore CS8601 // Possible null reference assignment. } } \ No newline at end of file From b8d4f2dc58a5558edf47573981f8f185ac8b3b47 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 16:01:51 +0000 Subject: [PATCH 30/70] add .net aspire .WithNpm methods to javascript applications --- src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs index 93b509a..4d056cd 100644 --- a/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs +++ b/src/Dutchskull.Aspire.PolyRepo.AppHost/Program.cs @@ -38,18 +38,21 @@ .AddNpmAppFromRepository("reactProject", repository, "src/Dutchskull.Aspire.PolyRepo.React") .WithReference(cache) .WithReference(apiService) + .WithNpm() .WithHttpEndpoint(3000); IResourceBuilder viteProject = builder .AddViteAppFromRepository("viteProject", repository, "src/Dutchskull.Aspire.PolyRepo.Vite") .WithReference(cache) .WithReference(apiService) + .WithNpm() .WithHttpEndpoint(3001, name: "vite"); IResourceBuilder nodeProject = builder .AddNodeAppFromRepository("nodeProject", repository, "src/Dutchskull.Aspire.PolyRepo.Node") .WithReference(cache) .WithReference(apiService) + .WithNpm() .WithHttpEndpoint(54622); IResourceBuilder dockerFile = builder @@ -59,13 +62,14 @@ .WithBuildArg("GO_VERSION", "1.23rc1"); builder.Services.TryAddEnumerable(ServiceDescriptor - .Singleton()); + .Singleton()); if (builder.Environment.IsDevelopment() && builder.Configuration["DOTNET_LAUNCH_PROFILE"] == "https") { reactProject.WithEnvironment("NODE_TLS_REJECT_UNAUTHORIZED", "0"); viteProject.WithEnvironment("NODE_TLS_REJECT_UNAUTHORIZED", "0"); + viteProject.WithEnvironment("VITE_ENVIRONMENT_MODE", "Development"); nodeProject.WithEnvironment("NODE_TLS_REJECT_UNAUTHORIZED", "0"); } From fa29de76f69c2e8305bf164ba66ddb8f7696d1a4 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 16:03:25 +0000 Subject: [PATCH 31/70] add 2 examples of passing environment variables to vite applications, ui now resembles previous api example --- .../src/App.tsx | 72 +++++++++++++++---- .../src/main.tsx | 2 +- .../vite.config.ts | 16 +++-- 3 files changed, 71 insertions(+), 19 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx b/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx index 3d7ded3..df4247d 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx @@ -1,10 +1,35 @@ -import { useState } from 'react' +import { useEffect, useState } from 'react' import reactLogo from './assets/react.svg' import viteLogo from '/vite.svg' import './App.css' +type Forecast = { + date: string, + temperatureC: number; + temperatureF: number; + summary: string; +} + function App() { - const [count, setCount] = useState(0) + const [forecasts, setForecasts] = useState([]); + + const weatherApi = import.meta.env.VITE_WEATHER_API; + + console.log(weatherApi); + + useEffect(() => { + const fetchData = async (weatherApi: string) => { + const weather = await fetch(weatherApi); + console.log(weather); + + const weatherJson = await weather.json(); + console.log(weatherJson); + + setForecasts(weatherJson); + }; + + fetchData(weatherApi); + }, [weatherApi]); return ( <> @@ -17,17 +42,38 @@ function App() {

Vite + React

-
- -

- Edit src/App.tsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

+

Mode: {import.meta.env.VITE_ENVIRONMENT_MODE}

+ + + + + + + + + + + {( + forecasts ?? [ + { + date: "N/A", + temperatureC: "", + temperatureF: "", + summary: "No forecasts", + }, + ] + ).map((w) => { + return ( + + + + + + + ); + })} + +
DateTemp. (C)Temp. (F)Summary
{w.date}{w.temperatureC}{w.temperatureF}{w.summary}
) } diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/src/main.tsx b/src/Dutchskull.Aspire.PolyRepo.Vite/src/main.tsx index bef5202..10fdd8d 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Vite/src/main.tsx +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/src/main.tsx @@ -5,6 +5,6 @@ import App from './App.tsx' createRoot(document.getElementById('root')!).render( - + , ) diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/vite.config.ts b/src/Dutchskull.Aspire.PolyRepo.Vite/vite.config.ts index 8b0f57b..dc1dddd 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Vite/vite.config.ts +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/vite.config.ts @@ -1,7 +1,13 @@ -import { defineConfig } from 'vite' +import { defineConfig, loadEnv, type ConfigEnv } from 'vite' import react from '@vitejs/plugin-react' -// https://vite.dev/config/ -export default defineConfig({ - plugins: [react()], -}) +export default ({ mode }: ConfigEnv) => { + const env = loadEnv(mode, process.cwd(), ''); + console.log(env.services__apiservice__http__0) + return defineConfig({ + define: { + plugins: [react()], + 'import.meta.env.VITE_WEATHER_API': JSON.stringify(env.services__apiservice__http__0), + }, + }); +}; \ No newline at end of file From 1af2961b8ffd24776ffccf26c4465e67bed64523 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 16:07:20 +0000 Subject: [PATCH 32/70] maintain .net 9 support probably --- .../Dutchskull.Aspire.PolyRepo.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj b/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj index b2ff72c..70a09bf 100644 --- a/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj +++ b/src/Dutchskull.Aspire.PolyRepo/Dutchskull.Aspire.PolyRepo.csproj @@ -1,7 +1,7 @@  - net10.0 + net9.0;net10.0 enable enable From 73e56ddc141316d008fdfc372288068900554ff7 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 16:32:28 +0000 Subject: [PATCH 33/70] fix url --- src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx b/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx index df4247d..f253c7f 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx +++ b/src/Dutchskull.Aspire.PolyRepo.Vite/src/App.tsx @@ -13,7 +13,7 @@ type Forecast = { function App() { const [forecasts, setForecasts] = useState([]); - const weatherApi = import.meta.env.VITE_WEATHER_API; + const weatherApi = `${import.meta.env.VITE_WEATHER_API}/weatherforecast`; console.log(weatherApi); From d98137fd480098a28c58929a450bc767d7d0e59d Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 18:24:21 +0000 Subject: [PATCH 34/70] test to check cacheConfig value --- src/Dutchskull.Aspire.PolyRepo.Node/app.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Dutchskull.Aspire.PolyRepo.Node/app.js b/src/Dutchskull.Aspire.PolyRepo.Node/app.js index 5efdb21..bf5038c 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Node/app.js +++ b/src/Dutchskull.Aspire.PolyRepo.Node/app.js @@ -27,6 +27,7 @@ if (cachePasswordIndex > 0) { console.log(`cacheAddress: ${cacheAddress}`); console.log(`apiServer: ${apiServer}`); +console.log(`cacheConfig: ${cacheConfig}`); const cache = createClient(cacheConfig); cache.on('error', err => console.log('Redis Client Error', err)); From 78a76ddb7caf9edf2846fb519655473b7791220e Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Tue, 6 Jan 2026 18:27:49 +0000 Subject: [PATCH 35/70] revert --- src/Dutchskull.Aspire.PolyRepo.Node/app.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.Node/app.js b/src/Dutchskull.Aspire.PolyRepo.Node/app.js index bf5038c..a95f80e 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Node/app.js +++ b/src/Dutchskull.Aspire.PolyRepo.Node/app.js @@ -27,9 +27,8 @@ if (cachePasswordIndex > 0) { console.log(`cacheAddress: ${cacheAddress}`); console.log(`apiServer: ${apiServer}`); -console.log(`cacheConfig: ${cacheConfig}`); -const cache = createClient(cacheConfig); +const cache = createClient(cacheConfig.url); cache.on('error', err => console.log('Redis Client Error', err)); await cache.connect(); From b9958c7b7e10d14f462cd937a4423202ab4785d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 17:33:58 +0000 Subject: [PATCH 36/70] Bump Microsoft.Extensions.Http.Resilience and Microsoft.Extensions.ServiceDiscovery Bumps Microsoft.Extensions.Http.Resilience from 10.1.0 to 10.2.0 Bumps Microsoft.Extensions.ServiceDiscovery from 10.1.0 to 10.2.0 --- updated-dependencies: - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 4 ++-- .../Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 0ea5a3e..e43b229 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,8 +15,8 @@ - - + + diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj index f621734..8858cb2 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.E2E/Dutchskull.Aspire.PolyRepo.Tests.E2E.csproj @@ -29,6 +29,7 @@ + From 1bd0c6e50f0fef408ce809c4291ae2d86f50fda3 Mon Sep 17 00:00:00 2001 From: SpeedyR10 Date: Wed, 21 Jan 2026 15:25:59 +0000 Subject: [PATCH 37/70] skip build for .net projects if not needed --- .../ProjectResourceBuilderExtensions.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs b/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs index 26d4809..1b126eb 100644 --- a/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs +++ b/src/Dutchskull.Aspire.PolyRepo/ProjectResourceBuilderExtensions.cs @@ -24,10 +24,14 @@ public static IResourceBuilder AddProjectFromRepository( string name, IResourceBuilder repository, string relativeProjectPath, - string[]? buildArgs = null) + string[]? buildArgs = null, + bool skipBuild = false) { string projectPath = repository.Resource.Resolve(relativeProjectPath); - repository.Resource.RepositoryConfig?.ProcessCommandsExecutor.BuildDotNetProject(projectPath, buildArgs); + if (!skipBuild) + { + repository.Resource.RepositoryConfig?.ProcessCommandsExecutor.BuildDotNetProject(projectPath, buildArgs); + } return builder.AddProject(name, projectPath); } From 5383fbe9089d11cbb5b2c65cac0808244c1d4eb2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 25 Jan 2026 03:46:26 +0000 Subject: [PATCH 38/70] Bump the alldependencies group with 5 updates Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.14.0 to 1.15.0 Bumps OpenTelemetry.Extensions.Hosting from 1.14.0 to 1.15.0 Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.14.0 to 1.15.0 Bumps OpenTelemetry.Instrumentation.Http from 1.14.0 to 1.15.0 Bumps OpenTelemetry.Instrumentation.Runtime from 1.14.0 to 1.15.0 --- updated-dependencies: - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.15.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.15.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.AspNetCore dependency-version: 1.15.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Http dependency-version: 1.15.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Runtime dependency-version: 1.15.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index e43b229..9ee6817 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -19,12 +19,12 @@ - - - + + + - - + + From d1d675ff0c94f2824de5b3ee4347f094f7409967 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 8 Feb 2026 03:48:26 +0000 Subject: [PATCH 39/70] Bump the alldependencies group with 2 updates Bumps FluentAssertions from 7.2.0 to 7.2.1 Bumps Swashbuckle.AspNetCore from 10.1.0 to 10.1.2 --- updated-dependencies: - dependency-name: FluentAssertions dependency-version: 7.2.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.1.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 9ee6817..9a6c0ad 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -12,7 +12,7 @@ - + @@ -25,7 +25,7 @@ - + From 9601615f1aca05692b6324fca513493a0200a7dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 15 Feb 2026 04:00:39 +0000 Subject: [PATCH 40/70] Bump the alldependencies group with 10 updates Bumps Aspire.Hosting from 13.1.0 to 13.1.1 Bumps Aspire.Hosting.AppHost from 13.1.0 to 13.1.1 Bumps Aspire.Hosting.JavaScript from 13.1.0 to 13.1.1 Bumps Aspire.Hosting.Redis from 13.1.0 to 13.1.1 Bumps Aspire.Hosting.Testing from 13.1.0 to 13.1.1 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.1.0 to 13.1.1 Bumps coverlet.collector from 6.0.4 to 8.0.0 Bumps Microsoft.Extensions.Http.Resilience from 10.2.0 to 10.3.0 Bumps Microsoft.Extensions.ServiceDiscovery from 10.2.0 to 10.3.0 Bumps Swashbuckle.AspNetCore from 10.1.2 to 10.1.3 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: coverlet.collector dependency-version: 8.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: alldependencies - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 9a6c0ad..f5e9859 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,18 +5,18 @@ - - - - - - - + + + + + + + - - + + @@ -25,7 +25,7 @@ - + From c09130955c265f0d488dd4d1acae44796d27a1d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 22 Feb 2026 03:45:18 +0000 Subject: [PATCH 41/70] Bump the alldependencies group with 1 update Bumps Swashbuckle.AspNetCore from 10.1.3 to 10.1.4 --- updated-dependencies: - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.1.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index f5e9859..a5001ac 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -25,7 +25,7 @@ - + From 135b38aca5d6458f8c80f9a2813a159232f3a435 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Mar 2026 04:01:44 +0000 Subject: [PATCH 42/70] Bump the alldependencies group with 7 updates Bumps Aspire.Hosting from 13.1.1 to 13.1.2 Bumps Aspire.Hosting.AppHost from 13.1.1 to 13.1.2 Bumps Aspire.Hosting.JavaScript from 13.1.1 to 13.1.2 Bumps Aspire.Hosting.Redis from 13.1.1 to 13.1.2 Bumps Aspire.Hosting.Testing from 13.1.1 to 13.1.2 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.1.1 to 13.1.2 Bumps Microsoft.NET.Test.Sdk from 18.0.1 to 18.3.0 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.1.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.1.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.1.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.1.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.1.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.1.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index a5001ac..04ff129 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,19 +5,19 @@
- - - - - - + + + + + + - + From 808d0149e4220e8cba10c7e1e9755b4344c6f60b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 15 Mar 2026 03:48:01 +0000 Subject: [PATCH 43/70] Bump the alldependencies group with 4 updates Bumps Microsoft.Extensions.Http.Resilience from 10.3.0 to 10.4.0 Bumps Microsoft.Extensions.ServiceDiscovery from 10.3.0 to 10.4.0 Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.15.0 to 1.15.1 Bumps Swashbuckle.AspNetCore from 10.1.4 to 10.1.5 --- updated-dependencies: - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.AspNetCore dependency-version: 1.15.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.1.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 04ff129..a3249e8 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,17 +15,17 @@ - - + + - + - + From 64560ec97ff9fa70e4ad89a4ede83a8222722740 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 22 Mar 2026 04:02:34 +0000 Subject: [PATCH 44/70] Bump the alldependencies group with 8 updates Bumps Aspire.Hosting from 13.1.2 to 13.1.3 Bumps Aspire.Hosting.AppHost from 13.1.2 to 13.1.3 Bumps Aspire.Hosting.JavaScript from 13.1.2 to 13.1.3 Bumps Aspire.Hosting.Redis from 13.1.2 to 13.1.3 Bumps Aspire.Hosting.Testing from 13.1.2 to 13.1.3 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.1.2 to 13.1.3 Bumps coverlet.collector from 8.0.0 to 8.0.1 Bumps FluentAssertions from 7.2.1 to 7.2.2 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: coverlet.collector dependency-version: 8.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: FluentAssertions dependency-version: 7.2.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index a3249e8..604588f 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,14 +5,14 @@ - - - - - - - - + + + + + + + + From 0137a99fbef40ac5b83d7154f675fd145fd7d4a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Mar 2026 03:58:44 +0000 Subject: [PATCH 45/70] Bump the alldependencies group with 9 updates Bumps Aspire.Hosting from 13.1.3 to 13.2.0 Bumps Aspire.Hosting.AppHost from 13.1.3 to 13.2.0 Bumps Aspire.Hosting.JavaScript from 13.1.3 to 13.2.0 Bumps Aspire.Hosting.Redis from 13.1.3 to 13.2.0 Bumps Aspire.Hosting.Testing from 13.1.3 to 13.2.0 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.1.3 to 13.2.0 Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.15.0 to 1.15.1 Bumps OpenTelemetry.Extensions.Hosting from 1.15.0 to 1.15.1 Bumps Swashbuckle.AspNetCore from 10.1.5 to 10.1.7 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.15.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.15.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.1.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 604588f..59d7a80 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,12 +5,12 @@ - - - - - - + + + + + + @@ -19,13 +19,13 @@ - - + + - + From 4b3d89e65d5d3866bce494ec0c3f4b43685d3a7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 5 Apr 2026 03:56:17 +0000 Subject: [PATCH 46/70] Bump the alldependencies group with 6 updates Bumps Aspire.Hosting from 13.2.0 to 13.2.1 Bumps Aspire.Hosting.AppHost from 13.2.0 to 13.2.1 Bumps Aspire.Hosting.JavaScript from 13.2.0 to 13.2.1 Bumps Aspire.Hosting.Redis from 13.2.0 to 13.2.1 Bumps Aspire.Hosting.Testing from 13.2.0 to 13.2.1 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.2.0 to 13.2.1 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.2.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.2.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.2.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.2.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.2.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.2.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 59d7a80..0e0403d 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,12 +5,12 @@ - - - - - - + + + + + + From ffe3a7bc628e134509dddfdf630d8eafc3c443ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Apr 2026 04:00:28 +0000 Subject: [PATCH 47/70] Bump the alldependencies group with 9 updates Bumps Aspire.Hosting from 13.2.1 to 13.2.2 Bumps Aspire.Hosting.AppHost from 13.2.1 to 13.2.2 Bumps Aspire.Hosting.JavaScript from 13.2.1 to 13.2.2 Bumps Aspire.Hosting.Redis from 13.2.1 to 13.2.2 Bumps Aspire.Hosting.Testing from 13.2.1 to 13.2.2 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.2.1 to 13.2.2 Bumps Microsoft.NET.Test.Sdk from 18.3.0 to 18.4.0 Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.15.1 to 1.15.2 Bumps OpenTelemetry.Extensions.Hosting from 1.15.1 to 1.15.2 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.2.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.2.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.2.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.2.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.2.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.2.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.15.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.15.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 0e0403d..5017457 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,22 +5,22 @@ - - - - - - + + + + + + - + - - + + From a2d18ee33b9651e014c19f87cf68d5985b0cf1e4 Mon Sep 17 00:00:00 2001 From: Rob Gibbens Date: Thu, 16 Apr 2026 14:16:08 -0400 Subject: [PATCH 48/70] Added git url validation for Azure DevOps repositories Azure DevOps repositories have a different format compared to GitHub urls. This update adds RegEx support for Azure DevOps repos. --- .../GitUrlUtilitiesTests.cs | 2 ++ src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs index 6214e32..307d21e 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs @@ -10,6 +10,8 @@ public class GitUrlUtilitiesTests [Theory] [InlineData("https://github.com/example/repo.git", true)] [InlineData("https://github.com/example/repo", false)] + [InlineData("https://example@dev.azure.com/example/example%20web%20site/_git/example%20web%20site", true)] + [InlineData("git@ssh.dev.azure.com:v3/example/example%20web%20site/example%20web%20site", true)] [InlineData("git@github.com:example/repo", false)] [InlineData("git://github.com/example/repo", false)] [InlineData("https://example.com", false)] diff --git a/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs b/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs index 2ff045f..d58b194 100644 --- a/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs +++ b/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs @@ -10,6 +10,6 @@ internal static string GetProjectNameFromGitUrl(string gitUrl) => internal static bool IsValidGitUrl(string url) => !string.IsNullOrEmpty(url) && GitUrlRegex().IsMatch(url); - [GeneratedRegex(@"^(?:git|https?|git@[\w\.]+):\/\/[\w\.@\:\/\-~]+\.git(?:\/)?$")] + [GeneratedRegex(@"^(?:(?:git|https?):\/\/[^\s]+\.git(?:\/)?|https:\/\/(?:[\w.-]+@)?dev\.azure\.com\/[^\/\s]+\/[^\/\s]+\/_git\/[^\/\s]+(?:\/)?|git@ssh\.dev\.azure\.com:v3\/[^\/\s]+\/[^\/\s]+\/[^\/\s]+(?:\/)?)$")] private static partial Regex GitUrlRegex(); } From 7c95272f78b17b58d3fa336a040e7fa2553b6a7d Mon Sep 17 00:00:00 2001 From: Rob Gibbens Date: Thu, 16 Apr 2026 14:22:31 -0400 Subject: [PATCH 49/70] Update src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../GitUrlUtilitiesTests.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs index 307d21e..f9b2e05 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs @@ -11,6 +11,8 @@ public class GitUrlUtilitiesTests [InlineData("https://github.com/example/repo.git", true)] [InlineData("https://github.com/example/repo", false)] [InlineData("https://example@dev.azure.com/example/example%20web%20site/_git/example%20web%20site", true)] + [InlineData("https://dev.azure.com/example/example%20web%20site/_git/example%20web%20site", true)] + [InlineData("https://dev.azure.com/example/example%20web%20site/_git/example%20web%20site/", true)] [InlineData("git@ssh.dev.azure.com:v3/example/example%20web%20site/example%20web%20site", true)] [InlineData("git@github.com:example/repo", false)] [InlineData("git://github.com/example/repo", false)] From b1a8d8e3ec4acf8398682973160c07d53cf88e7d Mon Sep 17 00:00:00 2001 From: Rob Gibbens Date: Thu, 16 Apr 2026 14:35:29 -0400 Subject: [PATCH 50/70] Added support for getting project name from Azure DevOps urls --- .../GitRepositoryConfigBuilderTests.cs | 16 +++++++++++++ .../GitUrlUtilitiesTests.cs | 23 +++++++++++++++++++ .../GitUrlUtilities.cs | 19 +++++++++++++-- 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitRepositoryConfigBuilderTests.cs b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitRepositoryConfigBuilderTests.cs index 2ae52f2..87ddd8f 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitRepositoryConfigBuilderTests.cs +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitRepositoryConfigBuilderTests.cs @@ -65,6 +65,22 @@ public void BuildConfig_ShouldUseProvidedValues_WhenValuesAreProvided() config.FileSystem.Should().Be(fileSystem); } + [Fact] + public void BuildConfig_ShouldUseDecodedRepositoryName_ForAzureDevOpsUrls() + { + // Arrange + const string gitUrl = "https://dev.azure.com/example/example%20web%20site/_git/example%20web%20site"; + + RepositoryConfigBuilder builder = new RepositoryConfigBuilder() + .WithGitUrl(gitUrl); + + // Act + RepositoryConfig config = builder.Build(); + + // Assert + config.RepositoryPath.Should().Be(Path.Combine(Path.GetFullPath("."), "example web site")); + } + [Fact] public void WithCloneTargetPath_ShouldSetCloneTargetPath() { diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs index f9b2e05..39c3798 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs @@ -6,6 +6,7 @@ public class GitUrlUtilitiesTests { private const string GitUrl = "https://github.com/example/repo.git"; private const string ExpectedProjectName = "repo"; + private const string AzureDevOpsGitUrl = "https://dev.azure.com/example/example%20web%20site/_git/example%20web%20site"; [Theory] [InlineData("https://github.com/example/repo.git", true)] @@ -60,4 +61,26 @@ public void GetProjectNameFromGitUrl_ShouldReturnLastSegment_WhenUrlDoesNotEndWi // Assert projectName.Should().Be(ExpectedProjectName); } + + [Theory] + [InlineData(AzureDevOpsGitUrl)] + [InlineData("https://dev.azure.com/example/example%20web%20site/_git/example%20web%20site/")] + public void GetProjectNameFromGitUrl_ShouldDecodePercentEncodedRepositoryNames(string gitUrl) + { + // Act + string projectName = GitUrlUtilities.GetProjectNameFromGitUrl(gitUrl); + + // Assert + projectName.Should().Be("example web site"); + } + + [Fact] + public void GetProjectNameFromGitUrl_ShouldThrow_WhenDecodedRepositoryNameContainsPathSeparators() + { + // Act + Action act = () => GitUrlUtilities.GetProjectNameFromGitUrl("https://dev.azure.com/example/project/_git/repository%2Fchild"); + + // Assert + act.Should().Throw(); + } } \ No newline at end of file diff --git a/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs b/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs index d58b194..8435a6c 100644 --- a/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs +++ b/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs @@ -4,8 +4,23 @@ namespace Dutchskull.Aspire.PolyRepo; internal static partial class GitUrlUtilities { - internal static string GetProjectNameFromGitUrl(string gitUrl) => - gitUrl.RemovePostfix(".git").Split('/')[^1]; + internal static string GetProjectNameFromGitUrl(string gitUrl) + { + string normalizedGitUrl = gitUrl.TrimEnd('/').RemovePostfix(".git"); + string encodedProjectName = normalizedGitUrl[(normalizedGitUrl.LastIndexOf('/') + 1)..]; + string projectName = Uri.UnescapeDataString(encodedProjectName); + + if (string.IsNullOrWhiteSpace(projectName) || + projectName is "." or ".." || + projectName.Contains('/') || + projectName.Contains('\\') || + projectName.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0) + { + throw new ArgumentException("Git URL resolved to an unsafe repository name.", nameof(gitUrl)); + } + + return projectName; + } internal static bool IsValidGitUrl(string url) => !string.IsNullOrEmpty(url) && GitUrlRegex().IsMatch(url); From a2418c2027dc928274a2ed29a59f673c0c4c69c1 Mon Sep 17 00:00:00 2001 From: Rob Gibbens Date: Thu, 16 Apr 2026 15:20:43 -0400 Subject: [PATCH 51/70] Optimizing GetProjectNameFromGitUrl method Optimizing hot path --- .../GitUrlUtilitiesTests.cs | 1 + .../GitUrlUtilities.cs | 21 ++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs index 39c3798..8f63808 100644 --- a/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs +++ b/src/Dutchskull.Aspire.PolyRepo.Tests.Unit/GitUrlUtilitiesTests.cs @@ -65,6 +65,7 @@ public void GetProjectNameFromGitUrl_ShouldReturnLastSegment_WhenUrlDoesNotEndWi [Theory] [InlineData(AzureDevOpsGitUrl)] [InlineData("https://dev.azure.com/example/example%20web%20site/_git/example%20web%20site/")] + [InlineData("git@ssh.dev.azure.com:v3/example/example%20web%20site/example%20web%20site")] public void GetProjectNameFromGitUrl_ShouldDecodePercentEncodedRepositoryNames(string gitUrl) { // Act diff --git a/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs b/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs index 8435a6c..482097e 100644 --- a/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs +++ b/src/Dutchskull.Aspire.PolyRepo/GitUrlUtilities.cs @@ -6,9 +6,24 @@ internal static partial class GitUrlUtilities { internal static string GetProjectNameFromGitUrl(string gitUrl) { - string normalizedGitUrl = gitUrl.TrimEnd('/').RemovePostfix(".git"); - string encodedProjectName = normalizedGitUrl[(normalizedGitUrl.LastIndexOf('/') + 1)..]; - string projectName = Uri.UnescapeDataString(encodedProjectName); + ReadOnlySpan gitUrlSpan = gitUrl.AsSpan().TrimEnd('/'); + int projectNameStart = gitUrlSpan.LastIndexOf('/'); + + if (projectNameStart < 0 || projectNameStart == gitUrlSpan.Length - 1) + { + throw new ArgumentException("Git URL could not be parsed.", nameof(gitUrl)); + } + + ReadOnlySpan encodedProjectName = gitUrlSpan[(projectNameStart + 1)..]; + + if (encodedProjectName.EndsWith(".git", StringComparison.Ordinal)) + { + encodedProjectName = encodedProjectName[..^4]; + } + + string projectName = encodedProjectName.Contains('%') + ? Uri.UnescapeDataString(encodedProjectName.ToString()) + : encodedProjectName.ToString(); if (string.IsNullOrWhiteSpace(projectName) || projectName is "." or ".." || From 110f80bf3f4fc9ec7a22d74db7204a15bae5fd6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Apr 2026 03:49:07 +0000 Subject: [PATCH 52/70] Bump the alldependencies group with 3 updates Bumps coverlet.collector from 8.0.1 to 10.0.0 Bumps Microsoft.Extensions.Http.Resilience from 10.4.0 to 10.5.0 Bumps Microsoft.Extensions.ServiceDiscovery from 10.4.0 to 10.5.0 --- updated-dependencies: - dependency-name: coverlet.collector dependency-version: 10.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: alldependencies - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 5017457..de35353 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -11,12 +11,12 @@ - + - - + + From dcad0cb891905baf17118635390aad17d5e7d853 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Apr 2026 04:01:43 +0000 Subject: [PATCH 53/70] Bump the alldependencies group with 11 updates Bumps Aspire.Hosting from 13.2.2 to 13.2.4 Bumps Aspire.Hosting.AppHost from 13.2.2 to 13.2.4 Bumps Aspire.Hosting.JavaScript from 13.2.2 to 13.2.4 Bumps Aspire.Hosting.Redis from 13.2.2 to 13.2.4 Bumps Aspire.Hosting.Testing from 13.2.2 to 13.2.4 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.2.2 to 13.2.4 Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.15.2 to 1.15.3 Bumps OpenTelemetry.Extensions.Hosting from 1.15.2 to 1.15.3 Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.15.1 to 1.15.2 Bumps OpenTelemetry.Instrumentation.Http from 1.15.0 to 1.15.1 Bumps OpenTelemetry.Instrumentation.Runtime from 1.15.0 to 1.15.1 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.2.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.2.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.2.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.2.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.2.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.2.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.15.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.15.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.AspNetCore dependency-version: 1.15.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Http dependency-version: 1.15.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Runtime dependency-version: 1.15.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index de35353..a8c537a 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,12 +5,12 @@ - - - - - - + + + + + + @@ -19,12 +19,12 @@ - - - + + + - - + + From fd97f4e40561dd8fb5523e7f303ec29cb5014271 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 May 2026 03:47:56 +0000 Subject: [PATCH 54/70] Bump the alldependencies group with 1 update Bumps Microsoft.NET.Test.Sdk from 18.4.0 to 18.5.1 --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.5.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index a8c537a..49b99d0 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -17,7 +17,7 @@ - + From 8ccbe80142da9b67f02c7d183d3e0daeb6545003 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 10 May 2026 03:58:40 +0000 Subject: [PATCH 55/70] Bump the alldependencies group with 6 updates Bumps Aspire.Hosting from 13.2.4 to 13.3.0 Bumps Aspire.Hosting.AppHost from 13.2.4 to 13.3.0 Bumps Aspire.Hosting.JavaScript from 13.2.4 to 13.3.0 Bumps Aspire.Hosting.Redis from 13.2.4 to 13.3.0 Bumps Aspire.Hosting.Testing from 13.2.4 to 13.3.0 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.2.4 to 13.3.0 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 49b99d0..a499b25 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,12 +5,12 @@ - - - - - - + + + + + + From bd25a727c1868a490c073de5154325b3fa10aa05 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 17 May 2026 03:56:50 +0000 Subject: [PATCH 56/70] Bump the alldependencies group with 8 updates Bumps Aspire.Hosting from 13.3.0 to 13.3.3 Bumps Aspire.Hosting.AppHost from 13.3.0 to 13.3.3 Bumps Aspire.Hosting.JavaScript from 13.3.0 to 13.3.3 Bumps Aspire.Hosting.Redis from 13.3.0 to 13.3.3 Bumps Aspire.Hosting.Testing from 13.3.0 to 13.3.3 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.3.0 to 13.3.3 Bumps Microsoft.Extensions.Http.Resilience from 10.5.0 to 10.6.0 Bumps Microsoft.Extensions.ServiceDiscovery from 10.5.0 to 10.6.0 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.3.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.3.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.3.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.3.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.3.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.3.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.6.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.6.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index a499b25..7aa2b4c 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,18 +5,18 @@ - - - - - - + + + + + + - - + + From b07948fcedfb8a5e5041f5812612338b67144d2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 04:00:37 +0000 Subject: [PATCH 57/70] Bump the alldependencies group with 7 updates Bumps Aspire.Hosting from 13.3.3 to 13.3.5 Bumps Aspire.Hosting.AppHost from 13.3.3 to 13.3.5 Bumps Aspire.Hosting.JavaScript from 13.3.3 to 13.3.5 Bumps Aspire.Hosting.Redis from 13.3.3 to 13.3.5 Bumps Aspire.Hosting.Testing from 13.3.3 to 13.3.5 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.3.3 to 13.3.5 Bumps coverlet.collector from 10.0.0 to 10.0.1 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.3.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.3.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.3.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.3.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.3.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.3.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: coverlet.collector dependency-version: 10.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 7aa2b4c..384d85b 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,13 +5,13 @@ - - - - - - - + + + + + + + From cf0f829e1566c19195e51307262a16d67035c708 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 31 May 2026 03:48:48 +0000 Subject: [PATCH 58/70] Bump the alldependencies group with 2 updates Bumps Microsoft.NET.Test.Sdk from 18.5.1 to 18.6.0 Bumps Swashbuckle.AspNetCore from 10.1.7 to 10.2.0 --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.6.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 384d85b..c5b24b2 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -17,7 +17,7 @@ - + @@ -25,7 +25,7 @@ - + From e4a392f94f28da1de608deadab6335d26fed0923 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 7 Jun 2026 03:59:01 +0000 Subject: [PATCH 59/70] Bump the alldependencies group with 7 updates Bumps Aspire.Hosting from 13.3.5 to 13.4.2 Bumps Aspire.Hosting.AppHost from 13.3.5 to 13.4.2 Bumps Aspire.Hosting.JavaScript from 13.3.5 to 13.4.2 Bumps Aspire.Hosting.Redis from 13.3.5 to 13.4.2 Bumps Aspire.Hosting.Testing from 13.3.5 to 13.4.2 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.3.5 to 13.4.2 Bumps Swashbuckle.AspNetCore from 10.2.0 to 10.2.1 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.4.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.4.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.4.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.4.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.4.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.4.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.2.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index c5b24b2..101370c 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,12 +5,12 @@ - - - - - - + + + + + + @@ -25,7 +25,7 @@ - + From 09b9e68b6d5075fa7919fccf444f6a9af5046f65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 14 Jun 2026 04:00:36 +0000 Subject: [PATCH 60/70] Bump the alldependencies group with 10 updates Bumps Aspire.Hosting from 13.4.2 to 13.4.3 Bumps Aspire.Hosting.AppHost from 13.4.2 to 13.4.3 Bumps Aspire.Hosting.JavaScript from 13.4.2 to 13.4.3 Bumps Aspire.Hosting.Redis from 13.4.2 to 13.4.3 Bumps Aspire.Hosting.Testing from 13.4.2 to 13.4.3 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.4.2 to 13.4.3 Bumps Microsoft.Extensions.Http.Resilience from 10.6.0 to 10.7.0 Bumps Microsoft.Extensions.ServiceDiscovery from 10.6.0 to 10.7.0 Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.15.3 to 1.16.0 Bumps OpenTelemetry.Extensions.Hosting from 1.15.3 to 1.16.0 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.4.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.4.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.4.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.4.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.4.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.4.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.16.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.16.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 101370c..63d3fde 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,22 +5,22 @@ - - - - - - + + + + + + - - + + - - + + From 3cb0975635c3c8d3859035c6fda942f12311e4cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 21 Jun 2026 03:58:06 +0000 Subject: [PATCH 61/70] Bump the alldependencies group with 7 updates Bumps Aspire.Hosting from 13.4.3 to 13.4.6 Bumps Aspire.Hosting.AppHost from 13.4.3 to 13.4.6 Bumps Aspire.Hosting.JavaScript from 13.4.3 to 13.4.6 Bumps Aspire.Hosting.Redis from 13.4.3 to 13.4.6 Bumps Aspire.Hosting.Testing from 13.4.3 to 13.4.6 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.4.3 to 13.4.6 Bumps Swashbuckle.AspNetCore from 10.2.1 to 10.2.2 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.4.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.4.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.4.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.4.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.4.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.4.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.2.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 63d3fde..d444810 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,12 +5,12 @@ - - - - - - + + + + + + @@ -25,7 +25,7 @@ - + From 7faa5fe274b96a4a762c8185eb3bbe529805f750 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 28 Jun 2026 03:51:07 +0000 Subject: [PATCH 62/70] Bump the alldependencies group with 4 updates Bumps Microsoft.NET.Test.Sdk from 18.6.0 to 18.7.0 Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.15.2 to 1.16.0 Bumps OpenTelemetry.Instrumentation.Http from 1.15.1 to 1.16.0 Bumps Swashbuckle.AspNetCore from 10.2.2 to 10.2.3 --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.AspNetCore dependency-version: 1.16.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Http dependency-version: 1.16.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Swashbuckle.AspNetCore dependency-version: 10.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index d444810..f90426b 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -17,15 +17,15 @@ - + - + - + - + From 73f63474cc704fb18bfdf00ea920712bd0dc159c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Jul 2026 03:45:17 +0000 Subject: [PATCH 63/70] Bump the alldependencies group with 1 update Bumps OpenTelemetry.Instrumentation.Runtime from 1.15.1 to 1.16.0 --- updated-dependencies: - dependency-name: OpenTelemetry.Instrumentation.Runtime dependency-version: 1.16.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index f90426b..2b7f567 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -24,7 +24,7 @@ - + From 7794b30dfc7f92d9195c94e99b0197ea0c806d14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Jul 2026 03:56:37 +0000 Subject: [PATCH 64/70] Bump the alldependencies group with 9 updates Bumps Microsoft.Extensions.Http.Resilience from 10.7.0 to 10.8.0 Bumps Microsoft.Extensions.ServiceDiscovery from 10.7.0 to 10.8.0 Bumps Microsoft.NET.Test.Sdk from 18.7.0 to 18.8.1 Bumps NSubstitute from 5.3.0 to 6.0.0 Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.16.0 to 1.17.0 Bumps OpenTelemetry.Extensions.Hosting from 1.16.0 to 1.17.0 Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.16.0 to 1.17.0 Bumps OpenTelemetry.Instrumentation.Http from 1.16.0 to 1.17.0 Bumps OpenTelemetry.Instrumentation.Runtime from 1.16.0 to 1.17.0 --- updated-dependencies: - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.8.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.8.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.8.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: NSubstitute dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: alldependencies - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.17.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.17.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.AspNetCore dependency-version: 1.17.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Http dependency-version: 1.17.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Runtime dependency-version: 1.17.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 2b7f567..3f9688d 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,16 +15,16 @@ - - - - - - - + + + + + + + - - + + From c2008ea16d0209701a2fd83059148803c413612f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Jul 2026 03:45:27 +0000 Subject: [PATCH 65/70] Bump the alldependencies group with 1 update Bumps LibGit2Sharp from 0.31.0 to 0.32.0 --- updated-dependencies: - dependency-name: LibGit2Sharp dependency-version: 0.32.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 3f9688d..306d44f 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -14,7 +14,7 @@ - + From aca4267f027b821a19a240c4b9c94467d0ba46b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 9 Aug 2026 03:45:44 +0000 Subject: [PATCH 66/70] Bump the alldependencies group with 1 update Bumps NSubstitute from 6.0.0 to 6.1.0 --- updated-dependencies: - dependency-name: NSubstitute dependency-version: 6.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 306d44f..872cf58 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -18,7 +18,7 @@ - + From 8949ed01e37a94c220cbdd125af8f8ff148e9f86 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 16 Aug 2026 03:54:05 +0000 Subject: [PATCH 67/70] Bump the alldependencies group with 5 updates Bumps Microsoft.Extensions.Http.Resilience from 10.8.0 to 10.9.0 Bumps Microsoft.Extensions.ServiceDiscovery from 10.8.0 to 10.9.0 Bumps Microsoft.NET.Test.Sdk from 18.8.1 to 18.9.0 Bumps NSubstitute from 6.1.0 to 6.2.0 Bumps xunit.runner.visualstudio from 3.1.5 to 4.0.0 --- updated-dependencies: - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.9.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.9.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.9.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: NSubstitute dependency-version: 6.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: xunit.runner.visualstudio dependency-version: 4.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 872cf58..7187833 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,10 +15,10 @@ - - - - + + + + @@ -27,7 +27,7 @@ - + From 44a69e48eace70468a3f7509a1fa0f8fccbed884 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Aug 2026 03:55:22 +0000 Subject: [PATCH 68/70] Bump the alldependencies group with 11 updates Bumps Aspire.Hosting from 13.4.6 to 13.5.2 Bumps Aspire.Hosting.AppHost from 13.4.6 to 13.5.2 Bumps Aspire.Hosting.JavaScript from 13.4.6 to 13.5.2 Bumps Aspire.Hosting.Redis from 13.4.6 to 13.5.2 Bumps Aspire.Hosting.Testing from 13.4.6 to 13.5.2 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.4.6 to 13.5.2 Bumps OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Extensions.Hosting from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Instrumentation.AspNetCore from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Instrumentation.Http from 1.17.0 to 1.18.0 Bumps OpenTelemetry.Instrumentation.Runtime from 1.17.0 to 1.18.0 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.5.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.5.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.5.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.5.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.5.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.5.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Extensions.Hosting dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.AspNetCore dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Http dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: OpenTelemetry.Instrumentation.Runtime dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 7187833..7adecc1 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,12 +5,12 @@ - - - - - - + + + + + + @@ -19,12 +19,12 @@ - - - + + + - - + + From d0df89849046f0880c06c8e2d78d78638459985b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 30 Aug 2026 03:56:53 +0000 Subject: [PATCH 69/70] Bump the alldependencies group with 6 updates Bumps Aspire.Hosting from 13.5.2 to 13.5.3 Bumps Aspire.Hosting.AppHost from 13.5.2 to 13.5.3 Bumps Aspire.Hosting.JavaScript from 13.5.2 to 13.5.3 Bumps Aspire.Hosting.Redis from 13.5.2 to 13.5.3 Bumps Aspire.Hosting.Testing from 13.5.2 to 13.5.3 Bumps Aspire.StackExchange.Redis.OutputCaching from 13.5.2 to 13.5.3 --- updated-dependencies: - dependency-name: Aspire.Hosting dependency-version: 13.5.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.AppHost dependency-version: 13.5.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.JavaScript dependency-version: 13.5.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Redis dependency-version: 13.5.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.Hosting.Testing dependency-version: 13.5.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies - dependency-name: Aspire.StackExchange.Redis.OutputCaching dependency-version: 13.5.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 7adecc1..522083d 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -5,12 +5,12 @@ - - - - - - + + + + + + From 9fa27407900fd9cb0f01223824988d2c4ddaaadf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Sep 2026 03:48:10 +0000 Subject: [PATCH 70/70] Bump the alldependencies group with 3 updates Bumps Microsoft.Extensions.Http.Resilience from 10.9.0 to 10.10.0 Bumps Microsoft.Extensions.ServiceDiscovery from 10.9.0 to 10.10.0 Bumps Microsoft.NET.Test.Sdk from 18.9.0 to 18.10.0 --- updated-dependencies: - dependency-name: Microsoft.Extensions.Http.Resilience dependency-version: 10.10.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.Extensions.ServiceDiscovery dependency-version: 10.10.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies - dependency-name: Microsoft.NET.Test.Sdk dependency-version: 18.10.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: alldependencies ... Signed-off-by: dependabot[bot] --- src/Directory.Packages.props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 522083d..883787f 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -15,9 +15,9 @@ - - - + + +