Files
flxn-app/src/lib/supertokens/client.ts
2026-03-02 09:43:46 -06:00

46 lines
1.2 KiB
TypeScript

import SuperTokens from "supertokens-web-js";
import Session from "supertokens-web-js/recipe/session";
import Passwordless from "supertokens-web-js/recipe/passwordless";
import { appInfo } from "./config";
import { logger } from "./";
export const resetRefreshFlag = () => {
logger.warn("resetRefreshFlag is deprecated. Use refreshManager.reset() instead.");
};
export const getOrCreateRefreshPromise = (refreshFn: () => Promise<boolean>): Promise<boolean> => {
logger.warn("getOrCreateRefreshPromise is deprecated. Use refreshManager.refresh() instead.");
return refreshFn();
};
export const frontendConfig = () => {
return {
appInfo,
recipeList: [
Passwordless.init(),
Session.init({
tokenTransferMethod: "cookie",
sessionTokenBackendDomain: undefined,
preAPIHook: async (context) => {
context.requestInit.credentials = "include";
return context;
},
}),
],
};
};
let initialized = false;
export function ensureSuperTokensFrontend() {
if (typeof window === "undefined") return;
if (!initialized) {
SuperTokens.init(frontendConfig());
initialized = true;
logger.info("SuperTokens initialized");
}
}