diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 5dacccb..d22711c 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -41,9 +41,9 @@ jobs: - name: Install Tailwind CSS run: | curl --fail --location --silent --show-error \ - https://github.com/tailwindlabs/tailwindcss/releases/download/v4.2.2/tailwindcss-linux-x64 \ + https://github.com/tailwindlabs/tailwindcss/releases/download/v4.3.3/tailwindcss-linux-x64 \ --output /tmp/tailwindcss - echo '4ab84f2b496c402d3ec4fd25e0e5559fe1184d886dadae8fb4438344ec044c22 /tmp/tailwindcss' | sha256sum --check + echo 'dc61b3ac6b8c9ca874c0cc4c57b2409791a64c5540404ca5f5367360babc313a /tmp/tailwindcss' | sha256sum --check sudo install /tmp/tailwindcss /usr/local/bin/tailwindcss - name: Run local E2E working-directory: ./e2e diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 2925419..f8839a2 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -2,7 +2,7 @@ This repository includes browser assets from the following projects. -## Datastar 1.0.0-RC.6 +## Datastar 1.0.2 Source: https://github.com/starfederation/datastar diff --git a/app/Dockerfile b/app/Dockerfile index 255591e..066c252 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -5,11 +5,11 @@ WORKDIR /app # install tailwindcss v4 CLI (match builder platform) RUN ARCH=$(uname -m | sed 's/aarch64/arm64/' | sed 's/x86_64/x64/') \ && case "$ARCH" in \ - arm64) SHA256=ad627e77b496cccada4a6e26eafff698ef0829081e575a4baf3af8524bb00747 ;; \ - x64) SHA256=4ab84f2b496c402d3ec4fd25e0e5559fe1184d886dadae8fb4438344ec044c22 ;; \ + arm64) SHA256=55fd0b241214eff3de1e8ee4f22796662f2d2e7a49bcfca7477cfd0bac398195 ;; \ + x64) SHA256=dc61b3ac6b8c9ca874c0cc4c57b2409791a64c5540404ca5f5367360babc313a ;; \ *) echo "Unsupported architecture: $ARCH" >&2; exit 1 ;; \ esac \ - && curl -fsSLo /usr/local/bin/tailwindcss "https://github.com/tailwindlabs/tailwindcss/releases/download/v4.2.2/tailwindcss-linux-${ARCH}" \ + && curl -fsSLo /usr/local/bin/tailwindcss "https://github.com/tailwindlabs/tailwindcss/releases/download/v4.3.3/tailwindcss-linux-${ARCH}" \ && echo "$SHA256 /usr/local/bin/tailwindcss" | sha256sum --check \ && chmod +x /usr/local/bin/tailwindcss diff --git a/app/paket.lock b/app/paket.lock index fc9d92a..a51fc84 100644 --- a/app/paket.lock +++ b/app/paket.lock @@ -1,22 +1,23 @@ STORAGE: NONE NUGET remote: https://api.nuget.org/v3/index.json - FSharp.Core (10.0.103) - restriction: >= netstandard2.0 + FSharp.Core (10.1.302) - restriction: >= netstandard2.0 FSharp.SystemTextJson (1.4.36) FSharp.Core (>= 4.7) - restriction: >= netstandard2.0 System.Text.Json (>= 6.0.10) - restriction: >= netstandard2.0 FSharp.UMX (1.1) FSharp.Core (>= 4.3.4) - restriction: >= netstandard2.0 - FSharp.ViewEngine (2026.2.5) + FSharp.ViewEngine (2026.8) + FSharp.Core (>= 10.0.102) - restriction: >= net8.0 JetBrains.Annotations (>= 2025.2.4) - restriction: >= net8.0 - FsToolkit.ErrorHandling (5.1) + FsToolkit.ErrorHandling (5.2) FSharp.Core (>= 6.0.4) - restriction: || (&& (< net9.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) FSharp.Core (>= 9.0.300) - restriction: >= net9.0 Microsoft.Bcl.AsyncInterfaces (>= 6.0) - restriction: && (>= netstandard2.0) (< netstandard2.1) FsToolkit.ErrorHandling.TaskResult (4.18) FsToolkit.ErrorHandling (>= 4.18) - restriction: >= netstandard2.0 Ply (>= 0.3.1) - restriction: && (>= netstandard2.0) (< netstandard2.1) - Giraffe (8.2) + Giraffe (8.3) FSharp.Core (>= 6.0) - restriction: >= net6.0 FSharp.SystemTextJson (>= 1.3.13) - restriction: >= net6.0 Giraffe.ViewEngine (>= 1.4) - restriction: >= net6.0 @@ -24,117 +25,117 @@ NUGET System.Text.Json (>= 8.0.6) - restriction: >= net6.0 Giraffe.ViewEngine (1.4) - restriction: >= net6.0 FSharp.Core (>= 5.0) - restriction: >= netstandard2.0 - Google.Protobuf (3.33.5) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) + Google.Protobuf (3.35.1) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) System.Memory (>= 4.5.3) - restriction: || (>= net45) (&& (< net5.0) (>= netstandard2.0)) (&& (>= netstandard1.1) (< netstandard2.0)) System.Runtime.CompilerServices.Unsafe (>= 4.5.2) - restriction: && (< net45) (< net5.0) (>= netstandard2.0) - Grpc.Core.Api (2.76) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) + Grpc.Core.Api (2.83) - restriction: || (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) System.Memory (>= 4.5.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Grpc.Net.Client (2.76) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) - Grpc.Net.Common (>= 2.76) - restriction: || (>= net462) (>= netstandard2.0) + Grpc.Net.Client (2.83) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) + Grpc.Net.Common (>= 2.83) - restriction: || (>= net462) (>= netstandard2.0) Microsoft.Extensions.Logging.Abstractions (>= 8.0) - restriction: || (>= net462) (>= netstandard2.0) System.Diagnostics.DiagnosticSource (>= 6.0.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) System.Net.Http.WinHttpHandler (>= 8.0.3) - restriction: >= net462 - Grpc.Net.Common (2.76) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) - Grpc.Core.Api (>= 2.76) - restriction: >= netstandard2.0 + Grpc.Net.Common (2.83) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) + Grpc.Core.Api (>= 2.83) - restriction: >= netstandard2.0 Microsoft.Bcl.AsyncInterfaces (>= 8.0) - restriction: && (>= netstandard2.0) (< netstandard2.1) - JetBrains.Annotations (2025.2.4) - restriction: >= net8.0 - Markdig (1.0) + JetBrains.Annotations (2026.2) - restriction: >= net8.0 + Markdig (1.3.2) System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.AspNetCore.Hosting.Abstractions (2.3.9) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.AspNetCore.Hosting.Server.Abstractions (>= 2.3) - restriction: >= netstandard2.0 - Microsoft.AspNetCore.Http.Abstractions (>= 2.3) - restriction: >= netstandard2.0 + Microsoft.AspNetCore.Hosting.Abstractions (2.3.11) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.AspNetCore.Hosting.Server.Abstractions (>= 2.3.10) - restriction: >= netstandard2.0 + Microsoft.AspNetCore.Http.Abstractions (>= 2.3.10) - restriction: >= netstandard2.0 Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1) - restriction: >= netstandard2.0 - Microsoft.AspNetCore.Hosting.Server.Abstractions (2.3.9) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.AspNetCore.Http.Features (>= 2.3) - restriction: >= netstandard2.0 + Microsoft.AspNetCore.Hosting.Server.Abstractions (2.3.11) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.AspNetCore.Http.Features (>= 2.3.10) - restriction: >= netstandard2.0 Microsoft.Extensions.Configuration.Abstractions (>= 8.0) - restriction: >= netstandard2.0 - Microsoft.AspNetCore.Http.Abstractions (2.3.9) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.AspNetCore.Http.Features (>= 2.3) - restriction: >= netstandard2.0 + Microsoft.AspNetCore.Http.Abstractions (2.3.11) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.AspNetCore.Http.Features (>= 2.3.10) - restriction: >= netstandard2.0 System.Text.Encodings.Web (>= 8.0) - restriction: >= netstandard2.0 Microsoft.AspNetCore.Http.Features (5.0.17) - restriction: && (< net8.0) (>= netstandard2.0) Microsoft.Extensions.Primitives (>= 5.0.1) - restriction: || (>= net461) (>= netstandard2.0) System.IO.Pipelines (>= 5.0.2) - restriction: || (>= net461) (>= netstandard2.0) - Microsoft.Bcl.AsyncInterfaces (10.0.3) - restriction: || (>= net462) (&& (>= net6.0) (< net8.0)) (&& (>= net6.0) (< netstandard2.1)) (&& (< net8.0) (>= net9.0)) (&& (>= net9.0) (< netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Bcl.AsyncInterfaces (10.0.10) - restriction: || (>= net462) (&& (>= net6.0) (< net8.0)) (&& (>= net6.0) (< netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) Microsoft.Bcl.HashCode (6.0) - restriction: || (&& (>= net462) (>= net6.0)) (&& (>= net462) (< netstandard2.0)) (>= net471) - Microsoft.Data.Sqlite (10.0.3) - Microsoft.Data.Sqlite.Core (>= 10.0.3) - restriction: >= netstandard2.0 + Microsoft.Data.Sqlite (10.0.10) + Microsoft.Data.Sqlite.Core (>= 10.0.10) - restriction: >= netstandard2.0 SQLitePCLRaw.bundle_e_sqlite3 (>= 2.1.11) - restriction: >= netstandard2.0 SQLitePCLRaw.core (>= 2.1.11) - restriction: >= netstandard2.0 - Microsoft.Data.Sqlite.Core (10.0.3) - restriction: >= netstandard2.0 + Microsoft.Data.Sqlite.Core (10.0.10) - restriction: >= netstandard2.0 SQLitePCLRaw.core (>= 2.1.11) - restriction: >= netstandard2.0 - Microsoft.Extensions.Configuration (10.0.3) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (10.0.3) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.1)) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - System.ValueTuple (>= 4.6.1) - restriction: >= net462 - Microsoft.Extensions.Configuration.Binder (10.0.3) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) - Microsoft.Extensions.Configuration (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.EnvironmentVariables (10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection (10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Bcl.AsyncInterfaces (>= 10.0.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration (10.0.10) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Abstractions (10.0.10) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + System.ValueTuple (>= 4.6.2) - restriction: >= net462 + Microsoft.Extensions.Configuration.Binder (10.0.10) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) + Microsoft.Extensions.Configuration (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.EnvironmentVariables (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Bcl.AsyncInterfaces (>= 10.0.10) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Extensions.DependencyInjection.Abstractions (10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Bcl.AsyncInterfaces (>= 10.0.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Extensions.DependencyInjection.Abstractions (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Bcl.AsyncInterfaces (>= 10.0.10) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Extensions.DependencyModel (10.0.3) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyModel (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Text.Encodings.Web (>= 10.0.3) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - System.Text.Json (>= 10.0.3) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) - Microsoft.Extensions.Diagnostics.Abstractions (10.0.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) + System.Text.Encodings.Web (>= 10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Text.Json (>= 10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + Microsoft.Extensions.Diagnostics.Abstractions (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Diagnostics.DiagnosticSource (>= 10.0.3) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Diagnostics.DiagnosticSource (>= 10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - Microsoft.Extensions.FileProviders.Abstractions (10.0.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Hosting.Abstractions (10.0.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (>= netstandard2.0) - Microsoft.Bcl.AsyncInterfaces (>= 10.0.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Diagnostics.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.FileProviders.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.FileProviders.Abstractions (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Hosting.Abstractions (10.0.10) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (>= netstandard2.0) + Microsoft.Bcl.AsyncInterfaces (>= 10.0.10) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Diagnostics.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.FileProviders.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Extensions.Logging (10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Bcl.AsyncInterfaces (>= 10.0.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - Microsoft.Extensions.DependencyInjection (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - System.Diagnostics.DiagnosticSource (>= 10.0.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) - System.ValueTuple (>= 4.6.1) - restriction: >= net462 - Microsoft.Extensions.Logging.Abstractions (10.0.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Bcl.AsyncInterfaces (>= 10.0.10) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + Microsoft.Extensions.DependencyInjection (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + System.Diagnostics.DiagnosticSource (>= 10.0.10) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + System.ValueTuple (>= 4.6.2) - restriction: >= net462 + Microsoft.Extensions.Logging.Abstractions (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Diagnostics.DiagnosticSource (>= 10.0.3) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Diagnostics.DiagnosticSource (>= 10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - Microsoft.Extensions.Logging.Configuration (10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Binder (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Logging.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (10.0.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Configuration (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Binder (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Logging.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) System.ComponentModel.Annotations (>= 5.0) - restriction: || (&& (< net462) (>= netstandard2.0) (< netstandard2.1)) (&& (< net8.0) (>= netstandard2.1)) - System.ValueTuple (>= 4.6.1) - restriction: >= net462 - Microsoft.Extensions.Options.ConfigurationExtensions (10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Configuration.Binder (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Options (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (>= 10.0.3) - restriction: || (>= net462) (>= netstandard2.0) - Microsoft.Extensions.Primitives (10.0.3) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) + System.ValueTuple (>= 4.6.2) - restriction: >= net462 + Microsoft.Extensions.Options.ConfigurationExtensions (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Configuration.Binder (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Options (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) + Microsoft.Extensions.Primitives (10.0.10) - restriction: || (>= net462) (>= netstandard2.0) System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) Microsoft.IO.RecyclableMemoryStream (3.0.1) - restriction: >= net6.0 @@ -184,7 +185,7 @@ NUGET Ply (0.3.1) - restriction: && (>= netstandard2.0) (< netstandard2.1) FSharp.Core (>= 4.6.2) - restriction: >= netstandard2.0 System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: >= netstandard2.0 - Serilog (4.3.1) + Serilog (4.4) System.Diagnostics.DiagnosticSource (>= 8.0.1) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (< net6.0) (>= netstandard2.0)) (>= net471) System.Threading.Channels (>= 8.0) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (< net6.0) (>= netstandard2.0)) (>= net471) System.ValueTuple (>= 4.5) - restriction: && (>= net462) (< netstandard2.0) @@ -209,7 +210,7 @@ NUGET Serilog (>= 4.2) - restriction: || (>= net462) (>= netstandard2.0) Serilog.Formatting.Compact (3.0) - restriction: || (>= net462) (>= netstandard2.0) Serilog (>= 4.0) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) - Serilog.Settings.Configuration (10.0) - restriction: || (>= net462) (>= netstandard2.0) + Serilog.Settings.Configuration (10.0.1) - restriction: || (>= net462) (>= netstandard2.0) Microsoft.Extensions.Configuration.Binder (>= 10.0) - restriction: || (>= net462) (>= netstandard2.0) Microsoft.Extensions.DependencyModel (>= 10.0) - restriction: || (>= net462) (>= netstandard2.0) Serilog (>= 4.3) - restriction: || (>= net462) (>= netstandard2.0) @@ -223,62 +224,58 @@ NUGET Google.Protobuf (>= 3.30.1) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) Grpc.Net.Client (>= 2.70) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) Serilog (>= 4.2) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (>= netstandard2.0)) (>= net471) (>= net6.0) - Serilog.Sinks.Seq (9.0) - Serilog (>= 4.2) - restriction: >= netstandard2.0 - Serilog.Sinks.File (>= 6.0) - restriction: >= netstandard2.0 - SourceGear.sqlite3 (3.50.4.5) - restriction: >= netstandard2.0 - SQLitePCLRaw.bundle_e_sqlite3 (3.0.2) - restriction: >= netstandard2.0 - SourceGear.sqlite3 (>= 3.50.4.2) - restriction: >= netstandard2.0 - SQLitePCLRaw.config.e_sqlite3 (>= 3.0.2) - restriction: >= netstandard2.0 - SQLitePCLRaw.config.e_sqlite3 (3.0.2) - restriction: >= netstandard2.0 - SQLitePCLRaw.provider.e_sqlite3 (>= 3.0.2) - restriction: || (>= net471) (&& (>= net8.0) (< net8.0-ios) (< net8.0-tvos)) (&& (< net8.0) (>= netstandard2.0)) - SQLitePCLRaw.provider.internal (>= 3.0.2) - restriction: || (>= net8.0-ios) (>= net8.0-tvos) - SQLitePCLRaw.core (3.0.2) - restriction: >= netstandard2.0 - System.Memory (>= 4.6.3) - restriction: >= netstandard2.0 - SQLitePCLRaw.provider.e_sqlite3 (3.0.2) - restriction: || (>= net471) (&& (>= net8.0) (< net8.0-ios) (< net8.0-tvos)) (&& (< net8.0) (>= netstandard2.0)) - SQLitePCLRaw.core (>= 3.0.2) - restriction: >= netstandard2.0 - SQLitePCLRaw.provider.internal (3.0.2) - restriction: || (>= net8.0-ios) (>= net8.0-tvos) - SQLitePCLRaw.core (>= 3.0.2) - restriction: >= net8.0 - StarFederation.Datastar (1.2) - StarFederation.Datastar.FSharp (>= 1.2) - restriction: >= net8.0 - StarFederation.Datastar.FSharp (1.2) - restriction: >= net8.0 + Serilog.Sinks.Seq (9.1) + Serilog (>= 4.3.1) - restriction: >= netstandard2.0 + Serilog.Sinks.File (>= 7.0) - restriction: >= netstandard2.0 + SQLite (3.53.4) - restriction: >= netstandard2.0 + SQLitePCLRaw.bundle_e_sqlite3 (3.0.5) - restriction: >= netstandard2.0 + SQLite (>= 3.53.4) - restriction: >= netstandard2.0 + SQLitePCLRaw.config.e_sqlite3 (>= 3.0.5) - restriction: >= netstandard2.0 + SQLitePCLRaw.config.e_sqlite3 (3.0.5) - restriction: >= netstandard2.0 + SQLitePCLRaw.provider.e_sqlite3 (>= 3.0.5) - restriction: >= netstandard2.0 + SQLitePCLRaw.core (3.0.5) - restriction: >= netstandard2.0 + System.Memory (>= 4.6.3) - restriction: && (< net8.0) (>= netstandard2.0) + SQLitePCLRaw.provider.e_sqlite3 (3.0.5) - restriction: >= netstandard2.0 + SQLitePCLRaw.core (>= 3.0.5) - restriction: >= netstandard2.0 + StarFederation.Datastar (1.4) + StarFederation.Datastar.FSharp (>= 1.4) - restriction: >= net8.0 + StarFederation.Datastar.FSharp (1.4) - restriction: >= net8.0 FSharp.Core (>= 6.0) - restriction: >= net8.0 - System.Buffers (4.6.1) - restriction: || (&& (>= net45) (>= net6.0)) (&& (>= net45) (>= net9.0)) (&& (>= net461) (>= net6.0)) (&& (>= net461) (>= net8.0)) (&& (>= net461) (>= net9.0)) (&& (>= net461) (>= netstandard2.0)) (>= net462) (&& (>= net6.0) (< net8.0)) (&& (>= net6.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< net8.0) (>= net9.0)) (&& (< net8.0) (>= netstandard2.0)) (&& (>= net9.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Buffers (4.6.1) - restriction: || (>= net462) (&& (>= net6.0) (< net8.0)) (&& (< net8.0) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) System.ComponentModel.Annotations (5.0) - restriction: || (&& (< net462) (>= netstandard2.0) (< netstandard2.1)) (&& (< net8.0) (>= netstandard2.1)) - System.Diagnostics.DiagnosticSource (10.0.3) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (< net6.0) (>= net8.0)) (&& (< net6.0) (>= net9.0)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net6.0) (>= netstandard2.1)) (&& (>= net8.0) (< net9.0)) (&& (>= net8.0) (< netstandard2.1)) (&& (< net8.0) (>= net9.0)) (&& (< net8.0) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= net9.0) (< netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + System.Diagnostics.DiagnosticSource (10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (< net6.0) (>= netstandard2.0)) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.IO.Pipelines (10.0.3) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net461) (>= net6.0)) (&& (>= net461) (>= net8.0)) (&& (>= net461) (>= net9.0)) (&& (>= net461) (>= netstandard2.0)) (&& (>= net462) (>= net6.0)) (&& (>= net462) (>= net8.0)) (&& (>= net462) (>= net9.0)) (&& (>= net462) (>= netstandard2.0)) (&& (>= net6.0) (< net8.0)) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.IO.Pipelines (10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (&& (>= net461) (>= netstandard2.0)) (&& (>= net462) (>= net6.0)) (&& (>= net6.0) (< net8.0)) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Memory (4.6.3) - restriction: || (&& (>= net45) (>= net6.0)) (&& (>= net45) (>= net9.0)) (&& (>= net461) (>= net6.0)) (&& (>= net461) (>= net8.0)) (&& (>= net461) (>= net9.0)) (>= net462) (&& (< net5.0) (>= net6.0)) (&& (< net5.0) (>= net9.0)) (&& (>= net6.0) (< net8.0)) (&& (>= net6.0) (< netstandard2.1)) (&& (< net8.0) (>= net9.0)) (&& (>= net9.0) (< netstandard2.1)) (>= netstandard2.0) + System.Memory (4.6.3) - restriction: || (&& (>= net45) (>= net6.0)) (&& (>= net45) (>= netstandard2.0)) (>= net462) (&& (< net5.0) (>= net6.0)) (&& (< net5.0) (>= netstandard2.0)) (&& (>= net6.0) (< net8.0)) (&& (>= net6.0) (< netstandard2.0)) (&& (>= net6.0) (< netstandard2.1)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.0)) (&& (>= netstandard2.0) (< netstandard2.1)) System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) System.Numerics.Vectors (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Net.Http.WinHttpHandler (10.0.3) - restriction: || (&& (>= net462) (>= net6.0)) (&& (>= net462) (< netstandard2.0)) (>= net471) + System.Net.Http.WinHttpHandler (10.0.10) - restriction: || (&& (>= net462) (>= net6.0)) (&& (>= net462) (< netstandard2.0)) (>= net471) Microsoft.Bcl.HashCode (>= 6.0) - restriction: >= net462 System.Buffers (>= 4.6.1) - restriction: >= net462 System.Memory (>= 4.6.3) - restriction: >= net462 - System.Numerics.Vectors (4.6.1) - restriction: || (&& (>= net45) (>= net6.0)) (&& (>= net45) (>= net9.0)) (>= net462) (&& (>= net6.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (>= net9.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: || (&& (>= net45) (>= net6.0)) (&& (>= net45) (>= net9.0)) (&& (< net45) (>= net471)) (&& (< net45) (< net5.0) (>= netstandard2.0)) (>= net462) (&& (>= net471) (>= net6.0)) (&& (>= net471) (>= net9.0)) (&& (< net5.0) (>= net6.0)) (&& (>= net6.0) (< net8.0)) (&& (>= net6.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.0)) (&& (>= net9.0) (< netcoreapp2.1) (< netstandard2.1)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Text.Encodings.Web (10.0.3) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net6.0) (< net8.0)) (&& (>= net6.0) (< netstandard2.1)) (&& (>= net8.0) (< net9.0)) (&& (>= net8.0) (< netstandard2.1)) (&& (< net8.0) (>= net9.0)) (&& (< net8.0) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.1)) (&& (>= net9.0) (< netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + System.Numerics.Vectors (4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: || (&& (< net45) (>= net471)) (&& (< net45) (< net5.0) (>= netstandard2.0)) (>= net462) (&& (< net5.0) (>= net6.0)) (&& (>= net6.0) (< net8.0)) (&& (< net6.0) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Text.Encodings.Web (10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net6.0) (< net8.0)) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Text.Json (10.0.3) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) - Microsoft.Bcl.AsyncInterfaces (>= 10.0.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) + System.Text.Json (10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) + Microsoft.Bcl.AsyncInterfaces (>= 10.0.10) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.IO.Pipelines (>= 10.0.3) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.IO.Pipelines (>= 10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Text.Encodings.Web (>= 10.0.3) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) + System.Text.Encodings.Web (>= 10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.ValueTuple (>= 4.6.1) - restriction: >= net462 - System.Threading.Channels (10.0.3) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (< net6.0) (>= netstandard2.0)) (>= net471) - Microsoft.Bcl.AsyncInterfaces (>= 10.0.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) + System.Threading.Channels (10.0.10) - restriction: || (&& (>= net462) (< netstandard2.0)) (&& (< net462) (< net6.0) (>= netstandard2.0)) (>= net471) + Microsoft.Bcl.AsyncInterfaces (>= 10.0.10) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) - System.Threading.Tasks.Extensions (4.6.3) - restriction: || (&& (>= net461) (>= net6.0)) (&& (>= net461) (>= net8.0)) (&& (>= net461) (>= net9.0)) (&& (>= net461) (>= netstandard2.0)) (>= net462) (&& (>= net6.0) (< net8.0)) (&& (>= net6.0) (< netstandard2.1)) (&& (< net8.0) (>= net9.0)) (&& (>= net9.0) (< netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) + System.Threading.Tasks.Extensions (4.6.3) - restriction: || (>= net462) (&& (>= net6.0) (< net8.0)) (&& (>= netstandard2.0) (< netstandard2.1)) System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) System.ValueTuple (4.6.2) - restriction: >= net462 @@ -330,9 +327,9 @@ NUGET FSharp.Control.Reactive (6.1.2) - restriction: >= netstandard2.0 FSharp.Core (>= 6.0.7) - restriction: >= netstandard2.0 System.Reactive (>= 6.0.1) - restriction: >= netstandard2.0 - FSharp.Core (10.0.103) - restriction: >= netstandard2.0 + FSharp.Core (10.1.302) - restriction: >= netstandard2.0 System.Buffers (4.6.1) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Collections.Immutable (10.0.3) - restriction: >= netstandard2.0 + System.Collections.Immutable (10.0.10) - restriction: >= netstandard2.0 System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Memory (4.6.3) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.0)) @@ -340,10 +337,10 @@ NUGET System.Numerics.Vectors (>= 4.6.1) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) System.Numerics.Vectors (4.6.1) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Reactive (6.1) - restriction: >= netstandard2.0 - System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: || (>= net472) (&& (< net6.0) (>= netstandard2.0)) (>= uap10.1) + System.Reactive (7.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net472) (&& (< net8.0) (>= netstandard2.0)) (>= uap10.1) System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< net8.0) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) - System.Threading.Tasks.Extensions (4.6.3) - restriction: || (>= net472) (&& (< net6.0) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.1)) + System.Threading.Tasks.Extensions (4.6.3) - restriction: || (>= net472) (&& (< net8.0) (>= netstandard2.0)) (&& (>= netstandard2.0) (>= uap10.1)) System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) System.ValueTuple (4.6.2) - restriction: && (>= net45) (>= netstandard2.0) @@ -351,8 +348,12 @@ GROUP Test STORAGE: NONE NUGET remote: https://api.nuget.org/v3/index.json - Expecto (10.2.3) - FSharp.Core (>= 7.0.200) - restriction: >= net6.0 - Mono.Cecil (>= 0.11.4 < 1.0) - restriction: >= net6.0 - FSharp.Core (10.0.103) - restriction: >= net6.0 - Mono.Cecil (0.11.6) - restriction: >= net6.0 + Expecto (11.1) + FSharp.Core (>= 7.0.200) - restriction: >= netstandard2.0 + Mono.Cecil (>= 0.11.6 < 1.0) - restriction: >= netstandard2.0 + System.Threading.Tasks.Extensions (>= 4.5.4) - restriction: && (< net8.0) (>= netstandard2.0) + FSharp.Core (10.1.302) - restriction: >= netstandard2.0 + Mono.Cecil (0.11.6) - restriction: >= netstandard2.0 + System.Runtime.CompilerServices.Unsafe (6.1.2) - restriction: || (&& (>= net462) (>= netstandard2.0)) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) + System.Threading.Tasks.Extensions (4.6.3) - restriction: && (< net8.0) (>= netstandard2.0) + System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< netcoreapp2.1) (>= netstandard2.0) (< netstandard2.1)) diff --git a/app/src/App/src/Articles/View.fs b/app/src/App/src/Articles/View.fs index 58f0930..cd54603 100644 --- a/app/src/App/src/Articles/View.fs +++ b/app/src/App/src/Articles/View.fs @@ -118,7 +118,7 @@ let articlesPage (state:ArticlesPageState) = _action "/articles" _class "border-b border-gray-300/60 py-4 dark:border-gray-700/60" match filters.tag with - | Some tag -> input { _type "hidden"; _name "tag"; _value (SafeOutput.attribute tag) } + | Some tag -> input { _type "hidden"; _name "tag"; _value tag } | None -> () match filters.publishedYear with | Some year -> input { _type "hidden"; _name "year"; _value (string year) } @@ -135,7 +135,7 @@ let articlesPage (state:ArticlesPageState) = _role "searchbox" _name "search" _ariaLabel "Search articles" - _value (filters.search |> Option.defaultValue "" |> SafeOutput.attribute) + _value (filters.search |> Option.defaultValue "") _placeholder "Search articles" _class searchInputClass } @@ -285,7 +285,7 @@ module Block = | _ -> Other let rec toHtml (block:Domain.Notion.Block) : HtmlElement = - let cleanId = block.id.Replace("-", "") |> SafeOutput.attribute + let cleanId = block.id.Replace("-", "") match block.blockType with | Domain.Notion.BlockType.Heading1 richText -> @@ -325,7 +325,7 @@ module Block = | "JSON" -> "json" | "TOML" -> "toml" | other -> other - let languageClass = $"language-{language}" |> SafeOutput.attribute + let languageClass = $"language-{language}" pre { _class languageClass code { diff --git a/app/src/App/src/Common/View.fs b/app/src/App/src/Common/View.fs index 0583af3..e6ac774 100644 --- a/app/src/App/src/Common/View.fs +++ b/app/src/App/src/Common/View.fs @@ -5,7 +5,6 @@ open Domain.Article open System open System.Collections.Generic open System.IO -open System.Net open System.Text.Json open type Html open type Datastar @@ -36,9 +35,6 @@ module SafeOutput = let private linkSchemes = Set.ofList [ Uri.UriSchemeHttp; Uri.UriSchemeHttps; Uri.UriSchemeMailto ] let private imageSchemes = Set.ofList [ Uri.UriSchemeHttp; Uri.UriSchemeHttps ] - let attribute (value:string) = - WebUtility.HtmlEncode value - let private tryAbsoluteUrl (allowedSchemes:Set) (value:string) = match Uri.TryCreate(value, UriKind.Absolute) with | true, uri when allowedSchemes.Contains(uri.Scheme.ToLowerInvariant()) -> @@ -47,18 +43,14 @@ module SafeOutput = let tryLinkAttribute (value:string) = if value.StartsWith("#", StringComparison.Ordinal) then - value |> attribute |> Some + Some value elif value.StartsWith("/", StringComparison.Ordinal) && not (value.StartsWith("//", StringComparison.Ordinal)) then - value |> attribute |> Some + Some value else - value - |> tryAbsoluteUrl linkSchemes - |> Option.map attribute + tryAbsoluteUrl linkSchemes value let tryImageAttribute (value:string) = - value - |> tryAbsoluteUrl imageSchemes - |> Option.map attribute + tryAbsoluteUrl imageSchemes value let tryBackgroundImageStyle (value:string) = value @@ -72,7 +64,7 @@ module SafeOutput = .Replace("(", "%28", StringComparison.Ordinal) .Replace(")", "%29", StringComparison.Ordinal) - $"background-image: url('{cssUrl}')" |> attribute) + $"background-image: url('{cssUrl}')") module SiteUrl = let article (permalink:string) = @@ -377,7 +369,7 @@ type Document = } link { _href (Asset.fingerprinted "/css/compiled.css"); _rel "stylesheet" } link { _href (Asset.fingerprinted "/css/prism.css"); _rel "stylesheet" } - script { _type "module"; _src (Asset.fingerprinted "/scripts/datastar.1.0.0-RC.6.js") } + script { _type "module"; _src (Asset.fingerprinted "/scripts/datastar.1.0.2.js") } } body { _dataSignals $"{{selectedNav: '{selectedNav}'}}" diff --git a/app/src/App/src/Program.fs b/app/src/App/src/Program.fs index 61f6cec..78cfa17 100644 --- a/app/src/App/src/Program.fs +++ b/app/src/App/src/Program.fs @@ -52,10 +52,11 @@ let configureServices (serviceCollection: IServiceCollection) (tracerProvider: T .AddSerilog() .AddSingleton(tracerProvider) .AddHostedService(fun _ -> Article.SyncBackgroundService(services.article)) - .AddDatastar() - .AddGiraffe() |> ignore + serviceCollection.AddDatastar() |> ignore + serviceCollection.AddGiraffe() |> ignore + let private addSecurityHeaders (ctx:HttpContext) = ctx.Response.Headers["Content-Security-Policy"] <- "base-uri 'self'; frame-ancestors 'none'; object-src 'none'" ctx.Response.Headers["Permissions-Policy"] <- "camera=(), geolocation=(), microphone=()" diff --git a/app/src/App/wwwroot/scripts/datastar.1.0.0-RC.6.js b/app/src/App/wwwroot/scripts/datastar.1.0.0-RC.6.js deleted file mode 100644 index be57e9d..0000000 --- a/app/src/App/wwwroot/scripts/datastar.1.0.0-RC.6.js +++ /dev/null @@ -1,9 +0,0 @@ -// Datastar v1.0.0-RC.6 -var nt=/🖕JS_DS🚀/.source,De=nt.slice(0,5),Ve=nt.slice(4),q="datastar-fetch",z="datastar-signal-patch";var de=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([a-z])([0-9]+)/gi,"$1-$2").replace(/([0-9]+)([a-z])/gi,"$1-$2").toLowerCase();var rt=e=>de(e).replace(/-/g,"_");var re=e=>{try{return JSON.parse(e)}catch{return Function(`return (${e})`)()}},st={camel:e=>e.replace(/-[a-z]/g,t=>t[1].toUpperCase()),snake:e=>e.replace(/-/g,"_"),pascal:e=>e[0].toUpperCase()+st.camel(e.slice(1))},R=(e,t,n="camel")=>{for(let r of t.get("case")||[n])e=st[r]?.(e)||e;return e},Q=e=>`data-${e}`;var _=Object.hasOwn??Object.prototype.hasOwnProperty.call;var se=e=>e!==null&&typeof e=="object"&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),it=e=>{for(let t in e)if(_(e,t))return!1;return!0},Z=(e,t)=>{for(let n in e){let r=e[n];se(r)||Array.isArray(r)?Z(r,t):e[n]=t(r)}},Te=e=>{let t={};for(let[n,r]of e){let s=n.split("."),i=s.pop(),a=s.reduce((o,c)=>o[c]??={},t);a[i]=r}return t};var Ae=[],Ie=[],Fe=0,Re=0,$e=0,qe,G,we=0,w=()=>{Fe++},M=()=>{--Fe||(ct(),Y())},V=e=>{qe=G,G=e},I=()=>{G=qe,qe=void 0},me=e=>It.bind(0,{previousValue:e,t:e,e:1}),Ge=Symbol("computed"),Ne=e=>{let t=$t.bind(0,{e:17,getter:e});return t[Ge]=1,t},E=e=>{let t={d:e,e:2};G&&Be(t,G),V(t),w();try{t.d()}finally{M(),I()}return dt.bind(0,t)},ct=()=>{for(;Re<$e;){let e=Ie[Re];Ie[Re++]=void 0,ut(e,e.e&=-65)}Re=0,$e=0},ot=e=>"getter"in e?lt(e):ft(e,e.t),lt=e=>{V(e),mt(e);try{let t=e.t;return t!==(e.t=e.getter(t))}finally{I(),pt(e)}},ft=(e,t)=>(e.e=1,e.previousValue!==(e.previousValue=t)),je=e=>{let t=e.e;if(!(t&64)){e.e=t|64;let n=e.r;n?je(n.o):Ie[$e++]=e}},ut=(e,t)=>{if(t&16||t&32&>(e.s,e)){V(e),mt(e),w();try{e.d()}finally{M(),I(),pt(e)}return}t&32&&(e.e=t&-33);let n=e.s;for(;n;){let r=n.c,s=r.e;s&64&&ut(r,r.e=s&-65),n=n.i}},It=(e,...t)=>{if(t.length){if(e.t!==(e.t=t[0])){e.e=17;let r=e.r;return r&&(qt(r),Fe||ct()),!0}return!1}let n=e.t;if(e.e&16&&ft(e,n)){let r=e.r;r&&Le(r)}return G&&Be(e,G),n},$t=e=>{let t=e.e;if(t&16||t&32&>(e.s,e)){if(lt(e)){let n=e.r;n&&Le(n)}}else t&32&&(e.e=t&-33);return G&&Be(e,G),e.t},dt=e=>{let t=e.s;for(;t;)t=xe(t,e);let n=e.r;n&&xe(n),e.e=0},Be=(e,t)=>{let n=t.a;if(n&&n.c===e)return;let r=n?n.i:t.s;if(r&&r.c===e){r.m=we,t.a=r;return}let s=e.p;if(s&&s.m===we&&s.o===t)return;let i=t.a=e.p={m:we,c:e,o:t,l:n,i:r,f:s};r&&(r.l=i),n?n.i=i:t.s=i,s?s.n=i:e.r=i},xe=(e,t=e.o)=>{let n=e.c,r=e.l,s=e.i,i=e.n,a=e.f;if(s?s.l=r:t.a=r,r?r.i=s:t.s=s,i?i.f=a:n.p=a,a)a.n=i;else if(!(n.r=i))if("getter"in n){let o=n.s;if(o){n.e=17;do o=xe(o,n);while(o)}}else"previousValue"in n||dt(n);return s},qt=e=>{let t=e.n,n;e:for(;;){let r=e.o,s=r.e;if(s&60?s&12?s&4?!(s&48)&&Gt(e,r)?(r.e=s|40,s&=1):s=0:r.e=s&-9|32:s=0:r.e=s|32,s&2&&je(r),s&1){let i=r.r;if(i){let a=(e=i).n;a&&(n={t,u:n},t=a);continue}}if(e=t){t=e.n;continue}for(;n;)if(e=n.t,n=n.u,e){t=e.n;continue e}break}},mt=e=>{we++,e.a=void 0,e.e=e.e&-57|4},pt=e=>{let t=e.a,n=t?t.i:e.s;for(;n;)n=xe(n,e);e.e&=-5},gt=(e,t)=>{let n,r=0,s=!1;e:for(;;){let i=e.c,a=i.e;if(t.e&16)s=!0;else if((a&17)===17){if(ot(i)){let o=i.r;o.n&&Le(o),s=!0}}else if((a&33)===33){(e.n||e.f)&&(n={t:e,u:n}),e=i.s,t=i,++r;continue}if(!s){let o=e.i;if(o){e=o;continue}}for(;r--;){let o=t.r,c=o.n;if(c?(e=n.t,n=n.u):e=o,s){if(ot(t)){c&&Le(o),t=e.o;continue}s=!1}else t.e&=-33;if(t=e.o,e.i){e=e.i;continue e}}return s}},Le=e=>{do{let t=e.o,n=t.e;(n&48)===32&&(t.e=n|16,n&2&&je(t))}while(e=e.n)},Gt=(e,t)=>{let n=t.a;for(;n;){if(n===e)return!0;n=n.l}return!1},ie=e=>{let t=X,n=e.split(".");for(let r of n){if(t==null||!_(t,r))return;t=t[r]}return t},Me=(e,t="")=>{let n=Array.isArray(e);if(n||se(e)){let r=n?[]:{};for(let i in e)r[i]=me(Me(e[i],`${t+i}.`));let s=me(0);return new Proxy(r,{get(i,a){if(!(a==="toJSON"&&!_(r,a)))return n&&a in Array.prototype?(s(),r[a]):typeof a=="symbol"?r[a]:((!_(r,a)||r[a]()==null)&&(r[a]=me(""),Y(t+a,""),s(s()+1)),r[a]())},set(i,a,o){let c=t+a;if(n&&a==="length"){let l=r[a]-o;if(r[a]=o,l>0){let f={};for(let d=o;d{if(e!==void 0&&t!==void 0&&Ae.push([e,t]),!Fe&&Ae.length){let n=Te(Ae);Ae.length=0,document.dispatchEvent(new CustomEvent(z,{detail:n}))}},C=(e,{ifMissing:t}={})=>{w();for(let n in e)e[n]==null?t||delete X[n]:ht(e[n],n,X,"",t);M()},S=(e,t)=>C(Te(e),t),ht=(e,t,n,r,s)=>{if(se(e)){_(n,t)&&(se(n[t])||Array.isArray(n[t]))||(n[t]={});for(let i in e)e[i]==null?s||delete n[t][i]:ht(e[i],i,n[t],`${r+t}.`,s)}else s&&_(n,t)||(n[t]=e)},at=e=>typeof e=="string"?RegExp(e.replace(/^\/|\/$/g,"")):e,D=({include:e=/.*/,exclude:t=/(?!)/}={},n=X)=>{let r=at(e),s=at(t),i=[],a=[[n,""]];for(;a.length;){let[o,c]=a.pop();for(let l in o){let f=c+l;se(o[l])?a.push([o[l],`${f}.`]):r.test(f)&&!s.test(f)&&i.push([f,ie(f)])}}return Te(i)},X=Me({});var W=e=>e instanceof HTMLElement||e instanceof SVGElement||e instanceof MathMLElement;var jt="https://data-star.dev/errors",pe=(e,t,n={})=>{Object.assign(n,e);let r=new Error,s=rt(t),i=new URLSearchParams({metadata:JSON.stringify(n)}).toString(),a=JSON.stringify(n,null,2);return r.message=`${t} -More info: ${jt}/${s}?${i} -Context: ${a}`,r},Oe=new Map,vt=new Map,bt=new Map,Et=new Proxy({},{get:(e,t)=>Oe.get(t)?.apply,has:(e,t)=>Oe.has(t),ownKeys:()=>Reflect.ownKeys(Oe),set:()=>!1,deleteProperty:()=>!1}),ge=new Map,Ce=[],We=new Set,p=e=>{Ce.push(e),Ce.length===1&&setTimeout(()=>{for(let t of Ce)We.add(t.name),vt.set(t.name,t);Ce.length=0,Jt(),We.clear()})},O=e=>{Oe.set(e.name,e)};document.addEventListener(q,e=>{let t=bt.get(e.detail.type);t&&t.apply({error:pe.bind(0,{plugin:{type:"watcher",name:t.name},element:{id:e.target.id,tag:e.target.tagName}})},e.detail.argsRaw)});var he=e=>{bt.set(e.name,e)},yt=e=>{for(let t of e){let n=ge.get(t);if(ge.delete(t)){for(let r of n.values())r();n.clear()}}},St=Q("ignore"),Bt=`[${St}]`,Tt=e=>e.hasAttribute(`${St}__self`)||!!e.closest(Bt),Pe=(e,t)=>{for(let n of e)if(!Tt(n))for(let r in n.dataset)At(n,r.replace(/[A-Z]/g,"-$&").toLowerCase(),n.dataset[r],t)},Wt=e=>{for(let{target:t,type:n,attributeName:r,addedNodes:s,removedNodes:i}of e)if(n==="childList"){for(let a of i)W(a)&&(yt([a]),yt(a.querySelectorAll("*")));for(let a of s)W(a)&&(Pe([a]),Pe(a.querySelectorAll("*")))}else if(n==="attributes"&&r.startsWith("data-")&&W(t)&&!Tt(t)){let a=r.slice(5),o=t.getAttribute(r);if(o===null){let c=ge.get(t);c&&(c.get(a)?.(),c.delete(a))}else At(t,a,o)}},Ut=new MutationObserver(Wt),Jt=(e=document.documentElement)=>{W(e)&&Pe([e],!0),Pe(e.querySelectorAll("*"),!0),Ut.observe(e,{subtree:!0,childList:!0,attributes:!0})},At=(e,t,n,r)=>{{let s=t,[i,...a]=s.split("__"),[o,c]=i.split(/:(.+)/),l=vt.get(o);if((!r||We.has(o))&&l){let f={el:e,rawKey:s,mods:new Map,error:pe.bind(0,{plugin:{type:"attribute",name:l.name},element:{id:e.id,tag:e.tagName},expression:{rawKey:s,key:c,value:n}}),key:c,value:n,rx:void 0},d=l.requirement&&(typeof l.requirement=="string"?l.requirement:l.requirement.key)||"allowed",x=l.requirement&&(typeof l.requirement=="string"?l.requirement:l.requirement.value)||"allowed";if(c){if(d==="denied")throw f.error("KeyNotAllowed")}else if(d==="must")throw f.error("KeyRequired");if(n){if(x==="denied")throw f.error("ValueNotAllowed")}else if(x==="must")throw f.error("ValueRequired");if(d==="exclusive"||x==="exclusive"){if(c&&n)throw f.error("KeyAndValueProvided");if(!c&&!n)throw f.error("KeyOrValueRequired")}if(n){let m;f.rx=(...h)=>(m||(m=Kt(n,{returnsValue:l.returnsValue,argNames:l.argNames})),m(e,...h))}for(let m of a){let[h,...v]=m.split(".");f.mods.set(h,new Set(v))}let u=l.apply(f);if(u){let m=ge.get(e);m?m.get(s)?.():(m=new Map,ge.set(e,m)),m.set(s,u)}}}},Kt=(e,{returnsValue:t=!1,argNames:n=[]}={})=>{let r="";if(t){let o=/(\/(\\\/|[^/])*\/|"(\\"|[^"])*"|'(\\'|[^'])*'|`(\\`|[^`])*`|\(\s*((function)\s*\(\s*\)|(\(\s*\))\s*=>)\s*(?:\{[\s\S]*?\}|[^;){]*)\s*\)\s*\(\s*\)|[^;])+/gm,c=e.trim().match(o);if(c){let l=c.length-1,f=c[l].trim();f.startsWith("return")||(c[l]=`return (${f});`),r=c.join(`; -`)}}else r=e.trim();let s=new Map,i=RegExp(`(?:${De})(.*?)(?:${Ve})`,"gm"),a=0;for(let o of r.matchAll(i)){let c=o[1],l=`__escaped${a++}`;s.set(l,c),r=r.replace(De+c+Ve,l)}r=r.replace(/\$\['([a-zA-Z_$\d][\w$]*)'\]/g,"$$$1").replace(/\$([a-zA-Z_\d]\w*(?:[.-]\w+)*)/g,(o,c)=>c.split(".").reduce((l,f)=>`${l}['${f}']`,"$")).replace(/\[(\$[a-zA-Z_\d]\w*)\]/g,(o,c)=>`[$['${c.slice(1)}']]`),r=r.replaceAll(/@(\w+)\(/g,'__action("$1",evt,');for(let[o,c]of s)r=r.replace(o,c);try{let o=Function("el","$","__action","evt",...n,r);return(c,...l)=>{let f=(d,x,...u)=>{let m=pe.bind(0,{plugin:{type:"action",name:d},element:{id:c.id,tag:c.tagName},expression:{fnContent:r,value:e}}),h=Et[d];if(h)return h({el:c,evt:x,error:m},...u);throw m("UndefinedAction")};try{return o(c,X,f,void 0,...l)}catch(d){throw console.error(d),pe({element:{id:c.id,tag:c.tagName},expression:{fnContent:r,value:e},error:d.message},"ExecuteExpression")}}}catch(o){throw console.error(o),pe({expression:{fnContent:r,value:e},error:o.message},"GenerateExpression")}};var P=new Map,ae=new Set,oe=new Map,ye=new Set,ce=document.createElement("div");ce.hidden=!0;var ve=Q("ignore-morph"),zt=`[${ve}]`,Ke=(e,t,n="outer")=>{if(W(e)&&W(t)&&e.hasAttribute(ve)&&t.hasAttribute(ve)||e.parentElement?.closest(zt))return;let r=document.createElement("div");r.append(t),document.body.insertAdjacentElement("afterend",ce);let s=e.querySelectorAll("[id]");for(let{id:o,tagName:c}of s)oe.has(o)?ye.add(o):oe.set(o,c);e instanceof Element&&e.id&&(oe.has(e.id)?ye.add(e.id):oe.set(e.id,e.tagName)),ae.clear();let i=r.querySelectorAll("[id]");for(let{id:o,tagName:c}of i)ae.has(o)?ye.add(o):oe.get(o)===c&&ae.add(o);for(let o of ye)ae.delete(o);oe.clear(),ye.clear(),P.clear();let a=n==="outer"?e.parentElement:e;wt(a,s),wt(r,i),Mt(a,r,n==="outer"?e:null,e.nextSibling),ce.remove()},Mt=(e,t,n=null,r=null)=>{e instanceof HTMLTemplateElement&&t instanceof HTMLTemplateElement&&(e=e.content,t=t.content),n??=e.firstChild;for(let s of t.childNodes){if(n&&n!==r){let i=Qt(s,n,r);if(i){if(i!==n){let a=n;for(;a&&a!==i;){let o=a;a=a.nextSibling,Je(o)}}Ue(i,s),n=i.nextSibling;continue}}if(s instanceof Element&&ae.has(s.id)){let i=document.getElementById(s.id),a=i;for(;a=a.parentNode;){let o=P.get(a);o&&(o.delete(s.id),o.size||P.delete(a))}xt(e,i,n),Ue(i,s),n=i.nextSibling;continue}if(P.has(s)){let i=document.createElement(s.tagName);e.insertBefore(i,n),Ue(i,s),n=i.nextSibling}else{let i=document.importNode(s,!0);e.insertBefore(i,n),n=i.nextSibling}}for(;n&&n!==r;){let s=n;n=n.nextSibling,Je(s)}},Qt=(e,t,n)=>{let r=null,s=e.nextSibling,i=0,a=0,o=P.get(e)?.size||0,c=t;for(;c&&c!==n;){if(Rt(c,e)){let l=!1,f=P.get(c),d=P.get(e);if(d&&f){for(let x of f)if(d.has(x)){l=!0;break}}if(l)return c;if(!r&&!P.has(c)){if(!o)return c;r=c}}if(a+=P.get(c)?.size||0,a>o)break;r===null&&s&&Rt(c,s)&&(i++,s=s.nextSibling,i>=2&&(r=void 0)),c=c.nextSibling}return r||null},Rt=(e,t)=>e.nodeType===t.nodeType&&e.tagName===t.tagName&&(!e.id||e.id===t.id),Je=e=>{P.has(e)?xt(ce,e,null):e.parentNode?.removeChild(e)},xt=Je.call.bind(ce.moveBefore??ce.insertBefore),Zt=Q("preserve-attr"),Ue=(e,t)=>{let n=t.nodeType;if(n===1){let r=e,s=t;if(r.hasAttribute(ve)&&s.hasAttribute(ve))return e;r instanceof HTMLInputElement&&s instanceof HTMLInputElement&&s.type!=="file"?s.getAttribute("value")!==r.getAttribute("value")&&(r.value=s.getAttribute("value")??""):r instanceof HTMLTextAreaElement&&s instanceof HTMLTextAreaElement&&(s.value!==r.value&&(r.value=s.value),r.firstChild&&r.firstChild.nodeValue!==s.value&&(r.firstChild.nodeValue=s.value));let i=(t.getAttribute(Zt)??"").split(" ");for(let{name:a,value:o}of s.attributes)r.getAttribute(a)!==o&&!i.includes(a)&&r.setAttribute(a,o);for(let a=r.attributes.length-1;a>=0;a--){let{name:o}=r.attributes[a];!s.hasAttribute(o)&&!i.includes(o)&&r.removeAttribute(o)}r.isEqualNode(s)||Mt(r,s)}return(n===8||n===3)&&e.nodeValue!==t.nodeValue&&(e.nodeValue=t.nodeValue),e},wt=(e,t)=>{for(let n of t)if(ae.has(n.id)){let r=n;for(;r&&r!==e;){let s=P.get(r);s||(s=new Set,P.set(r,s)),s.add(n.id),r=r.parentElement}}};O({name:"peek",apply(e,t){V();try{return t()}finally{I()}}});O({name:"setAll",apply(e,t,n){V();let r=D(n);Z(r,()=>t),C(r),I()}});O({name:"toggleAll",apply(e,t){V();let n=D(t);Z(n,r=>!r),C(n),I()}});var He=new WeakMap,be=(e,t)=>O({name:e,apply:async({el:n,evt:r,error:s},i,{selector:a,headers:o,contentType:c="json",filterSignals:{include:l=/.*/,exclude:f=/(^|\.)_/}={},openWhenHidden:d=!1,retryInterval:x=1e3,retryScaler:u=2,retryMaxWaitMs:m=3e4,retryMaxCount:h=10,requestCancellation:v="auto"}={})=>{let L=v instanceof AbortController?v:new AbortController,A=v==="disabled";if(!A){let T=He.get(n);T&&(T.abort(),await Promise.resolve())}!A&&!(v instanceof AbortController)&&He.set(n,L);try{let T=new MutationObserver(j=>{for(let H of j)for(let B of H.removedNodes)B===n&&(L.abort(),K())});n.parentNode&&T.observe(n.parentNode,{childList:!0});let K=()=>{T.disconnect()};try{if(!i?.length)throw s("FetchNoUrlProvided",{action:O});let j={Accept:"text/event-stream, text/html, application/json","Datastar-Request":!0};c==="json"&&(j["Content-Type"]="application/json");let H=Object.assign({},j,o),B={method:t,headers:H,openWhenHidden:d,retryInterval:x,retryScaler:u,retryMaxWaitMs:m,retryMaxCount:h,signal:L.signal,onopen:async g=>{g.status>=400&&ee(Yt,n,{status:g.status.toString()})},onmessage:g=>{if(!g.event.startsWith("datastar"))return;let $=g.event,b={};for(let N of g.data.split(` -`)){let y=N.indexOf(" "),k=N.slice(0,y),ue=N.slice(y+1);(b[k]||=[]).push(ue)}let F=Object.fromEntries(Object.entries(b).map(([N,y])=>[N,y.join(` -`)]));ee($,n,F)},onerror:g=>{if(Lt(g))throw g("FetchExpectedTextEventStream",{url:i});g&&(console.error(g.message),ee(Xt,n,{message:g.message}))}},fe=new URL(i,document.baseURI),ne=new URLSearchParams(fe.search);if(c==="json"){let g=JSON.stringify(D({include:l,exclude:f}));t==="GET"?ne.set("datastar",g):B.body=g}else if(c==="form"){let g=a?document.querySelector(a):n.closest("form");if(!g)throw s("FetchFormNotFound",{action:O,selector:a});if(!g.checkValidity()){g.reportValidity(),K();return}let $=new FormData(g),b=n;if(n===g&&r instanceof SubmitEvent)b=r.submitter;else{let y=k=>k.preventDefault();g.addEventListener("submit",y),K=()=>{g.removeEventListener("submit",y),T.disconnect()}}if(b instanceof HTMLButtonElement){let y=b.getAttribute("name");y&&$.append(y,b.value)}let F=g.getAttribute("enctype")==="multipart/form-data";F||(H["Content-Type"]="application/x-www-form-urlencoded");let N=new URLSearchParams($);if(t==="GET")for(let[y,k]of N)ne.append(y,k);else F?B.body=$:B.body=N}else throw s("FetchInvalidContentType",{action:O,contentType:c});ee(ze,n,{}),fe.search=ne.toString();try{await on(fe.toString(),n,B)}catch(g){if(!Lt(g))throw s("FetchFailed",{method:t,url:i,error:g.message})}}finally{ee(Qe,n,{}),K()}}finally{He.get(n)===L&&He.delete(n)}}});be("delete","DELETE");be("get","GET");be("patch","PATCH");be("post","POST");be("put","PUT");var ze="started",Qe="finished",Yt="error",Xt="retrying",en="retries-failed",ee=(e,t,n)=>document.dispatchEvent(new CustomEvent(q,{detail:{type:e,el:t,argsRaw:n}})),Lt=e=>`${e}`.includes("text/event-stream"),tn=async(e,t)=>{let n=e.getReader(),r=await n.read();for(;!r.done;)t(r.value),r=await n.read()},nn=e=>{let t,n,r,s=!1;return i=>{t?t=sn(t,i):(t=i,n=0,r=-1);let a=t.length,o=0;for(;n{let r=Ft(),s=new TextDecoder;return(i,a)=>{if(!i.length)n?.(r),r=Ft();else if(a>0){let o=s.decode(i.subarray(0,a)),c=a+(i[a+1]===32?2:1),l=s.decode(i.subarray(c));switch(o){case"data":r.data=r.data?`${r.data} -${l}`:l;break;case"event":r.event=l;break;case"id":e(r.id=l);break;case"retry":{let f=+l;Number.isNaN(f)||t(r.retry=f);break}}}}},sn=(e,t)=>{let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n},Ft=()=>({data:"",event:"",id:"",retry:void 0}),on=(e,t,{signal:n,headers:r,onopen:s,onmessage:i,onclose:a,onerror:o,openWhenHidden:c,fetch:l,retryInterval:f=1e3,retryScaler:d=2,retryMaxWaitMs:x=3e4,retryMaxCount:u=10,overrides:m,...h})=>new Promise((v,L)=>{let A={...r},T,K=()=>{T.abort(),document.hidden||$()};c||document.addEventListener("visibilitychange",K);let j=0,H=()=>{document.removeEventListener("visibilitychange",K),clearTimeout(j),T.abort()};n?.addEventListener("abort",()=>{H(),v()});let B=l||window.fetch,fe=s||(()=>{}),ne=0,g=f,$=async()=>{T=new AbortController;try{let b=await B(e,{...h,headers:A,signal:T.signal});ne=0,f=g,await fe(b);let F=async(y,k,ue,Ee,...Vt)=>{let tt={[ue]:await k.text()};for(let ke of Vt){let _e=k.headers.get(`datastar-${de(ke)}`);if(Ee){let Se=Ee[ke];Se&&(_e=typeof Se=="string"?Se:JSON.stringify(Se))}_e&&(tt[ke]=_e)}ee(y,t,tt),H(),v()},N=b.headers.get("Content-Type");if(N?.includes("text/html"))return await F("datastar-patch-elements",b,"elements",m,"selector","mode","useViewTransition");if(N?.includes("application/json"))return await F("datastar-patch-signals",b,"signals",m,"onlyIfMissing");if(N?.includes("text/javascript")){let y=document.createElement("script"),k=b.headers.get("datastar-script-attributes");if(k)for(let[ue,Ee]of Object.entries(JSON.parse(k)))y.setAttribute(ue,Ee);y.textContent=await b.text(),document.head.appendChild(y),H();return}await tn(b.body,nn(rn(y=>{y?A["last-event-id"]=y:delete A["last-event-id"]},y=>{g=f=y},i))),a?.(),H(),v()}catch(b){if(!T.signal.aborted)try{let F=o?.(b)||f;clearTimeout(j),j=setTimeout($,F),f=Math.min(f*d,x),++ne>=u?(ee(en,t,{}),H(),L("Max retries reached.")):console.error(`Datastar failed to reach ${e.toString()} retrying in ${F}ms.`)}catch(F){H(),L(F)}}};$()});p({name:"attr",requirement:{value:"must"},returnsValue:!0,apply({el:e,key:t,rx:n}){let r=(o,c)=>{c===""||c===!0?e.setAttribute(o,""):c===!1||c==null?e.removeAttribute(o):typeof c=="string"?e.setAttribute(o,c):e.setAttribute(o,JSON.stringify(c))},s=t?()=>{i.disconnect();let o=n();r(t,o),i.observe(e,{attributeFilter:[t]})}:()=>{i.disconnect();let o=n(),c=Object.keys(o);for(let l of c)r(l,o[l]);i.observe(e,{attributeFilter:c})},i=new MutationObserver(s),a=E(s);return()=>{i.disconnect(),a()}}});var an=/^data:(?[^;]+);base64,(?.*)$/,Nt=Symbol("empty"),Ct=Q("bind");p({name:"bind",requirement:"exclusive",apply({el:e,key:t,mods:n,value:r,error:s}){let i=t!=null?R(t,n):r,a=(u,m)=>m==="number"?+u.value:u.value,o=u=>{e.value=`${u}`};if(e instanceof HTMLInputElement)switch(e.type){case"range":case"number":a=(u,m)=>m==="string"?u.value:+u.value;break;case"checkbox":a=(u,m)=>u.value!=="on"?m==="boolean"?u.checked:u.checked?u.value:"":m==="string"?u.checked?u.value:"":u.checked,o=u=>{e.checked=typeof u=="string"?u===e.value:u};break;case"radio":e.getAttribute("name")?.length||e.setAttribute("name",i),a=(u,m)=>u.checked?m==="number"?+u.value:u.value:Nt,o=u=>{e.checked=u===(typeof u=="number"?+e.value:e.value)};break;case"file":{let u=()=>{let m=[...e.files||[]],h=[];Promise.all(m.map(v=>new Promise(L=>{let A=new FileReader;A.onload=()=>{if(typeof A.result!="string")throw s("InvalidFileResultType",{resultType:typeof A.result});let T=A.result.match(an);if(!T?.groups)throw s("InvalidDataUri",{result:A.result});h.push({name:v.name,contents:T.groups.contents,mime:T.groups.mime})},A.onloadend=()=>L(),A.readAsDataURL(v)}))).then(()=>{S([[i,h]])})};return e.addEventListener("change",u),e.addEventListener("input",u),()=>{e.removeEventListener("change",u),e.removeEventListener("input",u)}}}else if(e instanceof HTMLSelectElement){if(e.multiple){let u=new Map;a=m=>[...m.selectedOptions].map(h=>{let v=u.get(h.value);return v==="string"||v==null?h.value:+h.value}),o=m=>{for(let h of e.options)m.includes(h.value)?(u.set(h.value,"string"),h.selected=!0):m.includes(+h.value)?(u.set(h.value,"number"),h.selected=!0):h.selected=!1}}}else e instanceof HTMLTextAreaElement||(a=u=>"value"in u?u.value:u.getAttribute("value"),o=u=>{"value"in e?e.value=u:e.setAttribute("value",u)});let c=ie(i),l=typeof c,f=i;if(Array.isArray(c)&&!(e instanceof HTMLSelectElement&&e.multiple)){let u=t||r,m=document.querySelectorAll(`[${Ct}\\:${CSS.escape(u)}],[${Ct}="${CSS.escape(u)}"]`),h=[],v=0;for(let L of m){if(h.push([`${f}.${v}`,a(L,"none")]),e===L)break;v++}S(h,{ifMissing:!0}),f=`${f}.${v}`}else S([[f,a(e,l)]],{ifMissing:!0});let d=()=>{let u=ie(f);if(u!=null){let m=a(e,typeof u);m!==Nt&&S([[f,m]])}};e.addEventListener("input",d),e.addEventListener("change",d);let x=E(()=>{o(ie(f))});return()=>{x(),e.removeEventListener("input",d),e.removeEventListener("change",d)}}});p({name:"class",requirement:{value:"must"},returnsValue:!0,apply({key:e,el:t,mods:n,rx:r}){e&&(e=R(e,n,"kebab"));let s=()=>{i.disconnect();let o=e?{[e]:r()}:r();for(let c in o){let l=c.split(/\s+/).filter(f=>f.length>0);if(o[c])for(let f of l)t.classList.contains(f)||t.classList.add(f);else for(let f of l)t.classList.contains(f)&&t.classList.remove(f)}i.observe(t,{attributeFilter:["class"]})},i=new MutationObserver(s),a=E(s);return()=>{i.disconnect(),a();let o=e?{[e]:r()}:r();for(let c in o){let l=c.split(/\s+/).filter(f=>f.length>0);for(let f of l)t.classList.remove(f)}}}});p({name:"computed",requirement:{value:"must"},returnsValue:!0,apply({key:e,mods:t,rx:n,error:r}){if(e)S([[R(e,t),Ne(n)]]);else{let s=Object.assign({},n());Z(s,i=>{if(typeof i=="function")return Ne(i);throw r("ComputedExpectedFunction")}),C(s)}}});p({name:"effect",requirement:{key:"denied",value:"must"},apply:({rx:e})=>E(e)});p({name:"indicator",requirement:"exclusive",apply({el:e,key:t,mods:n,value:r}){let s=t!=null?R(t,n):r;S([[s,!1]]);let i=a=>{let{type:o,el:c}=a.detail;if(c===e)switch(o){case ze:S([[s,!0]]);break;case Qe:S([[s,!1]]);break}};return document.addEventListener(q,i),()=>{S([[s,!1]]),document.removeEventListener(q,i)}}});p({name:"json-signals",requirement:{key:"denied"},apply({el:e,value:t,mods:n}){let r=n.has("terse")?0:2,s={};t&&(s=re(t));let i=()=>{a.disconnect(),e.textContent=JSON.stringify(D(s),null,r),a.observe(e,{childList:!0,characterData:!0,subtree:!0})},a=new MutationObserver(i),o=E(i);return()=>{a.disconnect(),o()}}});var U=e=>{if(!e||e.size<=0)return 0;for(let t of e){if(t.endsWith("ms"))return+t.replace("ms","");if(t.endsWith("s"))return+t.replace("s","")*1e3;try{return Number.parseFloat(t)}catch{}}return 0},te=(e,t,n=!1)=>e?e.has(t.toLowerCase()):n;var Ze=(e,t)=>(...n)=>{setTimeout(()=>{e(...n)},t)},cn=(e,t,n=!1,r=!0)=>{let s=0;return(...i)=>{s&&clearTimeout(s),n&&!s&&e(...i),s=setTimeout(()=>{r&&e(...i),s&&clearTimeout(s),s=0},t)}},ln=(e,t,n=!0,r=!1)=>{let s=!1;return(...i)=>{s||(n&&e(...i),s=!0,setTimeout(()=>{r&&e(...i),s=!1},t))}},le=(e,t)=>{let n=t.get("delay");if(n){let i=U(n);e=Ze(e,i)}let r=t.get("debounce");if(r){let i=U(r),a=te(r,"leading",!1),o=!te(r,"notrailing",!1);e=cn(e,i,a,o)}let s=t.get("throttle");if(s){let i=U(s),a=!te(s,"noleading",!1),o=te(s,"trailing",!1);e=ln(e,i,a,o)}return e};var Ye=!!document.startViewTransition,J=(e,t)=>{if(t.has("viewtransition")&&Ye){let n=e;e=(...r)=>document.startViewTransition(()=>n(...r))}return e};p({name:"on",requirement:"must",argNames:["evt"],apply({el:e,key:t,mods:n,rx:r}){let s=e;n.has("window")&&(s=window);let i=c=>{c&&(n.has("prevent")&&c.preventDefault(),n.has("stop")&&c.stopPropagation()),w(),r(c),M()};i=J(i,n),i=le(i,n);let a={capture:n.has("capture"),passive:n.has("passive"),once:n.has("once")};if(n.has("outside")){s=document;let c=i;i=l=>{e.contains(l?.target)||c(l)}}let o=R(t,n,"kebab");if((o===q||o===z)&&(s=document),e instanceof HTMLFormElement&&o==="submit"){let c=i;i=l=>{l?.preventDefault(),c(l)}}return s.addEventListener(o,i,a),()=>{s.removeEventListener(o,i)}}});var Xe=new WeakSet;p({name:"on-intersect",requirement:{key:"denied",value:"must"},apply({el:e,mods:t,rx:n}){let r=()=>{w(),n(),M()};r=J(r,t),r=le(r,t);let s={threshold:0};t.has("full")?s.threshold=1:t.has("half")&&(s.threshold=.5);let i=new IntersectionObserver(a=>{for(let o of a)o.isIntersecting&&(r(),i&&Xe.has(e)&&i.disconnect())},s);return i.observe(e),t.has("once")&&Xe.add(e),()=>{t.has("once")||Xe.delete(e),i&&(i.disconnect(),i=null)}}});p({name:"on-interval",requirement:{key:"denied",value:"must"},apply({mods:e,rx:t}){let n=()=>{w(),t(),M()};n=J(n,e);let r=1e3,s=e.get("duration");s&&(r=U(s),te(s,"leading",!1)&&n());let i=setInterval(n,r);return()=>{clearInterval(i)}}});p({name:"init",requirement:{key:"denied",value:"must"},apply({rx:e,mods:t}){let n=()=>{w(),e(),M()};n=J(n,t);let r=0,s=t.get("delay");s&&(r=U(s),r>0&&(n=Ze(n,r))),n()}});p({name:"on-signal-patch",requirement:{value:"must"},argNames:["patch"],returnsValue:!0,apply({el:e,key:t,mods:n,rx:r,error:s}){if(t&&t!=="filter")throw s("KeyNotAllowed");let i=e.getAttribute("data-on-signal-patch-filter"),a={};i&&(a=re(i));let o=le(c=>{let l=D(a,c.detail);it(l)||(w(),r(l),M())},n);return document.addEventListener(z,o),()=>{document.removeEventListener(z,o)}}});p({name:"ref",requirement:"exclusive",apply({el:e,key:t,mods:n,value:r}){let s=t!=null?R(t,n):r;S([[s,e]])}});var Ot="none",Pt="display";p({name:"show",requirement:{key:"denied",value:"must"},returnsValue:!0,apply({el:e,rx:t}){let n=()=>{r.disconnect(),t()?e.style.display===Ot&&e.style.removeProperty(Pt):e.style.setProperty(Pt,Ot),r.observe(e,{attributeFilter:["style"]})},r=new MutationObserver(n),s=E(n);return()=>{r.disconnect(),s()}}});p({name:"signals",returnsValue:!0,apply({key:e,mods:t,rx:n}){let r=t.has("ifmissing");if(e)e=R(e,t),S([[e,n?.()]],{ifMissing:r});else{let s=Object.assign({},n?.());C(s,{ifMissing:r})}}});p({name:"style",requirement:{value:"must"},returnsValue:!0,apply({key:e,el:t,rx:n}){let{style:r}=t,s=new Map,i=(l,f)=>{let d=s.get(l);!f&&f!==0?d!==void 0&&(d?r.setProperty(l,d):r.removeProperty(l)):(d===void 0&&s.set(l,r.getPropertyValue(l)),r.setProperty(l,String(f)))},a=()=>{if(o.disconnect(),e)i(e,n());else{let l=n();for(let[f,d]of s)f in l||(d?r.setProperty(f,d):r.removeProperty(f));for(let f in l)i(de(f),l[f])}o.observe(t,{attributeFilter:["style"]})},o=new MutationObserver(a),c=E(a);return()=>{o.disconnect(),c();for(let[l,f]of s)f?r.setProperty(l,f):r.removeProperty(l)}}});p({name:"text",requirement:{key:"denied",value:"must"},returnsValue:!0,apply({el:e,rx:t}){let n=()=>{r.disconnect(),e.textContent=`${t()}`,r.observe(e,{childList:!0,characterData:!0,subtree:!0})},r=new MutationObserver(n),s=E(n);return()=>{r.disconnect(),s()}}});he({name:"datastar-patch-elements",apply(e,{elements:t="",selector:n="",mode:r="outer",useViewTransition:s}){switch(r){case"remove":case"outer":case"inner":case"replace":case"prepend":case"append":case"before":case"after":break;default:throw e.error("PatchElementsInvalidMode",{mode:r})}if(!n&&r!=="outer"&&r!=="replace")throw e.error("PatchElementsExpectedSelector");let i={mode:r,selector:n,elements:t,useViewTransition:s?.trim()==="true"};Ye&&s?document.startViewTransition(()=>Ht(e,i)):Ht(e,i)}});var Ht=({error:e},{elements:t,selector:n,mode:r})=>{let s=t.replace(/]*>|>)([\s\S]*?)<\/svg>/gim,""),i=/<\/html>/.test(s),a=/<\/head>/.test(s),o=/<\/body>/.test(s),c=new DOMParser().parseFromString(i||a||o?t:``,"text/html"),l=document.createDocumentFragment();if(i?l.appendChild(c.documentElement):a&&o?(l.appendChild(c.head),l.appendChild(c.body)):a?l.appendChild(c.head):o?l.appendChild(c.body):l=c.querySelector("template").content,!n&&(r==="outer"||r==="replace"))for(let f of l.children){let d;if(f instanceof HTMLHtmlElement)d=document.documentElement;else if(f instanceof HTMLBodyElement)d=document.body;else if(f instanceof HTMLHeadElement)d=document.head;else if(d=document.getElementById(f.id),!d){console.warn(e("PatchElementsNoTargetsFound"),{element:{id:f.id}});continue}_t(r,f,[d])}else{let f=document.querySelectorAll(n);if(!f.length){console.warn(e("PatchElementsNoTargetsFound"),{selector:n});return}_t(r,l,f)}},et=new WeakSet;for(let e of document.querySelectorAll("script"))et.add(e);var Dt=e=>{let t=e instanceof HTMLScriptElement?[e]:e.querySelectorAll("script");for(let n of t)if(!et.has(n)){let r=document.createElement("script");for(let{name:s,value:i}of n.attributes)r.setAttribute(s,i);r.text=n.text,n.replaceWith(r),et.add(r)}},kt=(e,t,n)=>{for(let r of e){let s=t.cloneNode(!0);Dt(s),r[n](s)}},_t=(e,t,n)=>{switch(e){case"remove":for(let r of n)r.remove();break;case"outer":case"inner":for(let r of n)Ke(r,t.cloneNode(!0),e),Dt(r);break;case"replace":kt(n,t,"replaceWith");break;case"prepend":case"append":case"before":case"after":kt(n,t,e)}};he({name:"datastar-patch-signals",apply({error:e},{signals:t,onlyIfMissing:n}){if(t){let r=n?.trim()==="true";C(re(t),{ifMissing:r})}else throw e("PatchSignalsExpectedSignals")}});export{O as action,Et as actions,p as attribute,w as beginBatch,Ne as computed,E as effect,M as endBatch,D as filtered,ie as getPath,C as mergePatch,S as mergePaths,Ke as morph,X as root,me as signal,V as startPeeking,I as stopPeeking,he as watcher}; -//# sourceMappingURL=datastar.js.map diff --git a/app/src/App/wwwroot/scripts/datastar.1.0.2.js b/app/src/App/wwwroot/scripts/datastar.1.0.2.js new file mode 100644 index 0000000..75bd6c6 --- /dev/null +++ b/app/src/App/wwwroot/scripts/datastar.1.0.2.js @@ -0,0 +1,9 @@ +// Datastar v1.0.2 +var ht=/🖕JS_DS🚀/.source,Je=ht.slice(0,5),Ke=ht.slice(4),j="datastar-fetch",ge="datastar-prop-change",yt="datastar-ready",ze="datastar-scope-children",ee="datastar-signal-patch";var x=Object.hasOwn??Object.prototype.hasOwnProperty.call;var J=e=>e!==null&&typeof e=="object"&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),vt=e=>{for(let t in e)if(x(e,t))return!1;return!0},te=(e,t)=>{for(let n in e){let r=e[n];J(r)||Array.isArray(r)?te(r,t):e[n]=t(r)}},xe=e=>{let t={};for(let[n,r]of e){let s=n.split("."),i=s.pop(),o=s.reduce((a,l)=>a[l]??={},t);o[i]=r}return t};var Le=[],Ze=[],He=0,Ne=0,Qe=0,Ye,B,Pe=0,L=()=>{He++},N=()=>{--He||(St(),K())},H=e=>{Ye=B,B=e},_=()=>{B=Ye,Ye=void 0},he=e=>an.bind(0,{previousValue:e,t:e,e:1}),Xe=Symbol("computed"),_e=e=>{let t=cn.bind(0,{e:17,getter:e});return t[Xe]=1,t},w=e=>{let t={d:e,e:2};B&&tt(t,B),H(t),L();try{t.d()}finally{N(),_()}return wt.bind(0,t)},St=()=>{for(;Ne"getter"in e?Tt(e):At(e,e.t),Tt=e=>{H(e),Mt(e);try{let t=e.t;return t!==(e.t=e.getter(t))}finally{_(),xt(e)}},At=(e,t)=>(e.e=1,e.previousValue!==(e.previousValue=t)),et=e=>{let t=e.e;if(!(t&64)){e.e=t|64;let n=e.r;n?et(n.o):Ze[Qe++]=e}},Rt=(e,t)=>{if(t&16||t&32&&Lt(e.s,e)){H(e),Mt(e),L();try{e.d()}finally{N(),_(),xt(e)}return}t&32&&(e.e=t&-33);let n=e.s;for(;n;){let r=n.c,s=r.e;s&64&&Rt(r,r.e=s&-65),n=n.i}},an=(e,...t)=>{if(t.length){if(e.t!==(e.t=t[0])){e.e=17;let r=e.r;return r&&(ln(r),He||St()),!0}return!1}let n=e.t;if(e.e&16&&At(e,n)){let r=e.r;r&&Fe(r)}return B&&tt(e,B),n},cn=e=>{let t=e.e;if(t&16||t&32&&Lt(e.s,e)){if(Tt(e)){let n=e.r;n&&Fe(n)}}else t&32&&(e.e=t&-33);return B&&tt(e,B),e.t},wt=e=>{let t=e.s;for(;t;)t=Ce(t,e);let n=e.r;n&&Ce(n),e.e=0},tt=(e,t)=>{let n=t.a;if(n&&n.c===e)return;let r=n?n.i:t.s;if(r&&r.c===e){r.p=Pe,t.a=r;return}let s=e.m;if(s&&s.p===Pe&&s.o===t)return;let i=t.a=e.m={p:Pe,c:e,o:t,l:n,i:r,u:s};r&&(r.l=i),n?n.i=i:t.s=i,s?s.n=i:e.r=i},Ce=(e,t=e.o)=>{let n=e.c,r=e.l,s=e.i,i=e.n,o=e.u;if(s?s.l=r:t.a=r,r?r.i=s:t.s=s,i?i.u=o:n.m=o,o)o.n=i;else if(!(n.r=i))if("getter"in n){let a=n.s;if(a){n.e=17;do a=Ce(a,n);while(a)}}else"previousValue"in n||wt(n);return s},ln=e=>{let t=e.n,n;e:for(;;){let r=e.o,s=r.e;if(s&60?s&12?s&4?!(s&48)&&un(e,r)?(r.e=s|40,s&=1):s=0:r.e=s&-9|32:s=0:r.e=s|32,s&2&&et(r),s&1){let i=r.r;if(i){let o=(e=i).n;o&&(n={t,f:n},t=o);continue}}if(e=t){t=e.n;continue}for(;n;)if(e=n.t,n=n.f,e){t=e.n;continue e}break}},Mt=e=>{Pe++,e.a=void 0,e.e=e.e&-57|4},xt=e=>{let t=e.a,n=t?t.i:e.s;for(;n;)n=Ce(n,e);e.e&=-5},Lt=(e,t)=>{let n,r=0,s=!1;e:for(;;){let i=e.c,o=i.e;if(t.e&16)s=!0;else if((o&17)===17){if(bt(i)){let a=i.r;a.n&&Fe(a),s=!0}}else if((o&33)===33){(e.n||e.u)&&(n={t:e,f:n}),e=i.s,t=i,++r;continue}if(!s){let a=e.i;if(a){e=a;continue}}for(;r--;){let a=t.r,l=a.n;if(l?(e=n.t,n=n.f):e=a,s){if(bt(t)){l&&Fe(a),t=e.o;continue}s=!1}else t.e&=-33;if(t=e.o,e.i){e=e.i;continue e}}return s}},Fe=e=>{do{let t=e.o,n=t.e;(n&48)===32&&(t.e=n|16,n&2&&et(t))}while(e=e.n)},un=(e,t)=>{let n=t.a;for(;n;){if(n===e)return!0;n=n.l}return!1},oe=e=>{let t=ne,n=e.split(".");for(let r of n){if(t==null||!x(t,r))return;t=t[r]}return t},Oe=(e,t="")=>{let n=Array.isArray(e);if(n||J(e)){let r=n?[]:{};for(let i in e)r[i]=he(Oe(e[i],`${t+i}.`));let s=he(0);return new Proxy(r,{get(i,o){if(!(o==="toJSON"&&!x(r,o)))return n&&o in Array.prototype?(s(),r[o]):typeof o=="symbol"?r[o]:((!x(r,o)||r[o]()==null)&&(r[o]=he(""),K(t+o,""),s(s()+1)),r[o]())},set(i,o,a){let l=t+o;if(n&&o==="length"){let c=r[o]-a;if(r[o]=a,c>0){let u={};for(let f=a;f{if(e!==void 0&&t!==void 0&&Le.push([e,t]),!He&&Le.length){let n=xe(Le);Le.length=0,document.dispatchEvent(new CustomEvent(ee,{detail:n}))}},k=(e,{ifMissing:t}={})=>{L();for(let n in e)e[n]==null?t||delete ne[n]:Nt(e[n],n,ne,"",t);N()},R=(e,t)=>k(xe(e),t),Nt=(e,t,n,r,s)=>{if(J(e)){x(n,t)&&(J(n[t])||Array.isArray(n[t]))||(n[t]={});for(let i in e)e[i]==null?s||delete n[t][i]:Nt(e[i],i,n[t],`${r+t}.`,s)}else s&&x(n,t)||(n[t]=e)},Et=e=>typeof e=="string"?RegExp(e.replace(/^\/|\/$/g,"")):e,V=({include:e=/.*/,exclude:t=/(?!)/}={},n=ne)=>{let r=Et(e),s=Et(t),i=[],o=[[n,""]];for(;o.length;){let[a,l]=o.pop();for(let c in a){let u=l+c;J(a[c])?o.push([a[c],`${u}.`]):r.test(u)&&!s.test(u)&&i.push([u,oe(u)])}}return xe(i)},ne=Oe({});var z=e=>e instanceof HTMLElement||e instanceof SVGElement||e instanceof MathMLElement;var ae=e=>e.replace(/([A-Z]+)([A-Z][a-z])/g,"$1-$2").replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([a-z])([0-9]+)/gi,"$1-$2").replace(/([0-9]+)([a-z])/gi,"$1-$2").replace(/[\s_]+/g,"-").toLowerCase(),Pt=e=>ae(e).replace(/-./g,t=>t[1].toUpperCase()),Ot=e=>ae(e).replace(/-/g,"_");var fn=/^(?:(?:async\s+)?function\b|(?:async\s*)?(?:\([^)]*\)|[A-Za-z_$][\w$]*)\s*=>)/,ce=(e,t={})=>{let{reviveFunctionStrings:n=!1}=t;try{return n?JSON.parse(e,(r,s)=>{if(typeof s!="string")return s;let i=s.trim();if(!fn.test(i))return s;try{let o=Function(`return (${i})`)();return typeof o=="function"?o:s}catch{return s}}):JSON.parse(e)}catch{return Function(`return (${e})`)()}},Ct={camel:e=>e.replace(/-[a-z]/g,t=>t[1].toUpperCase()),snake:e=>e.replace(/-/g,"_"),pascal:e=>e[0].toUpperCase()+Ct.camel(e.slice(1))},P=(e,t,n="camel")=>{for(let r of t.get("case")||[n])e=Ct[r]?.(e)||e;return e},W=e=>`data-${e}`,nt=e=>e;var dn="https://data-star.dev/errors",ye=(e,t,n={})=>{Object.assign(n,e);let r=new Error,s=Ot(t),i=new URLSearchParams({metadata:JSON.stringify(n)}).toString(),o=JSON.stringify(n,null,2);return r.message=`${t} +More info: ${dn}/${s}?${i} +Context: ${o}`,r},ve=new Map,rt=new Map,_t=new Map,kt=new Proxy({},{get:(e,t)=>ve.get(t)?.apply,has:(e,t)=>ve.has(t),ownKeys:()=>Reflect.ownKeys(ve),set:()=>!1,deleteProperty:()=>!1}),Ee=new Map,ke=[],st=new Set,be=new Set,Ft=!1,p=e=>{ke.push(e),ke.length===1&&setTimeout(()=>{for(let n of ke)st.add(n.name),rt.set(n.name,n);ke.length=0;let t=be.size?[...be]:[document.documentElement];for(let n of t)bn(n,!be.has(n));st.clear()})},D=e=>{ve.set(e.name,e)};document.addEventListener(j,e=>{let t=_t.get(e.detail.type);t&&t.apply({error:ye.bind(0,{plugin:{type:"watcher",name:t.name},element:{id:e.target.id,tag:e.target.tagName}})},e.detail.argsRaw)});var Se=e=>{_t.set(e.name,e)},Ht=e=>{for(let t of e){let n=Ee.get(t);if(n&&Ee.delete(t))for(let r of n.values())for(let s of r.values())s()}},Dt=W("ignore"),pn=`[${Dt}]`,It=e=>e.hasAttribute(`${Dt}__self`)||!!e.closest(pn),De=(e,t)=>{for(let n of e)if(!It(n)){let r=new Set;for(let s in n.dataset){let i=s.replace(/[A-Z]/g,"-$&").toLowerCase();r.add(i),it(n,i,n.dataset[s],t)}for(let s of Array.from(n.attributes)){if(!s.name.startsWith("data-"))continue;let i=s.name.slice(5);r.has(i)||it(n,i,s.value,t)}}},mn=e=>{for(let{target:t,type:n,attributeName:r,addedNodes:s,removedNodes:i}of e)if(n==="childList"){for(let o of i)z(o)&&(Ht([o]),Ht(o.querySelectorAll("*")));for(let o of s)z(o)&&(De([o]),De(o.querySelectorAll("*")))}else if(n==="attributes"&&r.startsWith("data-")&&z(t)&&!It(t)){let o=r.slice(5),a=nt(o);if(!a)continue;let l=t.getAttribute(r);if(l===null){let c=Ee.get(t);if(c){let u=c.get(a);if(u){for(let f of u.values())f();c.delete(a)}}}else it(t,o,l)}},gn=new MutationObserver(mn),hn=e=>{let[t,...n]=e.split("__"),[r,s]=t.split(/:(.+)/),i=new Map;for(let o of n){let[a,...l]=o.split(".");i.set(a,new Set(l))}return{pluginName:r,key:s,mods:i}},yn=()=>be.has(document.documentElement),vn=()=>{Ft||!yn()||(Ft=!0,document.dispatchEvent(new Event(yt)))},bn=(e=document.documentElement,t=!0)=>{z(e)&&De([e],!0),De(e.querySelectorAll("*"),!0),t&&(gn.observe(e,{subtree:!0,childList:!0,attributes:!0}),be.add(e),vn())};var it=(e,t,n,r)=>{let s=nt(t);if(!s)return;let{pluginName:i,key:o,mods:a}=hn(s),l=rt.get(i);if((!r||st.has(i))&&!!l){let u={el:e,rawKey:s,mods:a,error:ye.bind(0,{plugin:{type:"attribute",name:l.name},element:{id:e.id,tag:e.tagName},expression:{rawKey:s,key:o,value:n}}),key:o,value:n,loadedPluginNames:{actions:new Set(ve.keys()),attributes:new Set(rt.keys())},rx:void 0},f=l.requirement&&(typeof l.requirement=="string"?l.requirement:l.requirement.key)||"allowed",m=l.requirement&&(typeof l.requirement=="string"?l.requirement:l.requirement.value)||"allowed",h=o!=null&&o!=="",v=n!=null&&n!=="";if(h){if(f==="denied")throw u.error("KeyNotAllowed")}else if(f==="must")throw u.error("KeyRequired");if(v){if(m==="denied")throw u.error("ValueNotAllowed")}else if(m==="must")throw u.error("ValueRequired");if(f==="exclusive"||m==="exclusive"){if(h&&v)throw u.error("KeyAndValueProvided");if(!h&&!v)throw u.error("KeyOrValueRequired")}let d=new Map;if(v){let y;u.rx=(...$)=>(y||(y=En(n,{returnsValue:l.returnsValue,argNames:l.argNames,cleanups:d})),y(e,...$))}let g=l.apply(u);g&&d.set("attribute",g);let b=Ee.get(e);if(b){let y=b.get(s);if(y)for(let $ of y.values())$()}else b=new Map,Ee.set(e,b);b.set(s,d)}},En=(e,{returnsValue:t=!1,argNames:n=[],cleanups:r=new Map}={})=>{let s="";if(t){let l=/(\/(\\\/|[^/])*\/|"(\\"|[^"])*"|'(\\'|[^'])*'|`(\\`|[^`])*`|\(\s*((function)\s*\(\s*\)|(\(\s*\))\s*=>)\s*(?:\{[\s\S]*?\}|[^;){]*)\s*\)\s*\(\s*\)|[^;])+/gm,c=e.trim().match(l);if(c){let u=c.length-1,f=c[u].trim();f.startsWith("return")||(c[u]=`return (${f});`),s=c.join(`; +`)}}else s=e.trim();let i=new Map,o=RegExp(`(?:${Je})(.*?)(?:${Ke})`,"gm"),a=0;for(let l of s.matchAll(o)){let c=l[1],u=`__escaped${a++}`;i.set(u,c),s=s.replace(Je+c+Ke,u)}s=s.replace(/("(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\$]|\$(?!\{))*`)|\$\{([^{}]*)\}|\$([a-zA-Z_\d]\w*(?:[.-]\w+)*)/g,(l,c,u,f)=>c?l:u!==void 0?`\${${u.replace(/\$([a-zA-Z_\d]\w*(?:[.-]\w+)*)/g,(m,h)=>h.split(".").reduce((v,d)=>`${v}['${d}']`,"$"))}}`:f.split(".").reduce((m,h)=>`${m}['${h}']`,"$")),s=s.replaceAll(/@([A-Za-z_$][\w$]*)\(/g,'__action("$1",evt,');for(let[l,c]of i)s=s.replace(l,c);try{let l=Function("el","$","__action","evt",...n,s);return(c,...u)=>{let f=(m,h,...v)=>{let d=ye.bind(0,{plugin:{type:"action",name:m},element:{id:c.id,tag:c.tagName},expression:{fnContent:s,value:e}}),g=kt[m];if(g)return g({el:c,evt:h,error:d,cleanups:r},...v);throw d("UndefinedAction")};try{return l(c,ne,f,void 0,...u)}catch(m){throw console.error(m),ye({element:{id:c.id,tag:c.tagName},expression:{fnContent:s,value:e},error:m.message},"ExecuteExpression")}}}catch(l){throw console.error(l),ye({expression:{fnContent:s,value:e},error:l.message},"GenerateExpression")}};D({name:"peek",apply(e,t){H();try{return t()}finally{_()}}});D({name:"setAll",apply(e,t,n){H();let r=V(n);te(r,()=>t),k(r),_()}});D({name:"toggleAll",apply(e,t){H();let n=V(t);te(n,r=>!r),k(n),_()}});var Ie=new Map,ot=e=>!["GET","DELETE"].includes(e),Te=(e,t,n=!0)=>D({name:e,apply:async({el:r,evt:s,error:i,cleanups:o},a,{selector:l,headers:c,contentType:u="json",filterSignals:{include:f=/.*/,exclude:m=/(^|\.)_/}={},openWhenHidden:h=n,payload:v,requestCancellation:d="auto",retry:g="auto",retryInterval:b=1e3,retryScaler:y=2,retryMaxWait:$=3e4,retryMaxCount:O=10}={})=>{let C=d instanceof AbortController?d:new AbortController;(d==="auto"||d==="cleanup")&&(Ie.get(t)?.get(a)?.abort(),Ie.has(t)||Ie.set(t,new Map),Ie.get(t).set(a,C)),d==="cleanup"&&(o.get(`@${e}`)?.(),o.set(`@${e}`,async()=>{C.abort(),await Promise.resolve()}));let de=()=>{};try{if(!a?.length)throw i("FetchNoUrlProvided",{action:D});let ie={Accept:"text/event-stream, text/html, application/json","Datastar-Request":!0};u==="json"&&ot(t)&&(ie["Content-Type"]="application/json");let q=Object.assign({},ie,c),Y={input:"",method:t,headers:q,openWhenHidden:h,retry:g,retryInterval:b,retryScaler:y,retryMaxWait:$,retryMaxCount:O,signal:C.signal,onopen:async E=>{E.status>=400&&re(Sn,r,{status:E.status.toString()})},onmessage:E=>{if(!E.event.startsWith("datastar"))return;let U=E.event,T={};for(let S of E.data.split(` +`)){let A=S.indexOf(" "),X=S.slice(0,A),M=S.slice(A+1);(T[X]||=[]).push(M)}let F=Object.fromEntries(Object.entries(T).map(([S,A])=>[S,A.join(` +`)]));re(U,r,F)},onerror:E=>{if(Vt(E))throw i("FetchExpectedTextEventStream",{url:a})}},Ge=()=>{let E=new URL(a,document.baseURI),U=new URLSearchParams(E.search);if(u==="json"){H();let T=v!==void 0?v:V({include:f,exclude:m});_();let F=JSON.stringify(T);ot(t)?Y.body=F:U.set("datastar",F)}else if(u==="form"){let T=l?document.querySelector(l):r.closest("form");if(!T)throw i("FetchFormNotFound",{action:D,selector:l});if(!T.noValidate&&!T.checkValidity()){T.reportValidity();return}let F=new FormData(T),S=r;if(r===T&&s instanceof SubmitEvent)S=s.submitter;else{let M=pe=>pe.preventDefault();T.addEventListener("submit",M),de=()=>{T.removeEventListener("submit",M)}}if(S instanceof HTMLButtonElement||S instanceof HTMLInputElement&&S.type==="submit"){let M=S.getAttribute("name");M&&F.append(M,S.value)}let A=T.getAttribute("enctype")==="multipart/form-data";A||(q["Content-Type"]="application/x-www-form-urlencoded");let X=new URLSearchParams(F);if(ot(t))A?Y.body=F:Y.body=X;else for(let[M,pe]of X)U.append(M,pe)}else throw i("FetchInvalidContentType",{action:D,contentType:u});return E.search=U.toString(),Y.input=E.toString(),Y};re(at,r,{});try{await Ln(r,Ge)}catch(E){if(!Vt(E))throw i("FetchFailed",{method:t,url:a,error:E.message})}}finally{re(ct,r,{}),de(),o.delete(`@${e}`)}}});Te("get","GET",!1);Te("patch","PATCH");Te("post","POST");Te("put","PUT");Te("delete","DELETE");var at="started",ct="finished",Sn="error",Tn="retrying",An="retries-failed",re=(e,t,n)=>document.dispatchEvent(new CustomEvent(j,{detail:{type:e,el:t,argsRaw:n}})),Vt=e=>`${e}`.includes("text/event-stream"),Rn=async(e,t)=>{let n=e.getReader(),r=await n.read();for(;!r.done;)t(r.value),r=await n.read()},wn=e=>{let t,n,r,s=!1;return i=>{t?t=xn(t,i):(t=i,n=0,r=-1);let o=t.length,a=0;for(;n{let r=$t(),s=new TextDecoder;return(i,o)=>{if(!i.length)n?.(r),r=$t();else if(o>0){let a=s.decode(i.subarray(0,o)),l=o+(i[o+1]===32?2:1),c=s.decode(i.subarray(l));switch(a){case"data":r.data=r.data?`${r.data} +${c}`:c;break;case"event":r.event=c;break;case"id":e(r.id=c);break;case"retry":{let u=+c;Number.isNaN(u)||t(r.retry=u);break}}}}},xn=(e,t)=>{let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n},$t=()=>({data:"",event:"",id:"",retry:void 0}),Ln=(e,t)=>new Promise((n,r)=>{let s=t();if(!s)return;let{input:i,signal:o,headers:a,onopen:l,onmessage:c,onclose:u,openWhenHidden:f,fetch:m,retry:h="auto",retryInterval:v=1e3,retryScaler:d=2,retryMaxWait:g=3e4,retryMaxCount:b=10,responseOverrides:y,...$}=s,O={...a},C,de=()=>{if(C.abort(),!document.hidden){let S=t();if(!S)return;i=S.input,$.body=S.body,F()}};f||document.addEventListener("visibilitychange",de);let ie,q=()=>{document.removeEventListener("visibilitychange",de),clearTimeout(ie),C.abort()};o?.addEventListener("abort",()=>{q(),n()});let Y=m||window.fetch,Ge=l||(()=>{}),E=0,U=v,T=()=>{E{C=new AbortController;let S=C.signal;try{let A=await Y(i,{...$,headers:O,signal:S});await Ge(A);let X=async(G,me,Be,we,...on)=>{let gt={[Be]:await me.text()};for(let We of on){let Ue=me.headers.get(`datastar-${ae(We)}`);if(we){let Me=we[We];Me&&(Ue=typeof Me=="string"?Me:JSON.stringify(Me))}Ue&&(gt[We]=Ue)}re(G,e,gt),q(),n()},M=A.status,pe=M===204,mt=M>=300&&M<400,sn=M>=400&&M<600;if(M!==200){if(u?.(),h!=="never"&&!pe&&!mt&&(h==="always"||h==="error"&&sn)){T();return}q(),n();return}E=0,v=U;let je=A.headers.get("Content-Type");if(je?.includes("text/html"))return await X("datastar-patch-elements",A,"elements",y,"selector","mode","namespace","useViewTransition");if(je?.includes("application/json"))return await X("datastar-patch-signals",A,"signals",y,"onlyIfMissing");if(je?.includes("text/javascript")){let G=document.createElement("script"),me=A.headers.get("datastar-script-attributes");if(me)for(let[Be,we]of Object.entries(JSON.parse(me)))G.setAttribute(Be,we);G.textContent=await A.text(),document.head.appendChild(G),q();return}if(await Rn(A.body,wn(Mn(G=>{G?O["last-event-id"]=G:delete O["last-event-id"]},G=>{U=v=G},c))),u?.(),h==="always"&&!mt){T();return}q(),n()}catch{if(!S.aborted)try{T()}catch(A){q(),r(A)}}};F()});p({name:"attr",requirement:{value:"must"},returnsValue:!0,apply({el:e,key:t,rx:n}){let r=(a,l)=>{l===""||l===!0?e.setAttribute(a,""):l===!1||l==null?e.removeAttribute(a):typeof l=="string"?e.setAttribute(a,l):typeof l=="function"?e.setAttribute(a,l.toString()):e.setAttribute(a,JSON.stringify(l,(c,u)=>typeof u=="function"?u.toString():u))},s=t?()=>{i.disconnect();let a=n();r(t,a),i.observe(e,{attributeFilter:[t]})}:()=>{i.disconnect();let a=n(),l=Object.keys(a);for(let c of l)r(c,a[c]);i.observe(e,{attributeFilter:l})},i=new MutationObserver(s),o=w(s);return()=>{i.disconnect(),o()}}});var Ve=(e,...t)=>({get:n=>n[e],set:(n,r)=>{n[e]=r},events:t}),qt=(e,...t)=>({get:n=>n.getAttribute(e),set:(n,r)=>{n.setAttribute(e,`${r}`)},events:t}),lt=(e=!1,...t)=>({get:(n,r)=>r==="string"||e&&r==="undefined"?n.value:+n.value,set:(n,r)=>{n.value=`${r}`},events:t}),Nn=/^data:(?[^;]+);base64,(?.*)$/,Gt=Symbol("empty"),Pn=(e,t,n,r,s,i)=>{let o=W(CSS.escape(n)),a=t?`[${o}]`:`[${o}="${CSS.escape(r)}"]`;if(i===void 0&&e instanceof HTMLInputElement&&e.type==="radio"){let f=[...document.querySelectorAll(a)].find(m=>m instanceof HTMLInputElement&&m.checked);f&&R([[r,f.value]],{ifMissing:!0})}if(!Array.isArray(i)||e instanceof HTMLSelectElement&&e.multiple)return R([[r,s.get(e,typeof i)]],{ifMissing:!0}),r;let l=document.querySelectorAll(a),c=[],u=0;for(let f of l){if(c.push([`${r}.${u}`,s.get(f,typeof(x(i,u)?i[u]:void 0))]),e===f)break;u++}return R(c,{ifMissing:!0}),`${r}.${u}`};p({name:"bind",requirement:"exclusive",apply({el:e,key:t,rawKey:n,mods:r,value:s,error:i}){let o=t!=null?P(t,r):s,a=r.get("prop"),l=r.get("event"),c=null;if(e instanceof HTMLInputElement)switch(e.type){case"range":case"number":c=lt(!1,"input");break;case"checkbox":c={get:(d,g)=>d.value!=="on"?g==="boolean"?d.checked:d.checked?d.value:"":g==="string"?d.checked?d.value:"":d.checked,set:(d,g)=>{d.checked=typeof g=="string"?g===d.value:g},events:["input"]};break;case"radio":e.getAttribute("name")?.length||e.setAttribute("name",o),c={get:(d,g)=>d.checked?g==="number"?+d.value:d.value:Gt,set:(d,g)=>{d.checked=g===(typeof g=="number"?+d.value:d.value)},events:["input"]};break;case"file":{let d=()=>{let g=[...e.files||[]],b=[];Promise.all(g.map(y=>new Promise($=>{let O=new FileReader;O.onload=()=>{if(typeof O.result!="string")throw i("InvalidFileResultType",{resultType:typeof O.result});let C=O.result.match(Nn);if(!C?.groups)throw i("InvalidDataUri",{result:O.result});b.push({name:y.name,contents:C.groups.contents,mime:C.groups.mime})},O.onloadend=()=>$(),O.readAsDataURL(y)}))).then(()=>{R([[o,b]])})};return e.addEventListener("change",d),()=>{e.removeEventListener("change",d)}}default:c=lt(!0,"input")}else if(e instanceof HTMLSelectElement&&e.multiple){let d=new Map;c={get:g=>[...g.selectedOptions].map(b=>{let y=d.get(b.value);return y==="string"||y==null?b.value:+b.value}),set:(g,b)=>{for(let y of g.options)b.includes(y.value)?(d.set(y.value,"string"),y.selected=!0):b.includes(+y.value)?(d.set(y.value,"number"),y.selected=!0):y.selected=!1},events:["change"]}}else e instanceof HTMLSelectElement?c=lt(!0,"change"):e instanceof HTMLTextAreaElement?c=Ve("value","input"):e instanceof HTMLElement&&e.tagName.includes("-")?c="value"in e?Ve("value","input","change"):qt("value","input","change"):e instanceof HTMLElement&&"value"in e?c=Ve("value","change"):c=qt("value","change");if(!c)throw i("InvalidBindAdapter");let u=a&&[...a][0];if(a&&!u)throw i("BindPropNameMissing");if(u){let d=Pt(u);c=Ve(d,...l?[...l]:c.events)}else l&&(c.events=[...l]);let f=oe(o),m=Pn(e,t,n,o,c,f),h=()=>{let d=oe(m);if(d!=null){let g=c.get(e,typeof d);g!==Gt&&R([[m,g]])}};for(let d of c.events)e.addEventListener(d,h);e.addEventListener(ge,h);let v=w(()=>{c.set(e,oe(m))});return()=>{v();for(let d of c.events)e.removeEventListener(d,h);e.removeEventListener(ge,h)}}});p({name:"class",requirement:{value:"must"},returnsValue:!0,apply({key:e,el:t,mods:n,rx:r}){e&&=P(e,n,"kebab");let s,i=()=>{o.disconnect(),s=e?{[e]:r()}:r();for(let l in s){let c=l.split(/\s+/).filter(u=>u.length>0);if(s[l])for(let u of c)t.classList.contains(u)||t.classList.add(u);else for(let u of c)t.classList.contains(u)&&t.classList.remove(u)}o.observe(t,{attributeFilter:["class"]})},o=new MutationObserver(i),a=w(i);return()=>{o.disconnect(),a();for(let l in s){let c=l.split(/\s+/).filter(u=>u.length>0);for(let u of c)t.classList.remove(u)}}}});p({name:"computed",requirement:{value:"must"},returnsValue:!0,apply({key:e,mods:t,rx:n,error:r}){if(e)R([[P(e,t),_e(n)]]);else{let s=Object.assign({},n());te(s,i=>{if(typeof i=="function")return _e(i);throw r("ComputedExpectedFunction")}),k(s)}}});p({name:"effect",requirement:{key:"denied",value:"must"},apply:({rx:e})=>w(e)});p({name:"indicator",requirement:"exclusive",apply({el:e,key:t,mods:n,value:r}){let s=t!=null?P(t,n):r,i=0;R([[s,!1]]);let o=a=>{let{type:l,el:c}=a.detail;if(c===e)switch(l){case at:i++,R([[s,!0]]);break;case ct:i=Math.max(0,i-1),R([[s,i>0]]);break}};return document.addEventListener(j,o),()=>{i=0,R([[s,!1]]),document.removeEventListener(j,o)}}});var Z=e=>{if(!e||e.size<=0)return 0;for(let t of e){if(t.endsWith("ms"))return+t.replace("ms","");if(t.endsWith("s"))return+t.replace("s","")*1e3;try{return Number.parseFloat(t)}catch{}}return 0},se=(e,t,n=!1)=>e?e.has(t.toLowerCase()):n,jt=(e,t="")=>{if(e&&e.size>0)for(let n of e)return n;return t};var ut=(e,t)=>(...n)=>{setTimeout(()=>{e(...n)},t)},Bt=(e,t,n=!0,r=!1,s=!1)=>{let i=null,o=0;return(...a)=>{n&&!o?(e(...a),i=null):i=a,(!o||s)&&(o&&clearTimeout(o),o=setTimeout(()=>{r&&i!==null&&e(...i),i=null,o=0},t))}},le=(e,t)=>{let n=t.get("delay");if(n){let i=Z(n);e=ut(e,i)}let r=t.get("debounce");if(r){let i=Z(r),o=se(r,"leading",!1),a=!se(r,"notrailing",!1);e=Bt(e,i,o,a,!0)}let s=t.get("throttle");if(s){let i=Z(s),o=!se(s,"noleading",!1),a=se(s,"trailing",!1);e=Bt(e,i,o,a)}return e};var $e=(e=document.documentElement)=>"startViewTransition"in e,Q=(e,t)=>{if(t.has("viewtransition")&&$e()){let n=e;e=(...r)=>document.startViewTransition(()=>n(...r))}return e};p({name:"init",requirement:{key:"denied",value:"must"},apply({rx:e,mods:t}){let n=()=>{L(),e(),N()};n=Q(n,t);let r=0,s=t.get("delay");s&&(r=Z(s),r>0&&(n=ut(n,r))),n()}});p({name:"json-signals",requirement:{key:"denied"},apply({el:e,value:t,mods:n}){let r=n.has("terse")?0:2,s={};t&&(s=ce(t));let i=()=>{o.disconnect(),e.textContent=JSON.stringify(V(s),null,r),o.observe(e,{childList:!0,characterData:!0,subtree:!0})},o=new MutationObserver(i),a=w(i);return()=>{o.disconnect(),a()}}});p({name:"on",requirement:"must",argNames:["evt"],apply({el:e,key:t,mods:n,rx:r}){let s=e;n.has("window")?s=window:n.has("document")&&(s=document);let i=c=>{L(),r(c),N()};i=Q(i,n),i=le(i,n);let o=P(t,n,"kebab"),a={capture:n.has("capture"),passive:n.has("passive"),once:n.has("once")};if(n.has("outside")){s=document;let c=i;i=u=>{e.contains(u?.target)||c(u)}}(o===j||o===ee)&&(s=document);let l=c=>{c&&(n.has("prevent")&&c.preventDefault(),n.has("stop")&&c.stopPropagation(),e instanceof HTMLFormElement&&o==="submit"&&c.preventDefault()),i(c)};return s.addEventListener(o,l,a),()=>{s.removeEventListener(o,l,a)}}});var Wt=(e,t,n)=>Math.max(t,Math.min(n,e));var ft=new WeakSet;p({name:"on-intersect",requirement:{key:"denied",value:"must"},apply({el:e,mods:t,rx:n}){let r=()=>{L(),n(),N()};r=Q(r,t),r=le(r,t);let s={threshold:0};if(t.has("full"))s.threshold=1;else if(t.has("half"))s.threshold=.5;else{let a=t.get("threshold");a&&(s.threshold=Wt(Number(jt(a)),0,100)/100)}let i=t.has("exit"),o=new IntersectionObserver(a=>{for(let l of a)l.isIntersecting!==i&&(r(),o&&ft.has(e)&&o.disconnect())},s);return o.observe(e),t.has("once")&&ft.add(e),()=>{t.has("once")||ft.delete(e),o&&(o.disconnect(),o=null)}}});p({name:"on-interval",requirement:{key:"denied",value:"must"},apply({mods:e,rx:t}){let n=()=>{L(),t(),N()};n=Q(n,e);let r=1e3,s=e.get("duration");s&&(r=Z(s),se(s,"leading",!1)&&n());let i=setInterval(n,r);return()=>{clearInterval(i)}}});p({name:"on-signal-patch",requirement:{value:"must"},argNames:["patch"],returnsValue:!0,apply({el:e,key:t,mods:n,rx:r,error:s}){if(t&&t!=="filter")throw s("KeyNotAllowed");let i=W(`${this.name}-filter`),o=e.getAttribute(i),a={};o&&(a=ce(o));let l=!1,c=le(u=>{if(l)return;let f=V(a,u.detail);if(!vt(f)){l=!0,L();try{r(f)}finally{N(),l=!1}}},n);return document.addEventListener(ee,c),()=>{document.removeEventListener(ee,c)}}});p({name:"ref",requirement:"exclusive",apply({el:e,key:t,mods:n,value:r}){let s=t!=null?P(t,n):r;R([[s,e]])}});var Ut="none",Jt="display";p({name:"show",requirement:{key:"denied",value:"must"},returnsValue:!0,apply({el:e,rx:t}){let n=()=>{r.disconnect(),t()?e.style.display===Ut&&e.style.removeProperty(Jt):e.style.setProperty(Jt,Ut),r.observe(e,{attributeFilter:["style"]})},r=new MutationObserver(n),s=w(n);return()=>{r.disconnect(),s()}}});p({name:"signals",returnsValue:!0,apply({key:e,mods:t,rx:n}){let r=t.has("ifmissing");if(e){e=P(e,t);let s=n?.();R([[e,s]],{ifMissing:r})}else{let s=Object.assign({},n?.());k(s,{ifMissing:r})}}});p({name:"style",requirement:{value:"must"},returnsValue:!0,apply({key:e,el:t,rx:n}){let{style:r}=t,s=new Map,i=(c,u)=>{let f=s.get(c);!u&&u!==0?f!==void 0&&(f?r.setProperty(c,f):r.removeProperty(c)):(f===void 0&&s.set(c,r.getPropertyValue(c)),r.setProperty(c,String(u)))},o=()=>{if(a.disconnect(),e)i(e,n());else{let c=n();for(let[u,f]of s)u in c||(f?r.setProperty(u,f):r.removeProperty(u));for(let u in c)i(ae(u),c[u])}a.observe(t,{attributeFilter:["style"]})},a=new MutationObserver(o),l=w(o);return()=>{a.disconnect(),l();for(let[c,u]of s)u?r.setProperty(c,u):r.removeProperty(c)}}});p({name:"text",requirement:{key:"denied",value:"must"},returnsValue:!0,apply({el:e,rx:t}){let n=()=>{r.disconnect(),e.textContent=`${t()}`,r.observe(e,{childList:!0,characterData:!0,subtree:!0})},r=new MutationObserver(n),s=w(n);return()=>{r.disconnect(),s()}}});var Kt=(e,t)=>e.includes(t),On=["remove","outer","inner","replace","prepend","append","before","after"],Cn=["html","svg","mathml"];Se({name:"datastar-patch-elements",apply(e,t){let n=typeof t.selector=="string"?t.selector:"",r=typeof t.mode=="string"?t.mode:"outer",s=typeof t.namespace=="string"?t.namespace:"html",i=typeof t.useViewTransition=="string"&&t.useViewTransition.trim()==="true",o=typeof t.viewTransitionSelector=="string"?t.viewTransitionSelector:"",a=t.elements;if(!Kt(On,r))throw e.error("PatchElementsInvalidMode",{mode:r});if(!n&&r!=="outer"&&r!=="replace")throw e.error("PatchElementsExpectedSelector");if(!Kt(Cn,s))throw e.error("PatchElementsInvalidNamespace",{namespace:s});let l={selector:n,mode:r,namespace:s,elements:a};if(i&&$e()){let c=document.documentElement;if(o){let u=document.querySelector(o);u&&$e(u)&&(c=u)}c.startViewTransition(()=>zt(e,l))}else zt(e,l)}});var zt=({error:e},{selector:t,mode:n,namespace:r,elements:s})=>{let i=document.createDocumentFragment(),o=typeof s!="string"&&!!s;if(typeof s=="string"){let a=s.replace(/]*>|>)([\s\S]*?)<\/svg>/gim,""),l=/<\/html>/.test(a),c=/<\/head>/.test(a),u=/<\/body>/.test(a),f=r==="svg"?"svg":r==="mathml"?"math":"",m=f?`<${f}>${s}`:s,h=new DOMParser().parseFromString(l||c||u?s:``,"text/html");if(l)i.appendChild(h.documentElement);else if(c&&u)i.appendChild(h.head),i.appendChild(h.body);else if(c)i.appendChild(h.head);else if(u)i.appendChild(h.body);else if(f){let v=h.querySelector("template").content.querySelector(f);for(let d of v.childNodes)i.appendChild(d)}else i=h.querySelector("template").content}else s&&(s instanceof DocumentFragment?i=s:s instanceof Element&&i.appendChild(s));if(!t&&(n==="outer"||n==="replace")){let a=Array.from(i.children);for(let l of a){let c;if(l instanceof HTMLHtmlElement)c=document.documentElement;else if(l instanceof HTMLBodyElement)c=document.body;else if(l instanceof HTMLHeadElement)c=document.head;else if(c=document.getElementById(l.id),!c){console.warn(e("PatchElementsNoTargetsFound"),{element:{id:l.id}});continue}Qt(n,l,[c],!0)}}else{let a=document.querySelectorAll(t);if(!a.length){console.warn(e("PatchElementsNoTargetsFound"),{selector:t});return}let l=o&&n!=="remove"?[a[0]]:a;l.length===1&&(o=!0),Qt(n,i,l,o)}},pt=new WeakSet;for(let e of document.querySelectorAll("script"))pt.add(e);var tn=e=>{let t=e instanceof HTMLScriptElement?[e]:e.querySelectorAll("script");for(let n of t)if(!pt.has(n)){let r=document.createElement("script");for(let{name:s,value:i}of n.attributes)r.setAttribute(s,i);r.text=n.text,n.replaceWith(r),pt.add(r)}},Zt=(e,t,n,r)=>{let s=!1;for(let i of e){if(r&&s)break;let o=r?t:t.cloneNode(!0);tn(o),i[n](o),s=!0}},Qt=(e,t,n,r)=>{switch(e){case"remove":for(let s of n)s.remove();break;case"outer":case"inner":{let s=!1;for(let i of n){if(r&&s)break;let o=r?t:t.cloneNode(!0);Hn(i,o,e),tn(i);let a=i.closest("[data-scope-children]");a&&a.dispatchEvent(new CustomEvent(ze,{bubbles:!1})),s=!0}}break;case"replace":Zt(n,t,"replaceWith",r);break;case"prepend":case"append":case"before":case"after":Zt(n,t,e,r)}},I=new Map,fe=new Set,ue=new Map,Ae=new Set,qe=document.createElement("div");qe.hidden=!0;var Re=W("ignore-morph"),Fn=`[${Re}]`,Hn=(e,t,n="outer")=>{if(z(e)&&z(t)&&e.hasAttribute(Re)&&t.hasAttribute(Re)||e.parentElement?.closest(Fn))return;let r=document.createElement("div");r.append(t),document.body.insertAdjacentElement("afterend",qe);let s=e.querySelectorAll("[id]");for(let{id:a,tagName:l}of s)ue.has(a)?Ae.add(a):ue.set(a,l);e instanceof Element&&e.id&&(ue.has(e.id)?Ae.add(e.id):ue.set(e.id,e.tagName)),fe.clear();let i=r.querySelectorAll("[id]");for(let{id:a,tagName:l}of i)fe.has(a)?Ae.add(a):ue.get(a)===l&&fe.add(a);for(let a of Ae)fe.delete(a);ue.clear(),Ae.clear(),I.clear();let o=n==="outer"?e.parentElement:e;en(o,s),en(r,i),nn(o,r,n==="outer"?e:null,e.nextSibling),qe.remove()},nn=(e,t,n=null,r=null)=>{e instanceof HTMLTemplateElement&&t instanceof HTMLTemplateElement&&(e=e.content,t=t.content),n??=e.firstChild;for(let s of t.childNodes){if(n&&n!==r){let i=_n(s,n,r);if(i){if(i!==n){let o=n;for(;o&&o!==i;){let a=o;o=o.nextSibling,Xt(a)}}dt(i,s),n=i.nextSibling;continue}}if(s instanceof Element&&fe.has(s.id)){let i=document.getElementById(s.id),o=i;for(;o=o.parentNode;){let a=I.get(o);a&&(a.delete(s.id),a.size||I.delete(o))}rn(e,i,n),dt(i,s),n=i.nextSibling;continue}if(I.has(s)){let i=s.namespaceURI,o=s.tagName,a=i&&i!=="http://www.w3.org/1999/xhtml"?document.createElementNS(i,o):document.createElement(o);e.insertBefore(a,n),dt(a,s),n=a.nextSibling}else{let i=document.importNode(s,!0);e.insertBefore(i,n),n=i.nextSibling}}for(;n&&n!==r;){let s=n;n=n.nextSibling,Xt(s)}},_n=(e,t,n)=>{let r=null,s=e.nextSibling,i=0,o=0,a=I.get(e)?.size||0,l=t;for(;l&&l!==n;){if(Yt(l,e)){let c=!1,u=I.get(l),f=I.get(e);if(f&&u){for(let m of u)if(f.has(m)){c=!0;break}}if(c)return l;if(!r&&!I.has(l)){if(!a)return l;r=l}}if(o+=I.get(l)?.size||0,o>a)break;r===null&&s&&Yt(l,s)&&(i++,s=s.nextSibling,i>=2&&(r=void 0)),l=l.nextSibling}return r||null},Yt=(e,t)=>e.nodeType===t.nodeType&&e.tagName===t.tagName&&(!e.id||e.id===t.id),Xt=e=>{I.has(e)?rn(qe,e,null):e.parentNode?.removeChild(e)},rn=(e,t,n)=>{if("moveBefore"in e){e.moveBefore(t,n);return}e.insertBefore(t,n)},kn=W("preserve-attr"),dt=(e,t)=>{let n=t.nodeType;if(n===1){let r=e,s=t,i=r.hasAttribute("data-scope-children");if(r.hasAttribute(Re)&&s.hasAttribute(Re))return e;let o=(t.getAttribute(kn)??"").split(" "),a=(c,u,f)=>{let m=u.hasAttribute(f);return c.hasAttribute(f)!==m&&!o.includes(f)?(c[f]=m,!0):!1},l=!1;if(r instanceof HTMLInputElement&&s instanceof HTMLInputElement&&s.type!=="file"){let c=s.getAttribute("value");r.getAttribute("value")!==c&&!o.includes("value")&&(r.value=c??"",l=!0),l=a(r,s,"checked")||l,a(r,s,"disabled")}else if(r instanceof HTMLTextAreaElement&&s instanceof HTMLTextAreaElement){let c=s.value;r.defaultValue!==c&&(r.value=c,l=!0)}else r instanceof HTMLOptionElement&&s instanceof HTMLOptionElement&&(l=a(r,s,"selected")||l);for(let{name:c,value:u}of s.attributes)r.getAttribute(c)!==u&&!o.includes(c)&&r.setAttribute(c,u);for(let{name:c}of Array.from(r.attributes))!s.hasAttribute(c)&&!o.includes(c)&&r.removeAttribute(c);l&&(r instanceof HTMLOptionElement?r.closest("select"):r)?.dispatchEvent(new Event(ge,{bubbles:!0})),i&&!r.hasAttribute("data-scope-children")&&r.setAttribute("data-scope-children",""),r instanceof HTMLTemplateElement&&s instanceof HTMLTemplateElement?r.innerHTML=s.innerHTML:r.isEqualNode(s)||nn(r,s),i&&r.dispatchEvent(new CustomEvent(ze,{bubbles:!1}))}return(n===8||n===3)&&e.nodeValue!==t.nodeValue&&(e.nodeValue=t.nodeValue),e},en=(e,t)=>{for(let n of t)if(fe.has(n.id)){let r=n;for(;r&&r!==e;){let s=I.get(r);s||(s=new Set,I.set(r,s)),s.add(n.id),r=r.parentElement}}};Se({name:"datastar-patch-signals",apply({error:e},{signals:t,onlyIfMissing:n}){if(typeof t!="string")throw e("PatchSignalsExpectedSignals");let r=typeof n=="string"&&n.trim()==="true";k(ce(t),{ifMissing:r})}});export{D as action,kt as actions,p as attribute,L as beginBatch,_e as computed,w as effect,N as endBatch,V as filtered,oe as getPath,k as mergePatch,R as mergePaths,ne as root,he as signal,H as startPeeking,_ as stopPeeking,Se as watcher}; +//# sourceMappingURL=datastar.js.map diff --git a/app/src/Tests/ViewTests.fs b/app/src/Tests/ViewTests.fs index 28d9feb..feba529 100644 --- a/app/src/Tests/ViewTests.fs +++ b/app/src/Tests/ViewTests.fs @@ -141,15 +141,15 @@ let tests = Expect.isFalse (unsafeHtml.Contains "onclick=") "Expected Notion content not to create an event attribute" } - test "restricts image and background URLs to encoded HTTP resources" { + test "restricts image and background URLs to escaped HTTP resources" { let safeImage = SafeOutput.tryImageAttribute "https://example.com/image.png?a=1&b=2" let unsafeImage = SafeOutput.tryImageAttribute "javascript:alert(1)" let background = SafeOutput.tryBackgroundImageStyle "https://example.com/image.png?value=')" - Expect.equal safeImage (Some "https://example.com/image.png?a=1&b=2") "Expected an encoded HTTPS image URL" + Expect.equal safeImage (Some "https://example.com/image.png?a=1&b=2") "Expected an escaped HTTPS image URL" Expect.isNone unsafeImage "Expected an unsafe image URL scheme to be rejected" Expect.isSome background "Expected an HTTPS background image" - Expect.isFalse (background.Value.Contains "')") "Expected CSS delimiters to be encoded" + Expect.isFalse (background.Value.Contains "value=')") "Expected untrusted CSS delimiters to be encoded" Expect.stringContains background.Value "%27%29" "Expected quote and parenthesis CSS characters to be encoded" } @@ -233,7 +233,7 @@ let tests = let html = Render.toHtmlDocString doc Expect.stringContains html "Andy Meier" "Expected page to render" - Expect.stringContains html "selectedNav: 'nav-home'" "Expected nav signal to render" + Expect.stringContains html "selectedNav: 'nav-home'" "Expected encoded nav signal to render" Expect.stringContains html "cookie-consent-banner" "Expected consent banner" Expect.stringContains html "analytics-consent-title" "Expected consent dialog title" Expect.stringContains html "Optional analytics" "Expected Meier Made-style consent heading" diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 305ea53..23999a0 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -6,23 +6,23 @@ "": { "name": "andymeier-e2e", "devDependencies": { - "@playwright/test": "1.61.0" + "@playwright/test": "1.62.1" } }, "node_modules/@playwright/test": { - "version": "1.61.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.61.0.tgz", - "integrity": "sha512-cKA5B6lpFEMyMGjxF54QihfYpB4FkEGH+qZhtArDEG+wezQAJY8Pq6C7T1SjWz+FFzt3TbyoXBQYk/0292TdJA==", + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.1.tgz", + "integrity": "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.61.0" + "playwright": "1.62.1" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/fsevents": { @@ -41,35 +41,35 @@ } }, "node_modules/playwright": { - "version": "1.61.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.0.tgz", - "integrity": "sha512-Z+7BeeqQPRRzklHsVFP4KTGIyMxKUmfeRA4WisM6G3/XW6nwGeX6fX9qYaDa+CiUqpOkb2f6X3nar05R3kSuJQ==", + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", + "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.61.0" + "playwright-core": "1.62.1" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" }, "optionalDependencies": { "fsevents": "2.3.2" } }, "node_modules/playwright-core": { - "version": "1.61.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.0.tgz", - "integrity": "sha512-caX7TrY3Ml6egyDX0WUcTHDxodl/b51y5wJOdCEA36QviK/s2g081hvmGs8eaE3DWb6NYZQ6BjO/QkNRPenoPA==", + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", + "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", "dev": true, "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" } } } diff --git a/e2e/package.json b/e2e/package.json index 7c57fb1..2f5bd71 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -6,6 +6,6 @@ "test": "playwright test" }, "devDependencies": { - "@playwright/test": "1.61.0" + "@playwright/test": "1.62.1" } } diff --git a/pulumi/package-lock.json b/pulumi/package-lock.json index 02feeb6..17fe52a 100644 --- a/pulumi/package-lock.json +++ b/pulumi/package-lock.json @@ -6,11 +6,11 @@ "": { "name": "andymeier.dev", "dependencies": { - "@pulumi/cloudflare": "^6.14.0", - "@pulumi/docker-build": "^0.0.15", - "@pulumi/gcp": "^9.18.0", + "@pulumi/cloudflare": "^6.19.0", + "@pulumi/docker-build": "^0.0.22", + "@pulumi/gcp": "^9.33.0", "@pulumi/kubernetes": "^4.28.0", - "@pulumi/pulumi": "^3.229.0", + "@pulumi/pulumi": "^3.256.0", "@pulumi/random": "^4.19.2" }, "devDependencies": { @@ -1442,18 +1442,18 @@ "license": "BSD-3-Clause" }, "node_modules/@pulumi/cloudflare": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@pulumi/cloudflare/-/cloudflare-6.18.0.tgz", - "integrity": "sha512-L49neVgL7crzUKr+lfNYAmooqnmSGPg6TN8+PXouxyjojjwMdRM3WLNPkUxYu3vqr0WhD86afqdujee1Kz4R9w==", + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/@pulumi/cloudflare/-/cloudflare-6.19.0.tgz", + "integrity": "sha512-AP76ceRwCIws362nm7UpfvDvzI4zPaGThli0i3qsKqjektk1qNapyflA9g0LvpI2e6VEWAdTbkIK7WSucg00Sg==", "license": "Apache-2.0", "dependencies": { "@pulumi/pulumi": "^3.142.0" } }, "node_modules/@pulumi/docker-build": { - "version": "0.0.15", - "resolved": "https://registry.npmjs.org/@pulumi/docker-build/-/docker-build-0.0.15.tgz", - "integrity": "sha512-abtz4zCbePBkpj73M7mJWqXktM9muEAUOxRu8PKErbsqv5M3NfALCMULsDxA1a9vEImHa6ZC9rAe1liXbsinFg==", + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/@pulumi/docker-build/-/docker-build-0.0.22.tgz", + "integrity": "sha512-DcnwoDv7kBM6MBhuEfkiATDwKDqGCNPICxUt7gbYSdpb/UuT+6K7pNMQu7mCNZV7feqZh9EJ3P20UXCq1R+YQg==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -1461,9 +1461,9 @@ } }, "node_modules/@pulumi/gcp": { - "version": "9.32.1", - "resolved": "https://registry.npmjs.org/@pulumi/gcp/-/gcp-9.32.1.tgz", - "integrity": "sha512-4VCp/+lI995enybi0X8n6qS6OkwlZIdUAQg/qnqLJ/TK2+B3hjidcHAMk0dn2zhN/wVMJsXNC4OdnsMcWfPEpQ==", + "version": "9.33.0", + "resolved": "https://registry.npmjs.org/@pulumi/gcp/-/gcp-9.33.0.tgz", + "integrity": "sha512-luGcIWLoluIOlipW5lIXkSv2sS0MbwgHAnbIoLGTE5Y6z9U5q+G2s5tKAySPQkmFskwYEPqDgH6R1ey4crHB7A==", "license": "Apache-2.0", "dependencies": { "@npmcli/package-json": "^6.2.0", @@ -1556,9 +1556,9 @@ } }, "node_modules/@pulumi/pulumi": { - "version": "3.255.0", - "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.255.0.tgz", - "integrity": "sha512-nvGpp6ebUpkSLn0UxqiTo5xlTYRqxp9OzMGgixIW2kFu0CQ3VgUtIOoKkEzU2ftVNY44utwDh+CKXQlK+bPmuw==", + "version": "3.256.0", + "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.256.0.tgz", + "integrity": "sha512-EK1TQieOmxTxbIpX5EKTPpC1WYappH3ASEZzN6Q9gs7rZjuZCATXI9Am8nszmlRdtPlAiVSW8NfQNKCnaNk34A==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.10.1", diff --git a/pulumi/package.json b/pulumi/package.json index 3315e81..8c63f3e 100644 --- a/pulumi/package.json +++ b/pulumi/package.json @@ -9,11 +9,11 @@ "typescript": "^5.9.3" }, "dependencies": { - "@pulumi/cloudflare": "^6.14.0", - "@pulumi/docker-build": "^0.0.15", - "@pulumi/gcp": "^9.18.0", + "@pulumi/cloudflare": "^6.19.0", + "@pulumi/docker-build": "^0.0.22", + "@pulumi/gcp": "^9.33.0", "@pulumi/kubernetes": "^4.28.0", - "@pulumi/pulumi": "^3.229.0", + "@pulumi/pulumi": "^3.256.0", "@pulumi/random": "^4.19.2" } } diff --git a/pulumi/src/config.ts b/pulumi/src/config.ts index 8cb38c2..176af7a 100644 --- a/pulumi/src/config.ts +++ b/pulumi/src/config.ts @@ -17,7 +17,7 @@ const rawCloudflareConfig = new pulumi.Config('cloudflare') export const cloudflareConfig = { accountId: rawCloudflareConfig.require('accountId'), apiToken: rawCloudflareConfig.requireSecret('apiToken'), - cloudflaredVersion: '2026.2.0' + cloudflaredVersion: '2026.7.3' } const rawK8sConfig = new pulumi.Config('k8s')