export type DevtoolAction = "compile" | "extract" export interface DevtoolProject { locales: readonly string[] sourceLocale: string } interface ApiError { error?: string } export async function requestDevtoolJson( url: string, init?: RequestInit ): Promise { const response = await fetch(url, init) const body = (await response.json()) as T & ApiError if (!response.ok) { throw new Error(body.error ?? `Request failed with ${response.status}.`) } return body } export async function runDevtoolAction( action: DevtoolAction, baseUrl = "/__i18n" ) { const normalizedBaseUrl = baseUrl.replace(/\/+$/, "") return requestDevtoolJson<{ output: string }>( `${normalizedBaseUrl}/actions/${action}`, { method: "POST" } ) } export async function requestDevtoolProject(baseUrl = "/__i18n") { const normalizedBaseUrl = baseUrl.replace(/\/+$/, "") return requestDevtoolJson(`${normalizedBaseUrl}/project`) }