api-client/packages/hoppscotch-kernel/src/io/v/1.ts
James George 27b817f627
feat: migrate ESLint to v9 across packages (#5773)
Co-authored-by: curiouscorrelation <curiouscorrelation@gmail.com>
2026-01-20 14:48:55 +05:30

61 lines
1.4 KiB
TypeScript

import type { VersionedAPI } from "@type/versioning"
export interface Event<T> {
event: string
id: number
payload: T
}
export type EventCallback<T> = (event: Event<T>) => void | Promise<void>
export type UnlistenFn = () => void | Promise<void>
export type SaveFileWithDialogOptions = {
data: string | Uint8Array
suggestedFilename: string
contentType: string
filters?: Array<{
name: string
extensions: string[]
}>
}
export type OpenExternalLinkOptions = {
url: string
}
export type SaveFileResponse =
| { type: "unknown" }
| { type: "cancelled" }
| { type: "saved"; path: string }
export type OpenExternalLinkResponse =
| { type: "unknown" }
| { type: "cancelled" }
| { type: "opened" }
export interface IoV1 {
saveFileWithDialog: (
opts: SaveFileWithDialogOptions
) => Promise<SaveFileResponse>
openExternalLink: (
opts: OpenExternalLinkOptions
) => Promise<OpenExternalLinkResponse>
listen: <T>(event: string, handler: EventCallback<T>) => Promise<UnlistenFn>
once: <T>(event: string, handler: EventCallback<T>) => Promise<UnlistenFn>
emit: (event: string, payload?: unknown) => Promise<void>
}
export const v1: VersionedAPI<IoV1> = {
version: { major: 1, minor: 0, patch: 0 },
api: {
saveFileWithDialog: async () => ({ type: "unknown" }),
openExternalLink: async () => ({ type: "unknown" }),
listen: async () => () => {},
once: async () => () => {},
emit: async () => {},
},
}