@clerk/chrome-extension
Version:
Clerk SDK for Chrome extensions
34 lines • 1.27 kB
JavaScript
import Clerk from "@clerk/clerk-js";
import { convertPublishableKeyToFrontendAPIOrigin, getClientCookie } from "./utils";
const KEY = "__clerk_client_jwt";
let clerk;
const logErrorHandler = (err) => console.error(err);
async function buildClerk({ publishableKey, tokenCache }) {
if (!clerk) {
const clerkFrontendAPIOrigin = convertPublishableKeyToFrontendAPIOrigin(publishableKey);
const clientCookie = await getClientCookie(clerkFrontendAPIOrigin).catch(logErrorHandler);
if (clientCookie) {
await tokenCache.saveToken(KEY, clientCookie.value).catch(logErrorHandler);
}
clerk = new Clerk(publishableKey);
clerk.__unstable__onBeforeRequest(async (requestInit) => {
var _a;
requestInit.credentials = "omit";
(_a = requestInit.url) == null ? void 0 : _a.searchParams.append("_is_native", "1");
const jwt = await tokenCache.getToken(KEY);
requestInit.headers.set("authorization", jwt || "");
});
clerk.__unstable__onAfterResponse(async (_, response) => {
const authHeader = response.headers.get("authorization");
if (authHeader) {
await tokenCache.saveToken(KEY, authHeader);
}
});
}
return clerk;
}
export {
buildClerk,
clerk
};
//# sourceMappingURL=singleton.js.map