@supabase/ssr
Version:
Use the Supabase JavaScript library in popular server-side rendering (SSR) frameworks.
59 lines • 2.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createBrowserClient = createBrowserClient;
const supabase_js_1 = require("@supabase/supabase-js");
const version_1 = require("./version");
const utils_1 = require("./utils");
const cookies_1 = require("./cookies");
const warnDeprecatedPackage_1 = require("./warnDeprecatedPackage");
let cachedBrowserClient;
function createBrowserClient(supabaseUrl, supabaseKey, options) {
(0, warnDeprecatedPackage_1.warnIfUsingDeprecatedAuthHelpersPackage)();
// 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)) && (0, utils_1.isBrowser)());
if (shouldUseSingleton && cachedBrowserClient) {
return cachedBrowserClient;
}
if (!supabaseUrl || !supabaseKey) {
throw new Error(`@supabase/ssr: Your project's URL and API key are required to create a Supabase client!\n\nCheck your Supabase project's API settings to find these values\n\nhttps://supabase.com/dashboard/project/_/settings/api`);
}
const { storage } = (0, cookies_1.createStorageFromOptions)({
...options,
cookieEncoding: options?.cookieEncoding ?? "base64url",
}, false);
const client = (0, supabase_js_1.createClient)(supabaseUrl, supabaseKey, {
// TODO: resolve type error
...options,
global: {
...options?.global,
headers: {
...options?.global?.headers,
"X-Client-Info": `supabase-ssr/${version_1.VERSION} createBrowserClient`,
},
},
auth: {
...options?.auth,
...(options?.cookieOptions?.name
? { storageKey: options.cookieOptions.name }
: null),
flowType: "pkce",
autoRefreshToken: options?.auth?.autoRefreshToken ?? (0, utils_1.isBrowser)(),
detectSessionInUrl: options?.auth?.detectSessionInUrl ?? (0, utils_1.isBrowser)(),
persistSession: options?.auth?.persistSession ?? true,
storage,
...(options?.cookies &&
"encode" in options.cookies &&
options.cookies.encode === "tokens-only"
? {
userStorage: options?.auth?.userStorage ?? window.localStorage,
}
: null),
},
});
if (shouldUseSingleton) {
cachedBrowserClient = client;
}
return client;
}
//# sourceMappingURL=createBrowserClient.js.map