Skip to content

Commit

Permalink
Merge pull request #4 from tonymushah/3-add-a-tauri-plugin-graphql-mi…
Browse files Browse the repository at this point in the history
…gration-guide

v0.2.0
  • Loading branch information
tonymushah authored Mar 6, 2024
2 parents 1610706 + 0412b1a commit e58db20
Show file tree
Hide file tree
Showing 58 changed files with 3,793 additions and 1,903 deletions.
2,261 changes: 1,606 additions & 655 deletions Cargo.lock

Large diffs are not rendered by default.

5 changes: 2 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "mizuki"
version = "0.1.0"
version = "0.2.0"
authors = [ "Jonas Kruckenberg", "tonymushah <[email protected]>" ]
description = "A toolkit for building Tauri Plugins that enables type-safe IPC through GraphQL."
edition = "2021"
Expand All @@ -15,7 +15,7 @@ keywords = [ "tauri-plugin", "graphql" ]
serde = { version = "1", features = [ "derive" ] }
serde_json = "1"
tauri = "1"
async-graphql = "6"
async-graphql = "7"

[features]
log = [ "async-graphql/log" ]
Expand All @@ -25,7 +25,6 @@ chrono = [ "async-graphql/chrono" ]
chrono-tz = [ "async-graphql/chrono-tz" ]
url = [ "async-graphql/url" ]
uuid = [ "async-graphql/uuid" ]
uuid08 = [ "async-graphql/uuid08" ]
string_number = [ "async-graphql/string_number" ]
dataloader = [ "async-graphql/dataloader" ]
secrecy = [ "async-graphql/secrecy" ]
Expand Down
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ and create a toolkit for building GraphQL Tauri Plugins.

```toml
[dependencies]
mizuki = "0.1.0"
mizuki = "0.2.0"
```

### JavaScript
Expand Down Expand Up @@ -74,16 +74,18 @@ impl Query {
}
}

fn main() {
let schema = Schema::new(
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(mizuki::MizukiPlugin::new("todo-plugin", schema))
.plugin(init_plugin())
.run(tauri::generate_context!())
.expect("failed to run app");
}
Expand Down
24 changes: 24 additions & 0 deletions examples/min-x/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
7 changes: 7 additions & 0 deletions examples/min-x/.vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"recommendations": [
"svelte.svelte-vscode",
"tauri-apps.tauri-vscode",
"rust-lang.rust-analyzer"
]
}
7 changes: 7 additions & 0 deletions examples/min-x/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Tauri + Svelte + Typescript

This template should help get you started developing with Tauri, Svelte and TypeScript in Vite.

## Recommended IDE Setup

[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer).
14 changes: 14 additions & 0 deletions examples/min-x/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Tauri + Svelte + TS</title>
</head>

<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
28 changes: 28 additions & 0 deletions examples/min-x/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"name": "min-x",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"check": "svelte-check --tsconfig ./tsconfig.json",
"tauri": "tauri"
},
"dependencies": {
"@mizuki/urql": "link:../../packages/urql",
"@tauri-apps/api": "^1.5.1",
"@urql/svelte": "^4.0.4"
},
"devDependencies": {
"@sveltejs/vite-plugin-svelte": "^2.4.2",
"@tauri-apps/cli": "^1.5.6",
"@tsconfig/svelte": "^5.0.0",
"svelte": "^4.0.5",
"svelte-check": "^3.4.6",
"tslib": "^2.6.0",
"typescript": "^5.0.2",
"vite": "^4.4.4"
}
}
1 change: 1 addition & 0 deletions examples/min-x/public/svelte.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions examples/min-x/public/tauri.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions examples/min-x/public/vite.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions examples/min-x/src-tauri/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Generated by Cargo
# will have compiled files and executables
/target/

26 changes: 26 additions & 0 deletions examples/min-x/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[package]
name = "min-x"
version = "0.0.0"
description = "A Tauri App"
authors = ["you"]
license = ""
repository = ""
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[build-dependencies]
tauri-build = { version = "1.5", features = [] }

