@supabase/ssr
Version:
Use the Supabase JavaScript library in popular server-side rendering (SSR) frameworks.
69 lines • 3.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createServerClient = createServerClient;
const supabase_js_1 = require("@supabase/supabase-js");
const version_1 = require("./version");
const cookies_1 = require("./cookies");
const helpers_1 = require("./utils/helpers");
const warnDeprecatedPackage_1 = require("./warnDeprecatedPackage");
function createServerClient(supabaseUrl, supabaseKey, options) {
(0, warnDeprecatedPackage_1.warnIfUsingDeprecatedAuthHelpersPackage)();
if (!supabaseUrl || !supabaseKey) {
throw new Error(`Your project's URL and 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, getAll, setAll, setItems, removedItems } = (0, cookies_1.createStorageFromOptions)({
...options,
cookieEncoding: options?.cookieEncoding ?? "base64url",
}, true);
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} createServerClient`,
},
},
auth: {
...(options?.cookieOptions?.name
? { storageKey: options.cookieOptions.name }
: null),
...options?.auth,
flowType: "pkce",
autoRefreshToken: false,
detectSessionInUrl: false,
persistSession: true,
skipAutoInitialize: true,
storage,
...(options?.cookies &&
"encode" in options.cookies &&
options.cookies.encode === "tokens-only"
? {
userStorage: options?.auth?.userStorage ?? (0, helpers_1.memoryLocalStorageAdapter)(),
}
: null),
},
});
client.auth.onAuthStateChange(async (event) => {
// The SIGNED_IN event is fired very often, but we don't need to
// apply the storage each time it fires, only if there are changes
// that need to be set -- which is if setItems / removeItems have
// data.
const hasStorageChanges = Object.keys(setItems).length > 0 || Object.keys(removedItems).length > 0;
if (hasStorageChanges &&
(event === "SIGNED_IN" ||
event === "TOKEN_REFRESHED" ||
event === "USER_UPDATED" ||
event === "PASSWORD_RECOVERY" ||
event === "SIGNED_OUT" ||
event === "MFA_CHALLENGE_VERIFIED")) {
await (0, cookies_1.applyServerStorage)({ getAll, setAll, setItems, removedItems }, {
cookieOptions: options?.cookieOptions ?? null,
cookieEncoding: options?.cookieEncoding ?? "base64url",
});
}
});
return client;
}
//# sourceMappingURL=createServerClient.js.map