-
Notifications
You must be signed in to change notification settings - Fork 0
systems command api bridge
Active contributors: Douwe de Vries
The command API bridge keeps React code independent from raw Tauri APIs. src/lib/loadrift/api.ts defines the app-facing interface, while src/lib/tauri/client.ts implements it with Tauri invoke and window-scoped event listeners.
src/lib/loadrift/api.ts
src/lib/loadrift/types.ts
src/lib/loadrift/context.tsx
src/lib/tauri/client.ts
src/lib/tauri/dialog.ts
src/lib/tauri/errors.ts
src-tauri/src/lib.rs
src-tauri/src/events.rs
src-tauri/src/commands/
| Abstraction | File | Description |
|---|---|---|
LoadRiftApi |
src/lib/loadrift/api.ts |
Typed frontend interface for commands and events |
createTauriLoadRiftApi |
src/lib/tauri/client.ts |
Tauri-backed implementation of LoadRiftApi
|
LoadRiftApiProvider |
src/lib/loadrift/context.tsx |
React context for API injection |
| Event constants |
src/lib/loadrift/api.ts, src-tauri/src/events.rs
|
Shared names for k6 output, metrics, completion, and error events |
graph LR
Hook[React hook] --> API[LoadRiftApi]
API --> Adapter[createTauriLoadRiftApi]
Adapter --> Invoke[Tauri invoke]
Invoke --> Command[Rust command]
Command --> Events[Rust event emitter]
Events --> Listen[window.listen]
Listen --> Hook
Commands include import_collection_from_file, validate_test_configuration, smoke_test_requests, start_test, stop_test, export_report, and get_test_status. Event subscriptions include onK6Output, onK6Metrics, onK6Complete, and onK6Error.
Run-state filtering happens in src/features/test/useTestHarness.ts, which ignores stale metrics and completion events by comparing run IDs. Backend event emission happens in src-tauri/src/events.rs and src-tauri/src/k6/process/runtime.rs.
Add a frontend method to src/lib/loadrift/api.ts, implement it in src/lib/tauri/client.ts, add Rust request/response models in src-tauri/src/models.rs if needed, implement a command under src-tauri/src/commands/, and register it in src-tauri/src/lib.rs.
| File | Purpose |
|---|---|
src/lib/loadrift/api.ts |
Frontend API and event constants |
src/lib/tauri/client.ts |
Tauri invoke/listen adapter |
src/lib/loadrift/context.tsx |
API injection |
src-tauri/src/lib.rs |
Backend command registration |
src-tauri/src/events.rs |
Event emission |