From b762139243a7c65d9798d77e90899c5e43eb246b Mon Sep 17 00:00:00 2001 From: Amatsugu Date: Sat, 17 Jan 2026 18:08:16 -0500 Subject: [PATCH] configure grpc --- .dockerignore | 30 + AZKi Server/Protos/greet.proto | 21 - AZKi Server/Services/GreeterService.cs | 22 - AZKiServer/.dockerignore | 1 + {AZKi Server => AZKiServer}/.gitignore | 0 .../AZKi Server.csproj | 2 +- .../Models/BsonIdModelBinderProvider.cs | 0 .../Models/MediaEntry.cs | 5 +- {AZKi Server => AZKiServer}/Program.cs | 0 .../Properties/launchSettings.json | 0 AZKiServer/Protos/azki.proto | 12 + AZKiServer/Protos/types.proto | 33 + AZKiServer/RPC/ConversionExtensions.cs | 41 ++ AZKiServer/Services/AZKiRpcService.cs | 20 + .../Services/FileScannerService.cs | 0 .../Services/MediaService.cs | 0 .../Utilz/DateUtils.cs | 0 .../appsettings.Development.json | 0 {AZKi Server => AZKiServer}/appsettings.json | 0 Dockerfile | 65 ++ azki.sln | 2 +- client/.dockerignore | 6 + client/Cargo.lock | 619 +++++------------- client/Cargo.toml | 16 +- client/build.rs | 17 +- client/src/main.rs | 6 + client/src/rpc.rs | 49 ++ 27 files changed, 467 insertions(+), 500 deletions(-) create mode 100644 .dockerignore delete mode 100644 AZKi Server/Protos/greet.proto delete mode 100644 AZKi Server/Services/GreeterService.cs create mode 100644 AZKiServer/.dockerignore rename {AZKi Server => AZKiServer}/.gitignore (100%) rename {AZKi Server => AZKiServer}/AZKi Server.csproj (85%) rename {AZKi Server => AZKiServer}/Models/BsonIdModelBinderProvider.cs (100%) rename {AZKi Server => AZKiServer}/Models/MediaEntry.cs (89%) rename {AZKi Server => AZKiServer}/Program.cs (100%) rename {AZKi Server => AZKiServer}/Properties/launchSettings.json (100%) create mode 100644 AZKiServer/Protos/azki.proto create mode 100644 AZKiServer/Protos/types.proto create mode 100644 AZKiServer/RPC/ConversionExtensions.cs create mode 100644 AZKiServer/Services/AZKiRpcService.cs rename {AZKi Server => AZKiServer}/Services/FileScannerService.cs (100%) rename {AZKi Server => AZKiServer}/Services/MediaService.cs (100%) rename {AZKi Server => AZKiServer}/Utilz/DateUtils.cs (100%) rename {AZKi Server => AZKiServer}/appsettings.Development.json (100%) rename {AZKi Server => AZKiServer}/appsettings.json (100%) create mode 100644 Dockerfile create mode 100644 client/.dockerignore create mode 100644 client/src/rpc.rs diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4d72b4f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,30 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md +!**/.gitignore +!.git/HEAD +!.git/config +!.git/packed-refs +!.git/refs/heads/** \ No newline at end of file diff --git a/AZKi Server/Protos/greet.proto b/AZKi Server/Protos/greet.proto deleted file mode 100644 index 15eb097..0000000 --- a/AZKi Server/Protos/greet.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -option csharp_namespace = "AZKi_Server"; - -package greet; - -// The greeting service definition. -service Greeter { - // Sends a greeting - rpc SayHello (HelloRequest) returns (HelloReply); -} - -// The request message containing the user's name. -message HelloRequest { - string name = 1; -} - -// The response message containing the greetings. -message HelloReply { - string message = 1; -} diff --git a/AZKi Server/Services/GreeterService.cs b/AZKi Server/Services/GreeterService.cs deleted file mode 100644 index 8a6a70e..0000000 --- a/AZKi Server/Services/GreeterService.cs +++ /dev/null @@ -1,22 +0,0 @@ -using AZKiServer; -using Grpc.Core; - -namespace AZKiServer.Services -{ - public class GreeterService : Greeter.GreeterBase - { - private readonly ILogger _logger; - public GreeterService(ILogger logger) - { - _logger = logger; - } - - public override Task SayHello(HelloRequest request, ServerCallContext context) - { - return Task.FromResult(new HelloReply - { - Message = "Hello " + request.Name - }); - } - } -} diff --git a/AZKiServer/.dockerignore b/AZKiServer/.dockerignore new file mode 100644 index 0000000..f6def4e --- /dev/null +++ b/AZKiServer/.dockerignore @@ -0,0 +1 @@ +wwwroot diff --git a/AZKi Server/.gitignore b/AZKiServer/.gitignore similarity index 100% rename from AZKi Server/.gitignore rename to AZKiServer/.gitignore diff --git a/AZKi Server/AZKi Server.csproj b/AZKiServer/AZKi Server.csproj similarity index 85% rename from AZKi Server/AZKi Server.csproj rename to AZKiServer/AZKi Server.csproj index cdc8627..0c9054a 100644 --- a/AZKi Server/AZKi Server.csproj +++ b/AZKiServer/AZKi Server.csproj @@ -8,7 +8,7 @@ - + diff --git a/AZKi Server/Models/BsonIdModelBinderProvider.cs b/AZKiServer/Models/BsonIdModelBinderProvider.cs similarity index 100% rename from AZKi Server/Models/BsonIdModelBinderProvider.cs rename to AZKiServer/Models/BsonIdModelBinderProvider.cs diff --git a/AZKi Server/Models/MediaEntry.cs b/AZKiServer/Models/MediaEntry.cs similarity index 89% rename from AZKi Server/Models/MediaEntry.cs rename to AZKiServer/Models/MediaEntry.cs index fe93294..b1f51b9 100644 --- a/AZKi Server/Models/MediaEntry.cs +++ b/AZKiServer/Models/MediaEntry.cs @@ -12,10 +12,11 @@ public partial class MediaEntry { [BsonId] public ObjectId Id { get; set; } + public int Version { get; set; } public MediaType Type { get; set; } public required string Filepath { get; set; } public DateTime Date { get; set; } - public byte CameraId { get; set; } + public int CameraId { get; set; } public static Maybe Parse(string relativePath) { @@ -34,7 +35,7 @@ public partial class MediaEntry return new MediaEntry { - CameraId = byte.Parse(cam.Value), + CameraId = int.Parse(cam.Value), Filepath = relativePath, Date = ParseDate(date.Value), Type = ext.Value switch diff --git a/AZKi Server/Program.cs b/AZKiServer/Program.cs similarity index 100% rename from AZKi Server/Program.cs rename to AZKiServer/Program.cs diff --git a/AZKi Server/Properties/launchSettings.json b/AZKiServer/Properties/launchSettings.json similarity index 100% rename from AZKi Server/Properties/launchSettings.json rename to AZKiServer/Properties/launchSettings.json diff --git a/AZKiServer/Protos/azki.proto b/AZKiServer/Protos/azki.proto new file mode 100644 index 0000000..6673434 --- /dev/null +++ b/AZKiServer/Protos/azki.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +option csharp_namespace = "AZKiServer.RPC"; +package azki; + +import "google/protobuf/empty.proto"; +import "Protos/types.proto"; + + +service AZKi{ + rpc GetMediaEntriesInRange(MediaRangeRequest) returns (MediaList); +} \ No newline at end of file diff --git a/AZKiServer/Protos/types.proto b/AZKiServer/Protos/types.proto new file mode 100644 index 0000000..8c30a20 --- /dev/null +++ b/AZKiServer/Protos/types.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +option csharp_namespace = "AZKiServer.RPC"; +package azki; + +import "google/protobuf/timestamp.proto"; +import "google/protobuf/empty.proto"; + +enum MediaType { + None = 0; + Image = 1; + Video = 2; + All = 3; +} + +message MediaList { + repeated MediaEntry entries = 1; +} + +message MediaRangeRequest{ + MediaType type = 1; + google.protobuf.Timestamp from = 2; + google.protobuf.Timestamp to = 3; +} + +message MediaEntry { + int32 version = 1; + string id = 2; + MediaType type = 3; + string filePath = 4; + int32 cameraId = 5; + google.protobuf.Timestamp date = 6; +} \ No newline at end of file diff --git a/AZKiServer/RPC/ConversionExtensions.cs b/AZKiServer/RPC/ConversionExtensions.cs new file mode 100644 index 0000000..76c111f --- /dev/null +++ b/AZKiServer/RPC/ConversionExtensions.cs @@ -0,0 +1,41 @@ +namespace AZKiServer.RPC; + +public static class ConversionExtensions +{ + public static Models.MediaType FromRpc(this MediaType type) + { + return type switch + { + MediaType.None => Models.MediaType.None, + MediaType.Image => Models.MediaType.Image, + MediaType.Video => Models.MediaType.Video, + MediaType.All => Models.MediaType.All, + _ => throw new NotSupportedException() + }; + } + + public static MediaType ToRpc(this Models.MediaType type) + { + return type switch + { + Models.MediaType.None => MediaType.None, + Models.MediaType.Image => MediaType.Image, + Models.MediaType.Video => MediaType.Video, + Models.MediaType.All => MediaType.All, + _ => throw new NotSupportedException() + }; + } + + public static MediaEntry ToRpc(this Models.MediaEntry entry) + { + return new MediaEntry + { + Version = entry.Version, + CameraId = entry.CameraId, + Date = Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(entry.Date), + FilePath = entry.Filepath, + Id = entry.Id.ToString(), + Type = entry.Type.ToRpc() + }; + } +} diff --git a/AZKiServer/Services/AZKiRpcService.cs b/AZKiServer/Services/AZKiRpcService.cs new file mode 100644 index 0000000..5bd7f5d --- /dev/null +++ b/AZKiServer/Services/AZKiRpcService.cs @@ -0,0 +1,20 @@ +using AZKiServer.Models; +using AZKiServer.RPC; + +using Google.Protobuf; + +using Grpc.Core; + +namespace AZKiServer.Services; +public class AZKiRpcService(MediaService mediaService) : RPC.AZKi.AZKiBase +{ + public override async Task GetMediaEntriesInRange(MediaRangeRequest request, ServerCallContext context) + { + var from = request.From.ToDateTime(); + var to = request.To.ToDateTime(); + var items = await mediaService.GetEntriesInRangeAsync(request.Type.FromRpc(), from, to); + var result = new MediaList(); + result.Entries.AddRange(items.Select(e => e.ToRpc())); + return result; + } +} diff --git a/AZKi Server/Services/FileScannerService.cs b/AZKiServer/Services/FileScannerService.cs similarity index 100% rename from AZKi Server/Services/FileScannerService.cs rename to AZKiServer/Services/FileScannerService.cs diff --git a/AZKi Server/Services/MediaService.cs b/AZKiServer/Services/MediaService.cs similarity index 100% rename from AZKi Server/Services/MediaService.cs rename to AZKiServer/Services/MediaService.cs diff --git a/AZKi Server/Utilz/DateUtils.cs b/AZKiServer/Utilz/DateUtils.cs similarity index 100% rename from AZKi Server/Utilz/DateUtils.cs rename to AZKiServer/Utilz/DateUtils.cs diff --git a/AZKi Server/appsettings.Development.json b/AZKiServer/appsettings.Development.json similarity index 100% rename from AZKi Server/appsettings.Development.json rename to AZKiServer/appsettings.Development.json diff --git a/AZKi Server/appsettings.json b/AZKiServer/appsettings.json similarity index 100% rename from AZKi Server/appsettings.json rename to AZKiServer/appsettings.json diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6e45262 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,65 @@ +# Client Side build - prep deps +FROM rust:1-trixie AS chef +RUN rustup target add wasm32-unknown-unknown +RUN cargo install cargo-chef +WORKDIR /app + +FROM chef AS planner +COPY . . +WORKDIR /app/client +RUN cargo chef prepare --recipe-path recipe.json + +FROM chef AS client-builder +WORKDIR /app/client +COPY --from=planner /app/client/recipe.json recipe.json +RUN cargo chef cook --release --recipe-path recipe.json +COPY /client /app/client +COPY /AZKiServer/Protos /app/AZKiServer/Protos + +# Install Protobuf +RUN apt update +RUN apt install -y protobuf-compiler libprotobuf-dev ffmpeg + +# Install `dx` +RUN curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash +RUN cargo binstall dioxus-cli --root /.cargo -y --force +ENV PATH="/.cargo/bin:$PATH" +ARG VERSION +ENV APP_VERSION=$VERSION +# Create the final bundle folder. Bundle always executes in release mode with optimizations enabled +RUN dx bundle --release --platform web + +# Server Build +# This stage is used when running from VS in fast mode (Default for Debug configuration) +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base +RUN apt-get update && apt-get install -y ffmpeg #libvips libvips-tools +USER $APP_UID +WORKDIR /app +EXPOSE 8080 +EXPOSE 8081 + +# This stage is used to build the service project +FROM mcr.microsoft.com/dotnet/sdk:9.0-noble AS build +ARG BUILD_CONFIGURATION=Release +WORKDIR /src +COPY ["AZKiServer/AZKi Server.csproj", "AZKiServer/"] +RUN dotnet restore "./AZKiServer/AZKi Server.csproj" +COPY . . +# Copy Built bundle from client builder +COPY --from=client-builder /app/client/target/dx/azki-client/release/web/public /src/AZKiServer/wwwroot +WORKDIR "/src/AZKiServer" +# RUN dotnet build "./AZKiServer.csproj" -c $BUILD_CONFIGURATION #-o /app/build + +# This stage is used to publish the service project to be copied to the final stage +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./AZKi Server.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + +# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration) +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ARG VERSION + +ENV APP_VERSION=$VERSION +ENTRYPOINT ["dotnet", "AZKiServer.dll"] diff --git a/azki.sln b/azki.sln index 903be40..4c4d238 100644 --- a/azki.sln +++ b/azki.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.14.36908.2 d17.14 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AZKi Server", "AZKi Server\AZKi Server.csproj", "{15810AAC-9BCB-42AD-90B3-F1AA8E134F82}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AZKi Server", "AZKiServer\AZKi Server.csproj", "{15810AAC-9BCB-42AD-90B3-F1AA8E134F82}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/client/.dockerignore b/client/.dockerignore new file mode 100644 index 0000000..ae487cd --- /dev/null +++ b/client/.dockerignore @@ -0,0 +1,6 @@ +**/target +**/dist +LICENSES +LICENSE +temp +README.md \ No newline at end of file diff --git a/client/Cargo.lock b/client/Cargo.lock index 4d1184e..412a8ba 100644 --- a/client/Cargo.lock +++ b/client/Cargo.lock @@ -23,50 +23,6 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" -[[package]] -name = "ashpd" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cbdf310d77fd3aaee6ea2093db7011dc2d35d2eb3481e5607f1f8d942ed99df" -dependencies = [ - "enumflags2", - "futures-channel", - "futures-util", - "rand 0.9.2", - "raw-window-handle 0.6.2", - "serde", - "serde_repr", - "tokio", - "url", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "zbus", -] - -[[package]] -name = "async-broadcast" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - [[package]] name = "async-stream" version = "0.3.6" @@ -200,16 +156,19 @@ dependencies = [ ] [[package]] -name = "azki" +name = "azki-client" version = "0.1.0" dependencies = [ "dioxus", "dotenv", "prost", + "prost-types", "serde", "serde_repr", + "tokio", "tonic", - "tonic-build", + "tonic-prost", + "tonic-prost-build", "tonic-web-wasm-client", "web-sys", ] @@ -436,22 +395,23 @@ dependencies = [ "memchr", ] -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "const-serialize" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad7154afa56de2f290e3c82c2c6dc4f5b282b6870903f56ef3509aba95866edc" dependencies = [ - "const-serialize-macro", + "const-serialize-macro 0.7.2", +] + +[[package]] +name = "const-serialize" +version = "0.8.0-alpha.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e42cd5aabba86f128b3763da1fec1491c0f728ce99245062cd49b6f9e6d235b" +dependencies = [ + "const-serialize 0.7.2", + "const-serialize-macro 0.8.0-alpha.0", "serde", ] @@ -466,6 +426,17 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "const-serialize-macro" +version = "0.8.0-alpha.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42571ed01eb46d2e1adcf99c8ca576f081e46f2623d13500eba70d1d99a4c439" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "const-str" version = "0.7.1" @@ -777,9 +748,9 @@ dependencies = [ [[package]] name = "dioxus" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a115f9dbe5900c6044ee6a791e1b160c29989c6a8721eec099e01a964e5dae4" +checksum = "92b583b48ac77158495e6678fe3a2b5954fc8866fc04cb9695dd146e88bc329d" dependencies = [ "dioxus-asset-resolver", "dioxus-cli-config", @@ -806,9 +777,9 @@ dependencies = [ [[package]] name = "dioxus-asset-resolver" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6851ae49ba3988f1b77f6ef826eb142e811602129841c24bf5a4e103708d9844" +checksum = "c0161af1d3cfc8ff31503ff1b7ee0068c97771fc38d0cc6566e23483142ddf4f" dependencies = [ "dioxus-cli-config", "http", @@ -827,18 +798,18 @@ dependencies = [ [[package]] name = "dioxus-cli-config" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e9d9da2e7334fdae5d77e3989207aa549062f74ff1ca2171393bbdd7fda90" +checksum = "ccd67ab405e1915a47df9769cd5408545d1b559d5c01ce7a0f442caef520d1f3" dependencies = [ "wasm-bindgen", ] [[package]] name = "dioxus-config-macro" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd56be5ea6c9f416b25e9e3adc910c02127be75b6d1ecd567661f31920b27ba" +checksum = "f040ec7c41aa5428283f56bb0670afba9631bfe3ffd885f4814807f12c8c9d91" dependencies = [ "proc-macro2", "quote", @@ -846,15 +817,15 @@ dependencies = [ [[package]] name = "dioxus-config-macros" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c49327465c2d434d00fb4c86bd35ae72155b479622e09352b950d9ab4807bf23" +checksum = "10c41b47b55a433b61f7c12327c85ba650572bacbcc42c342ba2e87a57975264" [[package]] name = "dioxus-core" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7400cbd21a98e585a13f8c29574da9b8afb2fd343f712618042b6c71761f0933" +checksum = "b389b0e3cc01c7da292ad9b884b088835fdd1671d45fbd2f737506152b22eef0" dependencies = [ "anyhow", "const_format", @@ -874,9 +845,9 @@ dependencies = [ [[package]] name = "dioxus-core-macro" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51c0eb7eb76dd5a0b9a116d94d29ca78924a1ed1fcb7ea072eda5045d3ac056" +checksum = "6a82d65f0024fc86f01911a16156d280eea583be5a82a3bed85e7e8e4194302d" dependencies = [ "convert_case 0.8.0", "dioxus-rsx", @@ -887,15 +858,15 @@ dependencies = [ [[package]] name = "dioxus-core-types" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0652ab5f9c2c32261d44a3155debbfd909ed03d03434d7f70f5a796bf255c519" +checksum = "bfc4b8cdc440a55c17355542fc2089d97949bba674255d84cac77805e1db8c9f" [[package]] name = "dioxus-desktop" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b24aa7e4aa87fce202c5e67d560cddd9ed67ad533f16b7d922916c04993766ff" +checksum = "7e6ec66749d1556636c5b4f661495565c155a7f78a46d4d007d7478c6bdc288c" dependencies = [ "async-trait", "base64", @@ -948,9 +919,9 @@ dependencies = [ [[package]] name = "dioxus-devtools" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9748128bcd102b10e58c765939807053ccab542206a939b8bab228077455c259" +checksum = "dcf89488bad8fb0f18b9086ee2db01f95f709801c10c68be42691a36378a0f2d" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -966,9 +937,9 @@ dependencies = [ [[package]] name = "dioxus-devtools-types" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48540ca8a0ab1ec81cd4db35f0c9713d43b158647fc1dcb0d79965fc3b41d96c" +checksum = "6e7381d9d7d0a0f66b9d5082d584853c3d53be21d34007073daca98ddf26fc4d" dependencies = [ "dioxus-core", "serde", @@ -977,9 +948,9 @@ dependencies = [ [[package]] name = "dioxus-document" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501a189b391d091c9aa02c05f5b25f5d0d17fa0e1016e000b0fdbb073d77cd6a" +checksum = "6ba0aeeff26d9d06441f59fd8d7f4f76098ba30ca9728e047c94486161185ceb" dependencies = [ "dioxus-core", "dioxus-core-macro", @@ -996,9 +967,9 @@ dependencies = [ [[package]] name = "dioxus-fullstack" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54150804265defdb21a6f2d8914a45316a1e7fb70ab22c30cf836e8fe2f8081b" +checksum = "7db1f8b70338072ec408b48d09c96559cf071f87847465d8161294197504c498" dependencies = [ "anyhow", "async-stream", @@ -1053,9 +1024,9 @@ dependencies = [ [[package]] name = "dioxus-fullstack-core" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a9be2ef4d701520eefef284d218fb35b159dccd6bccc02b5bad42945e2599d" +checksum = "cda8b152e85121243741b9d5f2a3d8cb3c47a7b2299e902f98b6a7719915b0a2" dependencies = [ "anyhow", "axum-core", @@ -1081,9 +1052,9 @@ dependencies = [ [[package]] name = "dioxus-fullstack-macro" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31ea4451fe8c9d2af24fb718a94966d5fd7e11325777e5b5a59085c5c85e5fb" +checksum = "255104d4a4f278f1a8482fa30536c91d22260c561c954b753e72987df8d65b2e" dependencies = [ "const_format", "convert_case 0.8.0", @@ -1095,9 +1066,9 @@ dependencies = [ [[package]] name = "dioxus-history" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55d704b3ba9504cb3c9cde49499b75546d1faaff2736f4c368aca6c061c48ac3" +checksum = "8d00ba43bfe6e5ca226fef6128f240ca970bea73cac0462416188026360ccdcf" dependencies = [ "dioxus-core", "tracing", @@ -1105,9 +1076,9 @@ dependencies = [ [[package]] name = "dioxus-hooks" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79c6d68be372eca8186a1c57ec49be67a6ea46022150b5e85ab6a6acde52d272" +checksum = "dab2da4f038c33cb38caa37ffc3f5d6dfbc018f05da35b238210a533bb075823" dependencies = [ "dioxus-core", "dioxus-signals", @@ -1121,9 +1092,9 @@ dependencies = [ [[package]] name = "dioxus-html" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3aa87ecfa0f38ec286be25789a7f2d6c30778111f1fbff563da4bae41d171496" +checksum = "eded5fa6d2e677b7442a93f4228bf3c0ad2597a8bd3292cae50c869d015f3a99" dependencies = [ "async-trait", "bytes", @@ -1148,9 +1119,9 @@ dependencies = [ [[package]] name = "dioxus-html-internal-macro" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49301d0e389378e8070b8b704110339a0d3358efad9f5ad483ffab3a8d406dae" +checksum = "45462ab85fe059a36841508d40545109fd0e25855012d22583a61908eb5cd02a" dependencies = [ "convert_case 0.8.0", "proc-macro2", @@ -1160,9 +1131,9 @@ dependencies = [ [[package]] name = "dioxus-interpreter-js" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5437a89d3ef7edfebc0f10acb065f1709cb7ffb678e3a4bb1416706d71f7c67" +checksum = "a42a7f73ad32a5054bd8c1014f4ac78cca3b7f6889210ee2b57ea31b33b6d32f" dependencies = [ "dioxus-core", "dioxus-core-types", @@ -1180,9 +1151,9 @@ dependencies = [ [[package]] name = "dioxus-logger" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b25ebfbc193cebcf5af5e19b8ee7c6adee486fbd1c12f11aea058b464da16f9" +checksum = "f1eeab114cb009d9e6b85ea10639a18cfc54bb342f3b837770b004c4daeb89c2" dependencies = [ "dioxus-cli-config", "tracing", @@ -1192,9 +1163,9 @@ dependencies = [ [[package]] name = "dioxus-router" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18282604175f38d8c9291946ad6b34899657e47aef994fbbe6defb501a000f33" +checksum = "1d5b31f9e27231389bf5a117b7074d22d8c58358b484a2558e56fbab20e64ca4" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -1212,9 +1183,9 @@ dependencies = [ [[package]] name = "dioxus-router-macro" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47340b339c2c3f042b190f541b7241e2547b2e703f813d34ea24b963330c6757" +checksum = "838b9b441a95da62b39cae4defd240b5ebb0ec9f2daea1126099e00a838dc86f" dependencies = [ "base16", "digest", @@ -1227,9 +1198,9 @@ dependencies = [ [[package]] name = "dioxus-rsx" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d97c02689beff55767ba5f6e185ffd204c6a193e372f0fead8a3722c6f7eea" +checksum = "53128858f0ccca9de54292a4d48409fda1df75fd5012c6243f664042f0225d68" dependencies = [ "proc-macro2", "proc-macro2-diagnostics", @@ -1240,9 +1211,9 @@ dependencies = [ [[package]] name = "dioxus-signals" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27fc4df7a31a7f02e5a0b40884bb66ee165226a05d75fce03baa44029e438762" +checksum = "2f48020bc23bc9766e7cce986c0fd6de9af0b8cbfd432652ec6b1094439c1ec6" dependencies = [ "dioxus-core", "futures-channel", @@ -1256,9 +1227,9 @@ dependencies = [ [[package]] name = "dioxus-stores" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2dec3cd677078824a733de25ddbe8e987cfc8d98aec29b7d199e1fdb8452b96" +checksum = "77aaa9ac56d781bb506cf3c0d23bea96b768064b89fe50d3b4d4659cc6bd8058" dependencies = [ "dioxus-core", "dioxus-signals", @@ -1268,9 +1239,9 @@ dependencies = [ [[package]] name = "dioxus-stores-macro" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b7f085e374aaaa78403227b9bd83675c4078388d41a41b67dfbe4aa0bb64d5" +checksum = "5b1a728622e7b63db45774f75e71504335dd4e6115b235bbcff272980499493a" dependencies = [ "convert_case 0.8.0", "proc-macro2", @@ -1280,9 +1251,9 @@ dependencies = [ [[package]] name = "dioxus-web" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "315009f3a77c3c813415b3b8a8ea62a4d7a32dde9a666664b30862d4386e8456" +checksum = "3b33fe739fed4e8143dac222a9153593f8e2451662ce8fc4c9d167a9d6ec0923" dependencies = [ "dioxus-cli-config", "dioxus-core", @@ -1361,15 +1332,6 @@ dependencies = [ "syn 2.0.114", ] -[[package]] -name = "dlib" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" -dependencies = [ - "libloading 0.8.9", -] - [[package]] name = "dlopen2" version = "0.8.2" @@ -1408,12 +1370,6 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" -[[package]] -name = "downcast-rs" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" - [[package]] name = "dpi" version = "0.1.2" @@ -1456,33 +1412,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "endi" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" - -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - [[package]] name = "enumset" version = "1.1.10" @@ -1530,27 +1459,6 @@ dependencies = [ "serde", ] -[[package]] -name = "event-listener" -version = "5.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - [[package]] name = "fastrand" version = "2.3.0" @@ -1604,6 +1512,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -1713,19 +1627,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" -[[package]] -name = "futures-lite" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - [[package]] name = "futures-macro" version = "0.3.31" @@ -1863,9 +1764,9 @@ dependencies = [ [[package]] name = "generational-box" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e658d10252a15200ca4a1c67c7180fc0baffa3f92869bbd903025daf6f70fd65" +checksum = "cc4ed190b9de8e734d47a70be59b1e7588b9e8e0d0036e332f4c014e8aed1bc5" dependencies = [ "parking_lot", "tracing", @@ -2145,6 +2046,15 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + [[package]] name = "hashbrown" version = "0.16.1" @@ -2187,12 +2097,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - [[package]] name = "html5ever" version = "0.29.1" @@ -2427,7 +2331,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.16.1", ] [[package]] @@ -2559,9 +2463,9 @@ dependencies = [ [[package]] name = "lazy-js-bundle" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21972afec4627b7ba0de60b5269585b5ac2f56d559b0696f57eee6daf8a51b68" +checksum = "c7b88b715ab1496c6e6b8f5e927be961c4235196121b6ae59bcb51077a21dd36" [[package]] name = "lazy_static" @@ -2721,32 +2625,35 @@ dependencies = [ [[package]] name = "manganis" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97c63ae68d25457a579b7714806088c5cb44c536cf624a53a17184878f9f0bcd" +checksum = "6cce7d688848bf9d034168513b9a2ffbfe5f61df2ff14ae15e6cfc866efdd344" dependencies = [ - "const-serialize", + "const-serialize 0.7.2", + "const-serialize 0.8.0-alpha.0", "manganis-core", "manganis-macro", ] [[package]] name = "manganis-core" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d071660b149f985cbab8b23f2004ea6dd5cf947b63a0843f0e2f46e6af7229" +checksum = "84ce917b978268fe8a7db49e216343ec7c8f471f7e686feb70940d67293f19d4" dependencies = [ - "const-serialize", + "const-serialize 0.7.2", + "const-serialize 0.8.0-alpha.0", "dioxus-cli-config", "dioxus-core-types", "serde", + "winnow 0.7.14", ] [[package]] name = "manganis-macro" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9793d1d33778245b4240c330a8f575d208ce077c7e7bab1c79064252ddd4a162" +checksum = "ad513e990f7c0bca86aa68659a7a3dc4c705572ed4c22fd6af32ccf261334cc2" dependencies = [ "dunce", "macro-string", @@ -3183,16 +3090,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - [[package]] name = "pango" version = "0.18.3" @@ -3218,12 +3115,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - [[package]] name = "parking_lot" version = "0.12.5" @@ -3255,11 +3146,12 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "petgraph" -version = "0.7.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", + "hashbrown 0.15.5", "indexmap", ] @@ -3562,9 +3454,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", "prost-derive", @@ -3572,19 +3464,20 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" +checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" dependencies = [ "heck 0.5.0", "itertools", "log", "multimap", - "once_cell", "petgraph", "prettyplease", "prost", "prost-types", + "pulldown-cmark", + "pulldown-cmark-to-cmark", "regex", "syn 2.0.114", "tempfile", @@ -3592,9 +3485,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", "itertools", @@ -3605,9 +3498,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" dependencies = [ "prost", ] @@ -3629,12 +3522,23 @@ dependencies = [ ] [[package]] -name = "quick-xml" -version = "0.38.4" +name = "pulldown-cmark" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0" dependencies = [ + "bitflags 2.10.0", "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50793def1b900256624a709439404384204a5dc3a6ec580281bfaac35e882e90" +dependencies = [ + "pulldown-cmark", ] [[package]] @@ -3924,26 +3828,26 @@ dependencies = [ [[package]] name = "rfd" -version = "0.15.4" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed" +checksum = "20dafead71c16a34e1ff357ddefc8afc11e7d51d6d2b9fbd07eaa48e3e540220" dependencies = [ - "ashpd", "block2", "dispatch2", "js-sys", + "libc", "log", "objc2", "objc2-app-kit", "objc2-core-foundation", "objc2-foundation", + "percent-encoding", "pollster", "raw-window-handle 0.6.2", - "urlencoding", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4059,12 +3963,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" @@ -4446,9 +4344,9 @@ dependencies = [ [[package]] name = "subsecond" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c09bc2c9ef0381b403ab8b58122961cb83266d16b1f55f9486d5857ba4a9ae26" +checksum = "8438668e545834d795d04c4335aafc332ce046106521a29f0a5c6501de34187c" dependencies = [ "js-sys", "libc", @@ -4465,9 +4363,9 @@ dependencies = [ [[package]] name = "subsecond-types" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07aa455c66ddfdbb51507537402b961e027846468954ef8d974bce65dff9eb0" +checksum = "1e72f747606fc19fe81d6c59e491af93ed7dcbcb6aad9d1d18b05129914ec298" dependencies = [ "serde", ] @@ -4730,10 +4628,8 @@ dependencies = [ "libc", "mio", "pin-project-lite", - "signal-hook-registry", "socket2", "tokio-macros", - "tracing", "windows-sys 0.61.2", ] @@ -4860,9 +4756,9 @@ dependencies = [ [[package]] name = "tonic" -version = "0.13.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" +checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" dependencies = [ "async-trait", "base64", @@ -4872,7 +4768,7 @@ dependencies = [ "http-body-util", "percent-encoding", "pin-project", - "prost", + "sync_wrapper", "tokio-stream", "tower-layer", "tower-service", @@ -4881,9 +4777,32 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.13.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac6f67be712d12f0b41328db3137e0d0757645d8904b4cb7d51cd9c2279e847" +checksum = "4c40aaccc9f9eccf2cd82ebc111adc13030d23e887244bc9cfa5d1d636049de3" +dependencies = [ + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "tonic-prost" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" +dependencies = [ + "bytes", + "prost", + "tonic", +] + +[[package]] +name = "tonic-prost-build" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4a16cba4043dc3ff43fcb3f96b4c5c154c64cbd18ca8dce2ab2c6a451d058a2" dependencies = [ "prettyplease", "proc-macro2", @@ -4891,13 +4810,15 @@ dependencies = [ "prost-types", "quote", "syn 2.0.114", + "tempfile", + "tonic-build", ] [[package]] name = "tonic-web-wasm-client" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66e3bb7acca55e6790354be650f4042d418fcf8e2bc42ac382348f2b6bf057e5" +checksum = "898cd44be5e23e59d2956056538f1d6b3c5336629d384ffd2d92e76f87fb98ff" dependencies = [ "base64", "byteorder", @@ -5072,17 +4993,6 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" -[[package]] -name = "uds_windows" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" -dependencies = [ - "memoffset", - "tempfile", - "winapi", -] - [[package]] name = "unicase" version = "2.9.0" @@ -5123,15 +5033,8 @@ dependencies = [ "idna", "percent-encoding", "serde", - "serde_derive", ] -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - [[package]] name = "utf-8" version = "0.7.6" @@ -5151,7 +5054,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" dependencies = [ "js-sys", - "serde_core", "wasm-bindgen", ] @@ -5306,66 +5208,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wayland-backend" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee64194ccd96bf648f42a65a7e589547096dfa702f7cadef84347b66ad164f9" -dependencies = [ - "cc", - "downcast-rs", - "rustix", - "scoped-tls", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e6faa537fbb6c186cb9f1d41f2f811a4120d1b57ec61f50da451a0c5122bec" -dependencies = [ - "bitflags 2.10.0", - "rustix", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols" -version = "0.32.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baeda9ffbcfc8cd6ddaade385eaf2393bd2115a69523c735f12242353c3df4f3" -dependencies = [ - "bitflags 2.10.0", - "wayland-backend", - "wayland-client", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5423e94b6a63e68e439803a3e153a9252d5ead12fd853334e2ad33997e3889e3" -dependencies = [ - "proc-macro2", - "quick-xml", - "quote", -] - -[[package]] -name = "wayland-sys" -version = "0.31.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6dbfc3ac5ef974c92a2235805cc0114033018ae1290a72e474aa8b28cbbdfd" -dependencies = [ - "dlib", - "log", - "pkg-config", -] - [[package]] name = "web-sys" version = "0.3.83" @@ -6025,62 +5867,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "zbus" -version = "5.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f79257df967b6779afa536788657777a0001f5b42524fcaf5038d4344df40b" -dependencies = [ - "async-broadcast", - "async-recursion", - "async-trait", - "enumflags2", - "event-listener", - "futures-core", - "futures-lite", - "hex", - "libc", - "ordered-stream", - "rustix", - "serde", - "serde_repr", - "tokio", - "tracing", - "uds_windows", - "uuid", - "windows-sys 0.61.2", - "winnow 0.7.14", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "5.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aad23e2d2f91cae771c7af7a630a49e755f1eb74f8a46e9f6d5f7a146edf5a37" -dependencies = [ - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", - "zbus_names", - "zvariant", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "4.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" -dependencies = [ - "serde", - "winnow 0.7.14", - "zvariant", -] - [[package]] name = "zerocopy" version = "0.8.33" @@ -6166,44 +5952,3 @@ name = "zmij" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd8f3f50b848df28f887acb68e41201b5aea6bc8a8dacc00fb40635ff9a72fea" - -[[package]] -name = "zvariant" -version = "5.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "326aaed414f04fe839777b4c443d4e94c74e7b3621093bd9c5e649ac8aa96543" -dependencies = [ - "endi", - "enumflags2", - "serde", - "url", - "winnow 0.7.14", - "zvariant_derive", - "zvariant_utils", -] - -[[package]] -name = "zvariant_derive" -version = "5.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba44e1f8f4da9e6e2d25d2a60b116ef8b9d0be174a7685e55bb12a99866279a7" -dependencies = [ - "proc-macro-crate 3.4.0", - "proc-macro2", - "quote", - "syn 2.0.114", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "syn 2.0.114", - "winnow 0.7.14", -] diff --git a/client/Cargo.toml b/client/Cargo.toml index 0eddd0f..00ed483 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "azki" +name = "azki-client" version = "0.1.0" authors = ["Amatsugu "] edition = "2021" @@ -7,19 +7,21 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -dioxus = { version = "0.7.1", features = ["router"] } +dioxus = { version = "0.7.3", features = ["router"] } serde = "1.0.219" serde_repr = "0.1.20" -tonic = { version = "*", default-features = false, features = [ +tonic = { version = "0.14.2", default-features = false, features = [ "codegen", - "prost", ] } -prost = "0.13" -tonic-web-wasm-client = "0.7" +prost = "0.14" +prost-types = "0.14" +tonic-web-wasm-client = "0.8" web-sys = { version = "0.3.77", features = ["Storage", "Window"] } +tokio = "1.49.0" +tonic-prost = "0.14.2" [build-dependencies] -tonic-build = { version = "*", default-features = false, features = ["prost"] } +tonic-prost-build = { version = "0.14.2"} dotenv = "0.15.0" [features] diff --git a/client/build.rs b/client/build.rs index ce68458..0e1b005 100644 --- a/client/build.rs +++ b/client/build.rs @@ -4,15 +4,14 @@ use std::fs::File; use std::io::Write; fn main() -> Result<(), Box> { - // tonic_build::configure() - // .build_server(false) - // .build_client(true) - // .compile_protos( - // &[ - // "", - // ], - // &[""], - // )?; + tonic_prost_build::configure() + .build_server(false) + .build_client(true) + .build_transport(false) + .compile_protos( + &["../AZKiServer/Protos/azki.proto", "../AZKiServer/Protos/types.proto"], + &["../AZKiServer"], + )?; forward_env(); Ok(()) } diff --git a/client/src/main.rs b/client/src/main.rs index b6e6c6a..a196b71 100644 --- a/client/src/main.rs +++ b/client/src/main.rs @@ -4,8 +4,14 @@ mod app; mod components; mod env; mod route; +mod rpc; mod views; +#[cfg(debug_assertions)] +pub const RPC_HOST: &'static str = "http://localhost:8081"; +#[cfg(not(debug_assertions))] +pub const RPC_HOST: &'static str = "https://grpc.aoba.app:8443"; + fn main() { dioxus::launch(App); } diff --git a/client/src/rpc.rs b/client/src/rpc.rs new file mode 100644 index 0000000..10153a3 --- /dev/null +++ b/client/src/rpc.rs @@ -0,0 +1,49 @@ +use std::sync::RwLock; + +use tonic::service::{interceptor::InterceptedService, Interceptor}; +use tonic_web_wasm_client::Client; + +use crate::{rpc::azki::az_ki_client::AzKiClient, RPC_HOST}; + +pub mod azki { + tonic::include_proto!("azki"); +} + +static RPC_CLIENT: RpcConnection = RpcConnection { + azki: RwLock::new(None), + jwt: RwLock::new(None), +}; + +#[derive(Default)] +pub struct RpcConnection { + azki: RwLock>>>, + jwt: RwLock>, +} + +impl RpcConnection { + pub fn get_client(&self) -> AzKiClient> { + self.ensure_client(); + return self.azki.read().unwrap().clone().unwrap(); + } + + fn ensure_client(&self) { + if self.azki.read().unwrap().is_none() { + let wasm_client = Client::new(RPC_HOST.into()); + let aoba_client = AzKiClient::with_interceptor(wasm_client.clone(), AuthInterceptor); + *self.azki.write().unwrap() = Some(aoba_client); + } + } +} + +#[derive(Clone)] +pub struct AuthInterceptor; +impl Interceptor for AuthInterceptor { + fn call(&mut self, mut request: tonic::Request<()>) -> Result, tonic::Status> { + if let Some(jwt) = RPC_CLIENT.jwt.read().unwrap().clone() { + request + .metadata_mut() + .insert("authorization", format!("Bearer {jwt}").parse().unwrap()); + } + return Ok(request); + } +}