diff --git a/lib/utilities/config.ts b/lib/config.ts similarity index 61% rename from lib/utilities/config.ts rename to lib/config.ts index 2fb2323..d1fb790 100644 --- a/lib/utilities/config.ts +++ b/lib/config.ts @@ -1,9 +1,16 @@ +export interface TokenStore { + getToken(): Promise; + setToken(tokens: string): Promise; + clearToken(): Promise; +} + export const kindeConfig: { clientId: string; clientSecret: string; kinde_domain: string; audience: string; token: string; + tokenStore?: TokenStore; } = { clientId: "client_id", clientSecret: "client", diff --git a/lib/utilities/constants.ts b/lib/constants.ts similarity index 100% rename from lib/utilities/constants.ts rename to lib/constants.ts diff --git a/lib/main.ts b/lib/main.ts index 2e27af3..056730c 100644 --- a/lib/main.ts +++ b/lib/main.ts @@ -5,7 +5,7 @@ export * from "./api/index"; export * from "./utilities/index"; import { OpenAPI } from "./api/index"; -import { kindeConfig } from "./utilities/config"; +import { kindeConfig } from "./config"; import { getToken } from "./utilities/getToken"; if (!process.env.KINDE_DOMAIN) { diff --git a/lib/utilities/getToken.ts b/lib/utilities/getToken.ts index d69ab61..ee1bad9 100644 --- a/lib/utilities/getToken.ts +++ b/lib/utilities/getToken.ts @@ -1,7 +1,7 @@ -import * as constants from "./constants"; +import * as constants from "../constants"; import { setToken } from "./setToken"; import { jwtDecode } from "./jwt-decode"; -import { kindeConfig } from "./config"; +import { kindeConfig } from "../config"; import { OpenAPI } from "../api"; import { LIB_VERSION } from "../version"; @@ -10,7 +10,12 @@ import { LIB_VERSION } from "../version"; * @param token - The token to be used for requests */ export const getToken = async (): Promise => { - if (kindeConfig.token) { + let token: string = ""; + if (kindeConfig.tokenStore?.getToken) { + token = await kindeConfig.tokenStore.getToken(); + } + + if (kindeConfig.token || token) { const decoded = jwtDecode(kindeConfig.token); if (decoded.exp && decoded.exp * 1000 > Date.now()) { return kindeConfig.token; diff --git a/lib/utilities/index.ts b/lib/utilities/index.ts index f74e080..28773e8 100644 --- a/lib/utilities/index.ts +++ b/lib/utilities/index.ts @@ -1,4 +1,5 @@ import { setToken } from "./setToken"; import { getToken } from "./getToken"; +import { jwtDecode } from "./jwt-decode"; -export { setToken, getToken }; +export { setToken, getToken, jwtDecode }; diff --git a/lib/utilities/setToken.ts b/lib/utilities/setToken.ts index 233e4ed..1cd79a2 100644 --- a/lib/utilities/setToken.ts +++ b/lib/utilities/setToken.ts @@ -1,9 +1,13 @@ -import { kindeConfig } from "./config"; +import { kindeConfig } from "../config"; /** * Set the token to be used for requests * @param token - The token to be used for requests */ export const setToken = (token: string) => { + if (kindeConfig.tokenStore?.setToken) { + kindeConfig.tokenStore.setToken(token); + return; + } kindeConfig.token = token; };