# Tyzen ⚡
A lightweight, high-performance tool to generate TypeScript type definitions from Rust structs and enums. Perfect for Tauri apps and full-stack Rust/TypeScript projects.
## Features
- 🚀 **Lightning Fast**: Generates types in milliseconds.
- 📦 **Zero Config**: Works out of the box with minimal setup.
- 🔌 **Tauri Integration**: First-class support for Tauri commands.
- 🛠️ **Macro-based**: Simple `#[derive(Type)]` and `#[command]` attributes.
- 🧩 **Extensible**: Easily supports custom types like `Uuid` and `Chrono`.
## Packages
- `tyzen`: The core crate containing the logic for type generation.
- `tyzen-macro`: Procedural macros for deriving types and marking commands.
- `tyzen-tauri`: Specialized integration for Tauri applications.
## Quick Start
### 1. Add Dependencies
Add `tyzen` to your `Cargo.toml`:
```toml
[dependencies]
tyzen = { version = "0.1.6", path = "../tyzen/tyzen" }
```
### 2. Define Your Types
```rust
use tyzen::Type;
#[derive(Type)]
pub struct User {
id: u32,
username: String,
email: String,
}
```
### 3. Generate TypeScript
```rust
fn main() {
tyzen::generate("bindings.ts");
}
```
## Tauri Support
Tyzen provides a seamless experience for Tauri developers. It not only generates TypeScript types but also automatically collects and registers your commands.
### 1. Mark your commands
```rust
#[tyzen::command]
pub fn create_user(user: User) -> Result<User, String> {
// ...
}
```
### 2. Register all commands automatically
Forget manual registration. Use `tyzen_tauri::handler!()` to register all marked commands at once:
```rust
tauri::Builder::default()
.invoke_handler(tyzen_tauri::handler!()) // That's it!
.run(tauri::generate_context!())
.expect("error while running tauri application");
```
## License
MIT / Apache-2.0