#tauri-plugin #graphql #ipc #toolkit #building #type-safe #schema

mizuki

一个用于构建 Tauri 插件的工具包,通过 GraphQL 实现类型安全的 IPC

5 个版本

0.2.0 2024 年 3 月 6 日
0.2.0-alpha.32024 年 2 月 4 日
0.2.0-alpha.22023 年 12 月 16 日
0.2.0-alpha.12023 年 12 月 13 日
0.1.0 2023 年 12 月 4 日

#479GUI

Download history 230/week @ 2024-04-09 204/week @ 2024-04-16 148/week @ 2024-04-23 175/week @ 2024-04-30 1/week @ 2024-05-14 42/week @ 2024-05-21 74/week @ 2024-05-28 4/week @ 2024-06-04 2/week @ 2024-06-18 484/week @ 2024-06-25 88/week @ 2024-07-02 109/week @ 2024-07-09 233/week @ 2024-07-16 151/week @ 2024-07-23

605 每月下载量

MIT 许可证

110KB
417

Mizuki

Crates.io Documentation MIT licensed

一个用于构建 Tauri 插件的工具包,通过 GraphQL 实现类型安全的 IPC。

注意

此项目是从 JonasKruckenberg/tauri-plugin-graphql 分支出来的。

但我认为将插件进一步发展并创建一个用于构建 GraphQL Tauri 插件的工具包是一个很好的主意。

安装

Rust

[dependencies]
mizuki = "0.2.0"

JavaScript

目前唯一的客户端适配器是 @mizuki/urql,这是 urql 的自定义交换。如果您需要其他 GraphQL 客户端的适配器,请提交 PR!

版本(点击查看变更日志)
mizuki-urql-adapter urql adapter version

用法

您需要注册插件,并给它一个 async_graphql::Schema。此模式将用于满足请求。

use async_graphql::{Schema, Object, EmptySubscription, EmptyMutation, Result as GraphQLResult, SimpleObject};

#[derive(SimpleObject, Debug, Clone)]
struct ListItem {
    id: i32,
    text: String
}

impl ListItem {
    pub fn new(text: String) -> Self {
        Self {
            id: rand::random::<i32>(),
            text
        }
    }
}

struct Query;

#[Object]
impl Query {
    async fn list(&self) -> GraphQLResult<Vec<ListItem>> {
        let item = vec![
            ListItem::new("foo".to_string()),
            ListItem::new("bar".to_string())
        ];

        Ok(item)
    }
}

fn init_plugin<R: tauri::Runtime>() -> mizuki::MizukiPlugin<R, Query, EmptyMutation, EmptySubscription> {
    mizuki::Builder::new("todo-plugin", Schema::new(
        Query,
        EmptyMutation,
        EmptySubscription,
    )).build()
}

fn main() {
    tauri::Builder::default()
        // The plugin name is required
        .plugin(init_plugin())
        .run(tauri::generate_context!())
        .expect("failed to run app");
}

贡献

如果您想帮忙,有几个需要改进的领域

  • 客户端适配器 - 目前仅存在一个 urql 适配器;有更多客户端库的适配器将会非常好。

欢迎 PR!

许可证

MIT © Tony Mushah

依赖关系

~25–66MB
~1M SLoC