UNPKG

@skorpland/ssr

Version:

Use the Powerbase JavaScript library in popular server-side rendering (SSR) frameworks.

46 lines 1.9 kB
import { createClient } from "@skorpland/powerbase-js"; import { VERSION } from "./version"; import { isBrowser } from "./utils"; import { createStorageFromOptions } from "./cookies"; let cachedBrowserClient; export function createBrowserClient(powerbaseUrl, powerbaseKey, options) { // singleton client is created only if isSingleton is set to true, or if isSingleton is not defined and we detect a browser const shouldUseSingleton = options?.isSingleton === true || ((!options || !("isSingleton" in options)) && isBrowser()); if (shouldUseSingleton && cachedBrowserClient) { return cachedBrowserClient; } if (!powerbaseUrl || !powerbaseKey) { throw new Error(`@skorpland/ssr: Your project's URL and API key are required to create a Powerbase client!\n\nCheck your Powerbase project's API settings to find these values\n\nhttps://powerbase.club/dashboard/project/_/settings/api`); } const { storage } = createStorageFromOptions({ ...options, cookieEncoding: options?.cookieEncoding ?? "base64url", }, false); const client = createClient(powerbaseUrl, powerbaseKey, { ...options, global: { ...options?.global, headers: { ...options?.global?.headers, "X-Client-Info": `powerbase-ssr/${VERSION} createBrowserClient`, }, }, auth: { ...options?.auth, ...(options?.cookieOptions?.name ? { storageKey: options.cookieOptions.name } : null), flowType: "pkce", autoRefreshToken: isBrowser(), detectSessionInUrl: isBrowser(), persistSession: true, storage, }, }); if (shouldUseSingleton) { cachedBrowserClient = client; } return client; } //# sourceMappingURL=createBrowserClient.js.map