UNPKG

@yaakapp/api

Version:

Yaak is a desktop [API client](https://yaak.app/blog/yet-another-api-client) for interacting with REST, GraphQL, Server Sent Events (SSE), WebSocket, and gRPC APIs. It's built using Tauri, Rust, and ReactJS.

102 lines (101 loc) 4.72 kB
import type { FindHttpResponsesRequest, FindHttpResponsesResponse, FormInput, GetCookieValueRequest, GetCookieValueResponse, GetHttpRequestByIdRequest, GetHttpRequestByIdResponse, JsonPrimitive, ListCookieNamesResponse, ListFoldersRequest, ListFoldersResponse, ListHttpRequestsRequest, ListHttpRequestsResponse, OpenWindowRequest, PromptFormRequest, PromptFormResponse, PromptTextRequest, PromptTextResponse, RenderGrpcRequestRequest, RenderGrpcRequestResponse, RenderHttpRequestRequest, RenderHttpRequestResponse, SendHttpRequestRequest, SendHttpRequestResponse, ShowToastRequest, TemplateRenderRequest, WorkspaceInfo } from '../bindings/gen_events.ts'; import type { Folder, HttpRequest } from '../bindings/gen_models.ts'; import type { JsonValue } from '../bindings/serde_json/JsonValue'; import type { MaybePromise } from '../helpers'; export type CallPromptFormDynamicArgs = { values: { [key in string]?: JsonPrimitive; }; }; type AddDynamicMethod<T> = { dynamic?: (ctx: Context, args: CallPromptFormDynamicArgs) => MaybePromise<Partial<T> | null | undefined>; }; type AddDynamic<T> = T extends any ? T extends { inputs?: FormInput[]; } ? Omit<T, 'inputs'> & { inputs: Array<AddDynamic<FormInput>>; dynamic?: (ctx: Context, args: CallPromptFormDynamicArgs) => MaybePromise<Partial<Omit<T, 'inputs'> & { inputs: Array<AddDynamic<FormInput>>; }> | null | undefined>; } : T & AddDynamicMethod<T> : never; export type DynamicPromptFormArg = AddDynamic<FormInput>; type DynamicPromptFormRequest = Omit<PromptFormRequest, 'inputs'> & { inputs: DynamicPromptFormArg[]; }; export type WorkspaceHandle = Pick<WorkspaceInfo, 'id' | 'name'>; export interface Context { clipboard: { copyText(text: string): Promise<void>; }; toast: { show(args: ShowToastRequest): Promise<void>; }; prompt: { text(args: PromptTextRequest): Promise<PromptTextResponse['value']>; form(args: DynamicPromptFormRequest): Promise<PromptFormResponse['values']>; }; store: { set<T>(key: string, value: T): Promise<void>; get<T>(key: string): Promise<T | undefined>; delete(key: string): Promise<boolean>; }; window: { requestId(): Promise<string | null>; workspaceId(): Promise<string | null>; environmentId(): Promise<string | null>; openUrl(args: OpenWindowRequest & { onNavigate?: (args: { url: string; }) => void; onClose?: () => void; }): Promise<{ close: () => void; }>; openExternalUrl(url: string): Promise<void>; }; cookies: { listNames(): Promise<ListCookieNamesResponse['names']>; getValue(args: GetCookieValueRequest): Promise<GetCookieValueResponse['value']>; }; grpcRequest: { render(args: RenderGrpcRequestRequest): Promise<RenderGrpcRequestResponse['grpcRequest']>; }; httpRequest: { send(args: SendHttpRequestRequest): Promise<SendHttpRequestResponse['httpResponse']>; getById(args: GetHttpRequestByIdRequest): Promise<GetHttpRequestByIdResponse['httpRequest']>; render(args: RenderHttpRequestRequest): Promise<RenderHttpRequestResponse['httpRequest']>; list(args?: ListHttpRequestsRequest): Promise<ListHttpRequestsResponse['httpRequests']>; create(args: Omit<Partial<HttpRequest>, 'id' | 'model' | 'createdAt' | 'updatedAt'> & Pick<HttpRequest, 'workspaceId' | 'url'>): Promise<HttpRequest>; update(args: Omit<Partial<HttpRequest>, 'model' | 'createdAt' | 'updatedAt'> & Pick<HttpRequest, 'id'>): Promise<HttpRequest>; delete(args: { id: string; }): Promise<HttpRequest>; }; folder: { list(args?: ListFoldersRequest): Promise<ListFoldersResponse['folders']>; getById(args: { id: string; }): Promise<Folder | null>; create(args: Omit<Partial<Folder>, 'id' | 'model' | 'createdAt' | 'updatedAt'> & Pick<Folder, 'workspaceId' | 'name'>): Promise<Folder>; update(args: Omit<Partial<Folder>, 'model' | 'createdAt' | 'updatedAt'> & Pick<Folder, 'id'>): Promise<Folder>; delete(args: { id: string; }): Promise<Folder>; }; httpResponse: { find(args: FindHttpResponsesRequest): Promise<FindHttpResponsesResponse['httpResponses']>; }; templates: { render<T extends JsonValue>(args: TemplateRenderRequest & { data: T; }): Promise<T>; }; plugin: { reload(): void; }; workspace: { list(): Promise<WorkspaceHandle[]>; withContext(handle: WorkspaceHandle): Context; }; } export {};