5 个版本
0.2.0 | 2024 年 3 月 6 日 |
---|---|
0.2.0-alpha.3 | 2024 年 2 月 4 日 |
0.2.0-alpha.2 | 2023 年 12 月 16 日 |
0.2.0-alpha.1 | 2023 年 12 月 13 日 |
0.1.0 | 2023 年 12 月 4 日 |
#479 在 GUI
605 每月下载量
110KB
417 行
Mizuki
一个用于构建 Tauri 插件的工具包,通过 GraphQL 实现类型安全的 IPC。
注意
此项目是从 JonasKruckenberg/tauri-plugin-graphql 分支出来的。
但我认为将插件进一步发展并创建一个用于构建 GraphQL Tauri 插件的工具包是一个很好的主意。
安装
Rust
[dependencies]
mizuki = "0.2.0"
JavaScript
目前唯一的客户端适配器是 @mizuki/urql
,这是 urql
的自定义交换。如果您需要其他 GraphQL 客户端的适配器,请提交 PR!
包 | 版本(点击查看变更日志) |
---|---|
mizuki-urql-adapter |
用法
您需要注册插件,并给它一个 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!
许可证
依赖关系
~25–66MB
~1M SLoC