use serde::{Deserialize, Serialize}; use std::collections::HashMap; use ts_rs::TS; use yaak_models::models::{ CookieJar, Environment, Folder, GrpcConnection, GrpcEvent, GrpcRequest, HttpRequest, HttpResponse, KeyValue, Settings, Workspace, }; #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export)] pub struct InternalEvent { pub id: String, pub plugin_ref_id: String, pub reply_id: Option, pub payload: InternalEventPayload, } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "snake_case", tag = "type")] #[ts(export)] pub enum InternalEventPayload { BootRequest(BootRequest), BootResponse(BootResponse), ImportRequest(ImportRequest), ImportResponse(ImportResponse), FilterRequest(FilterRequest), FilterResponse(FilterResponse), ExportHttpRequestRequest(ExportHttpRequestRequest), ExportHttpRequestResponse(ExportHttpRequestResponse), SendHttpRequestRequest(SendHttpRequestRequest), SendHttpRequestResponse(SendHttpRequestResponse), GetHttpRequestActionsRequest(GetHttpRequestActionsRequest), GetHttpRequestActionsResponse(GetHttpRequestActionsResponse), CallHttpRequestActionRequest(CallHttpRequestActionRequest), GetTemplateFunctionsRequest, GetTemplateFunctionsResponse(GetTemplateFunctionsResponse), CallTemplateFunctionRequest(CallTemplateFunctionRequest), CallTemplateFunctionResponse(CallTemplateFunctionResponse), CopyTextRequest(CopyTextRequest), RenderHttpRequestRequest(RenderHttpRequestRequest), RenderHttpRequestResponse(RenderHttpRequestResponse), ShowToastRequest(ShowToastRequest), GetHttpRequestByIdRequest(GetHttpRequestByIdRequest), GetHttpRequestByIdResponse(GetHttpRequestByIdResponse), FindHttpResponsesRequest(FindHttpResponsesRequest), FindHttpResponsesResponse(FindHttpResponsesResponse), /// Returned when a plugin doesn't get run, just so the server /// has something to listen for EmptyResponse(EmptyResponse), } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default)] #[ts(export, type = "{}")] pub struct EmptyResponse {} #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct BootRequest { pub dir: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct BootResponse { pub name: String, pub version: String, pub capabilities: Vec, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct ImportRequest { pub content: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct ImportResponse { pub resources: ImportResources, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct FilterRequest { pub content: String, pub filter: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct FilterResponse { pub content: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct ExportHttpRequestRequest { pub http_request: HttpRequest, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct ExportHttpRequestResponse { pub content: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct SendHttpRequestRequest { pub http_request: HttpRequest, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct SendHttpRequestResponse { pub http_response: HttpResponse, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct CopyTextRequest { pub text: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct RenderHttpRequestRequest { pub http_request: HttpRequest, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct RenderHttpRequestResponse { pub http_request: HttpRequest, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct ShowToastRequest { pub message: String, pub variant: ToastVariant, } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export)] pub enum ToastVariant { Custom, Copied, Success, Info, Warning, Error, } impl Default for ToastVariant { fn default() -> Self { ToastVariant::Info } } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct GetTemplateFunctionsResponse { pub functions: Vec, pub plugin_ref_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct TemplateFunction { pub name: String, pub args: Vec, } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "snake_case", tag = "type")] #[ts(export)] pub enum TemplateFunctionArg { Text(TemplateFunctionTextArg), Select(TemplateFunctionSelectArg), HttpRequest(TemplateFunctionHttpRequestArg), } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct TemplateFunctionBaseArg { pub name: String, #[ts(optional = nullable)] pub optional: Option, #[ts(optional = nullable)] pub label: Option, #[ts(optional = nullable)] pub default_value: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct TemplateFunctionTextArg { #[serde(flatten)] pub base: TemplateFunctionBaseArg, #[ts(optional = nullable)] pub placeholder: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct TemplateFunctionHttpRequestArg { #[serde(flatten)] pub base: TemplateFunctionBaseArg, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct TemplateFunctionSelectArg { #[serde(flatten)] pub base: TemplateFunctionBaseArg, pub options: Vec, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct TemplateFunctionSelectOption { pub name: String, pub value: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct CallTemplateFunctionRequest { pub name: String, pub args: CallTemplateFunctionArgs, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct CallTemplateFunctionResponse { pub value: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct CallTemplateFunctionArgs { pub purpose: CallTemplateFunctionPurpose, pub values: HashMap, } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "snake_case", tag = "type")] #[ts(export)] pub enum CallTemplateFunctionPurpose { Send, Preview, } impl Default for CallTemplateFunctionPurpose { fn default() -> Self { CallTemplateFunctionPurpose::Preview } } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default)] #[ts(export)] pub struct GetHttpRequestActionsRequest {} #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct GetHttpRequestActionsResponse { pub actions: Vec, pub plugin_ref_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct HttpRequestAction { pub key: String, pub label: String, pub icon: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct CallHttpRequestActionRequest { pub key: String, pub plugin_ref_id: String, pub args: CallHttpRequestActionArgs, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct CallHttpRequestActionArgs { pub http_request: HttpRequest, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct GetHttpRequestByIdRequest { pub id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct GetHttpRequestByIdResponse { pub http_request: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct FindHttpResponsesRequest { pub request_id: String, pub limit: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct FindHttpResponsesResponse { pub http_responses: Vec, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export)] pub struct ImportResources { pub workspaces: Vec, pub environments: Vec, pub folders: Vec, pub http_requests: Vec, pub grpc_requests: Vec, } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "camelCase", untagged)] #[ts(export)] pub enum Model { Environment(Environment), Folder(Folder), GrpcConnection(GrpcConnection), GrpcEvent(GrpcEvent), GrpcRequest(GrpcRequest), HttpRequest(HttpRequest), HttpResponse(HttpResponse), KeyValue(KeyValue), Workspace(Workspace), CookieJar(CookieJar), Settings(Settings), }