Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ertanic/tauri-typed-invoke

A small utility that generates a typescript declaration file for the invoke function from functions found in code by Tauri commands. Thanks to this, there is no mistaking the name of the command.
https://github.com/ertanic/tauri-typed-invoke

rust tauri utils

Last synced: 14 days ago
JSON representation

A small utility that generates a typescript declaration file for the invoke function from functions found in code by Tauri commands. Thanks to this, there is no mistaking the name of the command.

Awesome Lists containing this project

README

        

# About

`tauri-named-invoke` is a small utility that generates a typescript declaration file for the [`invoke`](https://tauri.app/v1/api/js/tauri/#invoke) function from functions found in code by Tauri [commands](https://docs.rs/tauri/1.6.1/tauri/command/index.html).
Thanks to this, there is no mistaking the name of the command.

# Example

**main.rs:**

```rust
fn main() {
tauri::Builder::default()
.invoke_handler(generate_handler![get_weather, get_config])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}

#[tauri::command]
fn get_weather() -> String {
"sunny".to_string()
}
// or
use tauri::command;
#[command]
fn get_config() -> String {
"config".to_string()
}
```

**build.rs:**

```rust
fn main() {
tauri_named_invoke::build("ui").unwrap();
tauri_build::build();
}
```

The file will be generated at the following path:

```shell
project root
├── ui
│ └── invoke.d.ts
├── src
│ └── main.rs
└── Cargo.toml
```

The generated file will contain:

```typescript
import * as tauri from '@tauri-apps/api/tauri';
declare module '@tauri-apps/api' {
type Commands =
'get_weather'
| 'get_config';

function invoke(cmd: Commands, args?: InvokeArgs): Promise;
}
```