# Tauri Plugin: AppLoad
> A Tauri plugin for downloading and loading web app bundles into WebView.
![GitHub License MIT](https://img.shields.io/github/license/CuriousCorrelation/tauri-plugin-appload)
![Tauri 2.0](https://img.shields.io/badge/Tauri-2.0-blue)
[![Rust](https://img.shields.io/badge/Rust-1.77.2+-orange)](https://www.rust-lang.org)
## Features
- 🦀 Blazingly fast!
- Download and load web app bundles from remote servers
- Secure verification using `ed25519` + `blake3`
- Caching with hot/cold storage strategy
- Custom URI scheme for isolated app loading
## Installation
> [!IMPORTANT]
> This plugin requires Tauri 2.0 or later.
Add the plugin to your project by installing directly from GitHub:
```toml
[dependencies]
tauri-plugin-appload = { git = "https://github.com/CuriousCorrelation/tauri-plugin-appload" }
```
``` json
"dependencies": {
"@CuriousCorrelation/plugin-appload": "github:CuriousCorrelation/tauri-plugin-appload"
}
```
## Quick Start
### Rust
```rust
fn main() {
tauri::Builder::default()
.plugin(tauri_plugin_appload::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
```
### JavaScript/TypeScript
```typescript
import { download, load } from '@CuriousCorrelation/plugin-appload'
// Download a bundle
const { bundleName } = await download({
serverUrl: "https://example.com"
})
// Load the bundle in a new window
await load({
bundleName,
window: {
title: "My App",
width: 800,
height: 600
}
})
```
## Configuration
> [!NOTE]
> The plugin uses sensible defaults but can be customized via configuration.
| Option | Description | Default |
|--------|-------------|---------|
| `api.serverUrl` | Bundle server URL | `http://localhost:3200` |
| `cache.maxSize` | Maximum cache size | `100MB` |
| `cache.filesTtl` | File time-to-live | `1 hour` |
| `storage.maxBundleSize` | Maximum bundle size | `50MB` |
## Permissions
The plugin defines the following permissions:
- `allow-download`: Enable bundle downloads
- `allow-load`: Enable bundle loading
- `deny-download`: Disable bundle downloads
- `deny-load`: Disable bundle loading
## Development
Requirements:
- Rust 1.77.2 or later
- Node.js 18 or later
- pnpm
## License
Code: (c) 2024 - CuriousCorrelation
MIT or MIT/Apache 2.0 where applicable.