[dependencies]
tauri = { version = "1.5", features = ["shell-open"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
mizuki = { path = "../../.." }
async-graphql = "7"
twitter-v2 = "0.1.8"

[features]
# this feature is used for production builds or when `devPath` points to the filesystem
# DO NOT REMOVE!!
custom-protocol = ["tauri/custom-protocol"]
3 changes: 3 additions & 0 deletions examples/min-x/src-tauri/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fn main() {
tauri_build::build()
}
Binary file added examples/min-x/src-tauri/icons/128x128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/min-x/src-tauri/icons/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/min-x/src-tauri/icons/32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/min-x/src-tauri/icons/Square30x30Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/min-x/src-tauri/icons/StoreLogo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added examples/min-x/src-tauri/icons/icon.icns
Binary file not shown.
Binary file added examples/min-x/src-tauri/icons/icon.ico
Binary file not shown.
Binary file added examples/min-x/src-tauri/icons/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 36 additions & 0 deletions examples/min-x/src-tauri/src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use async_graphql::{EmptyMutation, EmptySubscription, Object, Schema};
use mizuki::MizukiPlugin;
use tauri::Runtime;

// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}! You've been greeted from Rust!", name)
}

struct Query;

#[Object]
impl Query {
async fn value(&self) -> u32 {
100
}
}

fn init_my_plug<R: Runtime>() -> MizukiPlugin<R, Query, EmptyMutation, EmptySubscription> {
mizuki::Builder::<R, Query, EmptyMutation, EmptySubscription>::new(
"my-plug",
Schema::new(Query, EmptyMutation, EmptySubscription),
)
.build()
}

fn main() {
tauri::Builder::default()
.plugin(init_my_plug())
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
45 changes: 45 additions & 0 deletions examples/min-x/src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"build": {
"beforeDevCommand": "pnpm dev",
"beforeBuildCommand": "pnpm build",
"devPath": "http://localhost:1420",
"distDir": "../dist"
},
"package": {
"productName": "min-x",
"version": "0.0.0"
},
"tauri": {
"allowlist": {
"all": false,
"shell": {
"all": false,
"open": true
}
},
"bundle": {
"active": true,
"targets": "all",
"identifier": "com.tauri.dev",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/[email protected]",
"icons/icon.icns",
"icons/icon.ico"
]
},
"security": {
"csp": null
},
"windows": [
{
"fullscreen": false,
"resizable": true,
"title": "min-x",
"width": 800,
"height": 600
}
]
}
}
39 changes: 39 additions & 0 deletions examples/min-x/src/App.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<script lang="ts">
import Greet from './lib/Greet.svelte'
</script>

<main class="container">
<h1>Welcome to Tauri!</h1>

<div class="row">
<a href="https://vitejs.dev" target="_blank">
<img src="/vite.svg" class="logo vite" alt="Vite Logo" />
</a>
<a href="https://tauri.app" target="_blank">
<img src="/tauri.svg" class="logo tauri" alt="Tauri Logo" />
</a>
<a href="https://svelte.dev" target="_blank">
<img src="/svelte.svg" class="logo svelte" alt="Svelte Logo" />
</a>
</div>

<p>
Click on the Tauri, Vite, and Svelte logos to learn more.
</p>

<div class="row">
<Greet />
</div>


</main>

<style>
.logo.vite:hover {
filter: drop-shadow(0 0 2em #747bff);
}
.logo.svelte:hover {
filter: drop-shadow(0 0 2em #ff3e00);
}
</style>
19 changes: 19 additions & 0 deletions examples/min-x/src/lib/Greet.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<script lang="ts">
import { invoke } from "@tauri-apps/api/tauri"
let name = "";
let greetMsg = ""
async function greet(){
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
greetMsg = await invoke("greet", { name })
}
</script>

<div>
<form class="row" on:submit|preventDefault={greet}>
<input id="greet-input" placeholder="Enter a name..." bind:value={name} />
<button type="submit">Greet</button>
</form>
<p>{greetMsg}</p>
</div>
8 changes: 8 additions & 0 deletions examples/min-x/src/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import "./styles.css";
import App from "./App.svelte";

const app = new App({
target: document.getElementById("app"),
});

export default app;
Loading

0 comments on commit e58db20

Please sign in to comment.