UNPKG

@fine-dev/fine-js

Version:

Javascript client for Fine BaaS

53 lines (41 loc) 1.99 kB
import FineAIClient from "./ai" import D1RestClient, { GenericSchema } from "./d1" import { createAuthClient } from "better-auth/react" import FineStorageClient from "./storage" import { FineTranscriber } from "./transcribe" import { createOAuthApprovalHook } from "./oauth" export type { EntityReference } from "./storage" type FineConfig = { restUrl: string authUrl: string aiUrl: string storageUrl: string transcribeUrl: string mcpUrl: string } export class FineClient<Database extends GenericSchema = GenericSchema> extends D1RestClient<Database> { auth: ReturnType<typeof createAuthClient> useOAuthApproval: ReturnType<typeof createOAuthApprovalHook> ai: FineAIClient storage: FineStorageClient /** * @param config Path to the Fine API or a FineConfig object. Pass a string beginning with `/` to use the current origin with a path relative to it. */ constructor(private config: string | FineConfig) { if (typeof config === "string" && config.startsWith("/")) config = location.origin + config const d1RestUrl = typeof config === "string" ? config + "/db" : config.restUrl super({ baseUrl: d1RestUrl }) const authUrl = typeof config === "string" ? config + "/auth" : config.authUrl this.auth = createAuthClient({ baseURL: authUrl }) const mcpUrl = typeof config === "string" ? config + "/mcp" : config.mcpUrl this.useOAuthApproval = createOAuthApprovalHook(mcpUrl) const aiUrl = typeof config === "string" ? config + "/ai" : config.aiUrl this.ai = new FineAIClient({ baseUrl: aiUrl }) const storageUrl = typeof config === "string" ? config + "/storage" : config.storageUrl this.storage = new FineStorageClient({ baseUrl: storageUrl }) } transcriber() { const baseUrl = typeof this.config === "string" ? this.config + "/transcribe" : this.config.transcribeUrl return new FineTranscriber({ baseUrl }) } }