@alliumcloud/avatar-sso-internal 2.5.6-dev.1 → 2.5.6-testing.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -105,8 +105,8 @@ __export(environment_exports, {
|
|
|
105
105
|
ssoClientUrl: () => ssoClientUrl,
|
|
106
106
|
ssoServerUrl: () => ssoServerUrl
|
|
107
107
|
});
|
|
108
|
-
var ssoClientUrl = "https://app-
|
|
109
|
-
var ssoServerUrl = "https://api-gw-
|
|
108
|
+
var ssoClientUrl = "https://app-testing.2x22.com";
|
|
109
|
+
var ssoServerUrl = "https://api-gw-testing.2x22.com/sso/api/v1";
|
|
110
110
|
|
|
111
111
|
// src/config/index.ts
|
|
112
112
|
var db = new Database({
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/database.ts","../src/config/environment.ts","../src/config/index.ts","../src/lib/CustomStorage.ts","../src/lib/utils.ts","../src/main.ts"],"names":["db","ssoClientUrl","ssoServerUrl","r"],"mappings":"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","file":"main.js","sourcesContent":["export default class Database {\n constructor(\n private readonly config: {\n dbName: string;\n dbVersion: number;\n storeName: string;\n },\n ) {}\n\n open = (): Promise<IDBDatabase> => {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.config.dbName, this.config.dbVersion);\n\n request.onerror = () => reject(request.error);\n\n request.onupgradeneeded = () => {\n const db = request.result;\n\n if (!db.objectStoreNames.contains(this.config.storeName))\n db.createObjectStore(this.config.storeName, {\n keyPath: \"id\",\n });\n };\n\n request.onsuccess = () => resolve(request.result);\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n create = async (user: { id: string; [key: string]: any }) => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readwrite\");\n const store = tx.objectStore(this.config.storeName);\n\n const request = store.add(user);\n\n request.onsuccess = () => resolve(user);\n request.onerror = () => reject(request.error);\n });\n };\n\n getById = async <T = unknown>(id: string): Promise<T | null> => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readonly\");\n const store = tx.objectStore(this.config.storeName);\n\n const request = store.get(id) ?? null;\n\n request.onsuccess = () => resolve(request.result as T);\n request.onerror = () => reject(request.error);\n });\n };\n\n getAll = async () => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readonly\");\n const store = tx.objectStore(this.config.storeName);\n\n const request = store.getAll();\n\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n update = async (id: string, updates: Partial<Record<string, any>>) => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readwrite\");\n const store = tx.objectStore(this.config.storeName);\n\n const getReq = store.get(id);\n\n getReq.onerror = () => reject(getReq.error);\n\n getReq.onsuccess = () => {\n if (!getReq.result) {\n reject(new Error(\"User not found\"));\n return;\n }\n\n const updatedUser = {\n ...getReq.result,\n ...updates,\n };\n\n const putReq = store.put(updatedUser);\n\n putReq.onsuccess = () => resolve(updatedUser);\n putReq.onerror = () => reject(putReq.error);\n };\n });\n };\n\n delete = async (id: string) => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readwrite\");\n const store = tx.objectStore(this.config.storeName);\n\n const request = store.delete(id);\n\n request.onsuccess = () => resolve(true);\n request.onerror = () => reject(request.error);\n });\n };\n\n reset = async () => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readwrite\");\n const store = tx.objectStore(this.config.storeName);\n\n const request = store.clear();\n\n request.onsuccess = () => resolve(true);\n request.onerror = () => reject(request.error);\n });\n };\n}\n","/**\n * URLs baked in at build time by tsup — see tsup.config.ts.\n * `process.env.*` refs here are compile-time string replacements, not runtime lookups.\n */\ndeclare const process: {\n env: {\n SSO_CLIENT_URL: string;\n SSO_SERVER_URL: string;\n };\n};\n\nexport const ssoClientUrl: string = process.env.SSO_CLIENT_URL;\nexport const ssoServerUrl: string = process.env.SSO_SERVER_URL;\n","import Database from \"../lib/database\";\nimport { Actions } from \"../types\";\nimport * as environment from \"./environment\";\n\nexport const db = new Database({\n dbName: \"sso-sdk\",\n dbVersion: 1,\n storeName: \"credentials\",\n});\n\nexport const ssoClientUrl = environment?.ssoClientUrl;\nexport const ssoServerUrl = environment?.ssoServerUrl;\n\nexport const actions = {\n local_login: \"local-login\",\n local_register: \"local-register\",\n local_logout: \"local-logout\",\n local_exchange: \"local-exchange\",\n sso_exchange: \"sso-exchange\",\n logout: \"logout\",\n session_cleared: \"session-cleared\",\n refresh: \"refresh\",\n profile_fetch: \"profile.fetch\",\n profile_update: \"profile.update\",\n profile_photo_update: \"profile-photo.update\",\n cloth_add: \"cloth.add\",\n cloth_fetch_all: \"cloth.fetch-all\",\n cloth_fetch: \"cloth.fetch\",\n cloth_update: \"cloth.update\",\n cloth_delete: \"cloth.delete\",\n material_add: \"material.add\",\n material_fetch_all: \"material.fetch-all\",\n material_fetch: \"material.fetch\",\n material_update: \"material.update\",\n material_delete: \"material.delete\",\n skull_add: \"skull.add\",\n skull_update: \"skull.update\",\n skull_fetch_all: \"skull.fetch-all\",\n skull_fetch: \"skull.fetch\",\n skull_delete: \"skull.delete\",\n skull_material_add: \"skull-material.add\",\n skull_material_fetch_all: \"skull-material.fetch-all\",\n skull_material_fetch: \"skull-material.fetch\",\n skull_material_update: \"skull-material.update\",\n skull_material_delete: \"skull-material.delete\",\n body_add: \"body.add\",\n body_fetch_all: \"body.fetch-all\",\n body_fetch: \"body.fetch\",\n body_update: \"body.update\",\n body_delete: \"body.delete\",\n} satisfies Record<string, Actions[\"type\"]>;\n","interface StorageDriver {\n get(key: string): string | null;\n set(key: string, value: string): void;\n remove(key: string): void;\n}\n\nexport default class CustomStorage {\n constructor(private readonly storage: StorageDriver) {}\n\n open = async () => this.storage;\n\n create = async <T extends { id: string }>(user: T) => {\n this.storage.set(user.id, JSON.stringify(user));\n\n return user;\n };\n\n getById = async <T = unknown>(id: string): Promise<T | null> => {\n const item = this.storage.get(id);\n\n if (!item) return null;\n\n return JSON.parse(item) as T;\n };\n\n getAll = async () => {\n return [];\n };\n\n update = async <T extends Record<string, unknown>>(\n id: string,\n updates: Partial<T>,\n ) => {\n const item = await this.getById<T>(id);\n\n if (!item) throw new Error(\"User not found\");\n\n const updatedItem = {\n ...item,\n ...updates,\n };\n\n this.storage.set(id, JSON.stringify(updatedItem));\n\n return updatedItem;\n };\n\n delete = async (id: string) => {\n this.storage.remove(id);\n\n return true;\n };\n\n reset = async () => {\n this.storage.remove(\"local-user\");\n\n return true;\n };\n}\n","export const isBrowser = () => typeof window !== \"undefined\";\n","import * as c from \"./config\";\nimport CustomStorage from \"./lib/CustomStorage\";\nimport Database from \"./lib/database\";\nimport { isBrowser } from \"./lib/utils\";\nimport {\n AddClothFilePayload,\n AddClothPayload,\n AddMaterialFilePayload,\n AddMaterialPayload,\n AddSkullFilePayload,\n AddSkullPayload,\n Body,\n BodyAddFilePayload,\n BodyAddPayload,\n BodyUpdateFilePayload,\n BodyUpdatePayload,\n Cb,\n Cloth,\n Config,\n DBRes,\n ErrorRes,\n Exchange,\n GetClothsOptions,\n GetMaterialsOptions,\n LocalRegister,\n LocalRegisterPayload,\n LoginPayload,\n Material,\n Profile,\n RefreshTokenPayload,\n RefToken,\n SignedUrl,\n Skull,\n SkullMaterial,\n SkullMaterialAddFilePayload,\n SkullMaterialAddPayload,\n SkullMaterialUpdateFilePayload,\n SkullMaterialUpdatePayload,\n SuccessRes,\n UpdateClothPayload,\n UpdateMaterialPayload,\n UpdateProfilePayload,\n UpdateProfilePicture,\n UpdateProfilePicturePayload,\n UpdateSkullPayload,\n Verify,\n VerifyOtpPayload,\n} from \"./types\";\n\nexport type * from \"./types\";\n\nexport { default as CustomStorage } from \"./lib/CustomStorage\";\n\nexport default class SSO {\n readonly serviceType = \"AVATAR_SSO\";\n protected readonly db: Database | CustomStorage;\n protected ssoClientUrl = c.ssoClientUrl;\n protected ssoServerUrl = c.ssoServerUrl;\n readonly sdkKey: string;\n readonly dbId = \"local-user\";\n private callbacks = new Set<Cb>();\n private cb: Cb = (payload) => {\n for (const cb of this.callbacks) cb(payload);\n };\n\n constructor(private readonly config: Config) {\n this.sdkKey = config.sdkKey ?? \"no-sdk-key\";\n this.db = config.storage instanceof CustomStorage ? config.storage : c.db;\n this.ssoClientUrl = config.clientUrl ?? c.ssoClientUrl;\n this.ssoServerUrl = config.serverUrl ?? c.ssoServerUrl;\n }\n\n readonly register = async (\n payload: LocalRegisterPayload,\n ): Promise<LocalRegister> => {\n const { redirectUri, type, ...body } = payload;\n const queryParams = this.emailVerificationQuery({ redirectUri, type });\n\n const res = await fetch(`${this.ssoServerUrl}/users/signup${queryParams}`, {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-sdk-key\": this.sdkKey,\n },\n });\n const json = (await res.json()) as SuccessRes<LocalRegister> | ErrorRes;\n\n if (!res?.ok || !json.success)\n throw new Error(json.message ?? \"SSO-SDK: Local register failed.\");\n\n this.cb({\n type: c.actions.local_register,\n payload: json.data,\n });\n\n return json.data;\n };\n\n private readonly localLogin = async (payload: LoginPayload) => {\n if (!(payload instanceof Object)) return;\n\n const { redirectUri, type, ...body } = payload;\n const queryParams = this.emailVerificationQuery({ redirectUri, type });\n\n const res = await fetch(`${this.ssoServerUrl}/users/signin${queryParams}`, {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const json: SuccessRes | ErrorRes = await res.json();\n\n if (!res?.ok || !json.success)\n throw new Error(json.message ?? \"SSO-SDK: Local login failed.\");\n\n this.cb({\n type: c.actions.local_login,\n payload: null,\n });\n };\n private readonly ssoLogin = async (redirectUrl: LoginPayload) => {\n if (redirectUrl instanceof Object) return;\n\n this.throwIfNotBrowser();\n\n const r = `${this.ssoClientUrl}/sso?sdkKey=${this.sdkKey}&redirectUri=${redirectUrl}`;\n\n window.location.href = r;\n };\n /**\n * Login function that triggers both local and SSO login flows. If the payload is a string, it will trigger the SSO login flow with the payload as the redirect URL. If the payload is an object, it will trigger the local login flow with the payload as the login data.\n * @param payload just redirect URL string for SSO login or LocalLoginPayload for local login\n * @returns\n */\n readonly login = async (payload: LoginPayload) => {\n await Promise.all([this.localLogin(payload), this.ssoLogin(payload)]);\n };\n\n private readonly decodeJwtPayload = <T>(token: string) => {\n try {\n const payload = token.split(\".\")[1];\n if (!payload) return null;\n\n const base64 = payload.replace(/-/g, \"+\").replace(/_/g, \"/\");\n\n return JSON.parse(atob(base64)) as T;\n } catch {\n return null;\n }\n };\n\n /**\n * - it throws.\n */\n private readonly autoRefresh = async () => {\n const existingUser = await this.getLocalUser().catch(() => null);\n\n if (!existingUser) return null;\n\n const { accessToken, refreshToken } = existingUser.tokens;\n\n const decodedRT = this.decodeJwtPayload<RefreshTokenPayload>(refreshToken);\n const decodedAT = this.decodeJwtPayload<RefreshTokenPayload>(accessToken);\n\n const date = new Date();\n\n const isValidRefToken =\n decodedRT?.exp && decodedAT?.exp && date.getTime() < decodedRT.exp * 1000;\n\n if (!isValidRefToken) {\n await this.db.reset();\n throw new Error(`SSO-SDK: Session cleared. Please login again.`);\n } else {\n date.setMinutes(date.getMinutes() + 5); // check if it expires in the next 5 minutes\n const shouldRefresh =\n decodedAT?.exp && date.getTime() > decodedAT.exp * 1000;\n\n if (!shouldRefresh) return existingUser.tokens;\n\n return await this.refresh();\n }\n };\n\n private readonly localExchange = async (\n email: string | null,\n token: string | null,\n ): Promise<Exchange | void> => {\n if (!email || !token) return;\n\n const res = await fetch(`${this.ssoServerUrl}/users/verify`, {\n method: \"POST\",\n body: JSON.stringify({\n token,\n email,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const verifyRes: SuccessRes<Verify> | ErrorRes = await res.json();\n\n if (!res.ok || !verifyRes.success)\n throw new Error(verifyRes.message ?? `SSO-SDK: Local exchange failed.`);\n\n const profileRes = await fetch(`${this.ssoServerUrl}/users/profile`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${verifyRes.data.tokens.accessToken}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const profileJson: SuccessRes<Profile> | ErrorRes = await profileRes.json();\n\n if (!profileRes.ok || !profileJson.success)\n throw new Error(profileJson.message ?? `SSO-SDK: Profile fetch failed.`);\n\n await this.db.open();\n\n await this.db.delete(this.dbId);\n\n await this.db.create({\n ...profileJson.data,\n userId: profileJson.data.id,\n tokens: verifyRes.data.tokens,\n id: this.dbId,\n });\n\n this.cb({\n type: c.actions.local_exchange,\n payload: profileJson.data,\n });\n\n return { ...profileJson.data, tokens: verifyRes.data.tokens };\n };\n\n readonly verifyOtp = async (payload: VerifyOtpPayload) => {\n await this.db.reset();\n\n const email = payload.email.trim().toLowerCase();\n const otpCode = payload.otpCode.trim();\n\n if (!email || !otpCode) throw new Error(`SSO-SDK: Invalid OTP payload.`);\n\n const res = await this.localExchange(email, otpCode);\n\n if (!res) throw new Error(`SSO-SDK: OTP verification failed.`);\n\n return res;\n };\n private readonly ssoExchange = async (\n email: string | null,\n token: string | null,\n ): Promise<Exchange | void> => {\n if (email || !token) return;\n\n const res = await fetch(`${this.ssoServerUrl}/sso/exchange`, {\n method: \"POST\",\n body: JSON.stringify({\n token,\n sdkKey: this.sdkKey,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const data: SuccessRes<{\n tokens: {\n accessToken: string;\n refreshToken: string;\n };\n }> = await res.json();\n\n if (!res.ok)\n throw new Error(data.message ?? `SSO-SDK: SSO exchange failed.`);\n\n const profileRes = await fetch(`${this.ssoServerUrl}/users/profile`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${data.data.tokens.accessToken}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const profileJson: SuccessRes<Profile> | ErrorRes = await profileRes.json();\n\n if (!profileRes.ok || !profileJson.success)\n throw new Error(profileJson.message ?? `SSO-SDK: Profile fetch failed.`);\n\n await this.db.open();\n\n await this.db.delete(this.dbId);\n\n await this.db.create({\n ...profileJson.data,\n userId: profileJson.data.id,\n tokens: data.data.tokens,\n id: this.dbId,\n });\n\n this.cb({\n type: c.actions.sso_exchange,\n payload: profileJson.data,\n });\n\n return { ...profileJson.data, tokens: data.data.tokens };\n };\n /**\n * - this will just skip the exchange returning null if the query params are not correct and won't throw an error.\n */\n readonly exchange = async () => {\n this.throwIfNotBrowser();\n\n const url = new URL(window.location.href);\n const email = url.searchParams.get(\"email\");\n const token = url.searchParams.get(\"token\");\n\n const isExchanging = !!(email && token);\n\n if (isExchanging) {\n url.searchParams.delete(\"email\");\n url.searchParams.delete(\"token\");\n window.history.replaceState({}, \"\", url);\n }\n\n const tokenReused = await this.autoRefresh().catch((e) => {\n if (/session cleared/i.test(e?.message ?? \"\") && !isExchanging) {\n this.cb({\n type: c.actions.session_cleared,\n payload: null,\n });\n }\n\n if (!isExchanging)\n throw new Error(e?.message ?? `SSO-SDK: Auto refresh failed.`);\n\n return null;\n });\n\n if (tokenReused && isExchanging)\n throw new Error(`SSO-SDK: User already logged in.`);\n\n if (!isExchanging) return null;\n\n await this.db.reset(); // reset the db before exchange to avoid conflicts\n\n const sanitizedEmail = email\n ? email.trim().toLowerCase().replace(/\\s+/g, \"+\")\n : null;\n\n const res = await Promise.all([\n this.localExchange(sanitizedEmail, token),\n this.ssoExchange(sanitizedEmail, token),\n ]).then((r) => r.find((r2) => !!r2));\n\n if (!res) throw new Error(`SSO-SDK: Exchange failed.`);\n\n return res;\n };\n\n readonly fetchProfile = async () => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/users/profile`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const pRes: SuccessRes<Profile> | ErrorRes = await res.json();\n\n if (!res?.ok || !pRes.success)\n throw new Error(pRes.message ?? `SSO-SDK: Profile fetch failed.`);\n\n this.cb({\n type: c.actions.profile_fetch,\n payload: pRes.data,\n });\n\n return pRes.data;\n };\n\n readonly refresh = async () => {\n const dbUser = (await this.db.getById(this.dbId)) as DBRes | undefined;\n\n if (!dbUser) throw new Error(`SSO-SDK: No user found in IndexedDB.`);\n\n const res = await fetch(`${this.ssoServerUrl}/users/refresh`, {\n method: \"POST\",\n body: JSON.stringify({\n token: dbUser.tokens.refreshToken,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const refTokeRes: SuccessRes<RefToken> | ErrorRes = await res.json();\n\n if (!res.ok || !refTokeRes.success) {\n this.db.delete(this.dbId);\n this.cb({\n type: c.actions.session_cleared,\n payload: null,\n });\n throw new Error(refTokeRes.message ?? `SSO-SDK: Refresh failed.`);\n }\n\n await this.db.update(this.dbId, {\n ...dbUser,\n tokens: {\n accessToken: refTokeRes.data.accessToken,\n refreshToken: refTokeRes.data.refreshToken,\n },\n });\n\n this.cb({\n type: c.actions.refresh,\n payload: refTokeRes.data,\n });\n\n return refTokeRes.data;\n };\n\n private readonly localLogout = async (redirectUrl?: string) => {\n if (redirectUrl) return;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/users/logout`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const json: SuccessRes | ErrorRes = await res.json();\n\n if (!res?.ok || !json.success)\n throw new Error(json.message ?? `SSO-SDK: Local logout failed.`);\n\n await this.db.delete(this.dbId);\n\n this.cb({\n type: c.actions.local_logout,\n payload: null,\n });\n\n return true;\n };\n private readonly ssoLogout = async (redirectUrl?: string) => {\n if (!redirectUrl) return;\n\n this.throwIfNotBrowser();\n\n const url = this.validatedUrl(redirectUrl);\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/users/logout`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const json: SuccessRes | ErrorRes = await res.json();\n\n if (!res?.ok || !json.success)\n throw new Error(json.message ?? `SSO-SDK: Logout failed.`);\n\n await this.db.delete(this.dbId);\n\n const goToUrl = `${this.ssoClientUrl}/logout?redirectUri=${url}`;\n location.href = goToUrl;\n\n this.cb({\n type: c.actions.logout,\n payload: null,\n });\n\n return true;\n };\n /**\n * - If a redirect URL is provided, it will trigger the SSO logout flow and redirect the user to the provided URL after logout.\n * - If no redirect URL is provided, it will trigger the local logout flow and clear the user data from IndexedDB.\n */\n readonly logout = async (redirectUrl?: string): Promise<Boolean> => {\n const res = await Promise.all([\n this.localLogout(redirectUrl),\n this.ssoLogout(redirectUrl),\n ]).then((r) => r.find((r) => r !== undefined));\n\n if (!res) throw new Error(\"SSO-SDK: Logout failed.\");\n\n this.cb({\n type: c.actions.session_cleared,\n payload: null,\n });\n\n return res;\n };\n\n readonly onEvents = (cb: Cb) => {\n this.callbacks.add(cb);\n return () => this.callbacks.delete(cb);\n };\n\n protected readonly withRefresh = async (\n api: (aT: string) => Promise<Response>,\n ) => {\n await this.db.open();\n const dbUser = (await this.db.getById(this.dbId)) as DBRes | undefined;\n\n if (!dbUser) throw new Error(`SSO-SDK: No user found in IndexedDB.`);\n\n const r = await api(dbUser.tokens.accessToken);\n\n if (r.status !== 401) return r;\n\n const resToken = await this.refresh();\n\n const nR = await api(resToken.accessToken);\n\n return nR;\n };\n\n readonly profileUpdate = async (payload: UpdateProfilePayload) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/users/profile`, {\n method: \"PATCH\",\n body: JSON.stringify(payload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const pRes: SuccessRes<Profile> | ErrorRes = await res.json();\n if (!res?.ok || !pRes.success)\n throw new Error(pRes.message ?? `SSO-SDK: Profile update failed.`);\n\n const { id, ...rest } = pRes.data;\n\n await this.db.update(this.dbId, {\n ...rest,\n userId: id,\n });\n\n this.cb({\n type: c.actions.profile_update,\n payload: pRes.data,\n });\n\n return pRes.data;\n };\n\n readonly avatarUpdate = async (file: File) => {\n const photoURL = await this.fileUpload(file);\n\n if (!photoURL) throw new Error(`SSO-SDK: File upload failed.`);\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/users/profile/avatar`, {\n method: \"PUT\",\n body: JSON.stringify({\n photoURL,\n } satisfies UpdateProfilePicturePayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const pRes: SuccessRes<UpdateProfilePicture> | ErrorRes = await res.json();\n\n if (!res?.ok || !pRes.success)\n throw new Error(pRes.message ?? `SSO-SDK: Profile update failed.`);\n\n const { id, ...rest } = pRes.data;\n\n await this.db.update(this.dbId, {\n ...rest,\n userId: id,\n });\n\n this.cb({\n type: c.actions.profile_photo_update,\n payload: pRes.data,\n });\n\n return pRes.data;\n };\n\n private readonly fileUpload = async (file: File) => {\n const { type } = file;\n\n const url = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/uploads/url?fileType=${type}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const json: SuccessRes<SignedUrl> | ErrorRes = await url.json();\n if (!url?.ok || !json.success)\n throw new Error(json.message ?? `SSO-SDK: could not get upload url.`);\n\n const upload = await fetch(json.data.url, {\n method: json.data.method,\n body: file,\n headers: json.data.headers,\n });\n\n if (!upload.ok) throw new Error(`SSO-SDK: could not upload file.`);\n\n const { origin, pathname } = new URL(json.data.url);\n\n return `${origin}${pathname}`;\n };\n\n private readonly clothAdd = async (payload: AddClothFilePayload) => {\n const thumb = await this.fileUpload(payload.thumb);\n if (!thumb) throw new Error(`SSO-SDK: File upload failed.`);\n\n const jsonPayload = {\n ...payload,\n thumb,\n } satisfies AddClothPayload;\n\n await this.db.open();\n\n const dbUser = (await this.db.getById(this.dbId)) as DBRes | undefined;\n\n if (!dbUser) throw new Error(`SSO-SDK: No user found in IndexedDB.`);\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings`, {\n method: \"POST\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT || dbUser.tokens.accessToken}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Cloth> | ErrorRes = await res.json();\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? `SSO-SDK: Cloth add failed.`);\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.cloth_add,\n payload: data,\n });\n\n return data;\n };\n\n readonly clothGetAll = async (options?: GetClothsOptions) => {\n const queryParams = new URLSearchParams({\n skip: Math.ceil(options?.skip ?? 0).toString(),\n limit: Math.ceil(options?.limit ?? 10).toString(),\n sort: options?.sort ?? \"asc\",\n });\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(\n `${this.ssoServerUrl}/clothings?${queryParams.toString()}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n },\n );\n });\n\n const clothRes: SuccessRes<Cloth[]> | ErrorRes = await res.json();\n if (!res?.ok || !clothRes.success)\n throw new Error(clothRes.message ?? `SSO-SDK: Get all cloths failed.`);\n\n this.cb({\n type: c.actions.cloth_fetch_all,\n payload: clothRes.data,\n });\n\n return clothRes.data;\n };\n\n readonly clothGetById = async (clothId: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings/${clothId}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const clothRes: SuccessRes<Cloth> | ErrorRes = await res.json();\n\n if (!res?.ok || !clothRes.success)\n throw new Error(clothRes.message ?? `SSO-SDK: Get cloth by id failed.`);\n\n this.cb({\n type: c.actions.cloth_fetch,\n payload: clothRes.data,\n });\n\n return clothRes.data;\n };\n\n private readonly clothUpdate = async (\n clothId: string,\n payload: UpdateClothPayload,\n ) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings/${clothId}`, {\n method: \"PATCH\",\n body: JSON.stringify(payload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const clothRes: SuccessRes<Cloth> | ErrorRes = await res.json();\n\n if (!res?.ok || !clothRes.success)\n throw new Error(clothRes.message ?? `SSO-SDK: Cloth update failed.`);\n\n const { data } = clothRes;\n\n this.cb({\n type: c.actions.cloth_update,\n payload: data,\n });\n\n return data;\n };\n\n private readonly clothDelete = async (clothId: string) => {\n await this.db.open();\n\n const dbUser = (await this.db.getById(this.dbId)) as DBRes | undefined;\n\n if (!dbUser) throw new Error(`SSO-SDK: No user found in IndexedDB.`);\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings/${clothId}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT || dbUser.tokens.accessToken}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const clothRes: SuccessRes<Cloth> | ErrorRes = await res.json();\n\n if (!res?.ok || !clothRes.success)\n throw new Error(clothRes.message ?? `SSO-SDK: Cloth delete failed.`);\n\n this.cb({\n type: c.actions.cloth_delete,\n payload: clothRes.data,\n });\n\n return clothRes.data;\n };\n\n // materials\n private readonly materialAdd = async (payload: AddMaterialFilePayload) => {\n const thumb = await this.fileUpload(payload.thumb);\n if (!thumb) throw new Error(`SSO-SDK: File upload failed.`);\n\n const jsonPayload = {\n ...payload,\n thumb: thumb,\n } satisfies AddMaterialPayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings/materials`, {\n method: \"POST\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const materialRes: SuccessRes<Material> | ErrorRes = await res.json();\n\n if (!res?.ok || !materialRes.success)\n throw new Error(materialRes.message ?? `SSO-SDK: Material add failed.`);\n\n const { data } = materialRes;\n\n this.cb({\n type: c.actions.material_add,\n payload: data,\n });\n\n return data;\n };\n\n readonly materialGetAll = async (options?: GetMaterialsOptions) => {\n const params = new URLSearchParams({\n skip: options?.skip?.toString() || \"0\",\n limit: options?.limit?.toString() || \"10\",\n sort: options?.sort || \"asc\",\n });\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings/materials?${params}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const materialRes: SuccessRes<Material[]> | ErrorRes = await res.json();\n\n if (!res?.ok || !materialRes.success)\n throw new Error(\n materialRes.message ?? `SSO-SDK: Material fetch all failed.`,\n );\n\n const { data } = materialRes;\n\n this.cb({\n type: c.actions.material_fetch_all,\n payload: data,\n });\n\n return data;\n };\n\n readonly materialGetById = async (materialId: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(\n `${this.ssoServerUrl}/clothings/materials/${materialId}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n },\n );\n });\n\n const materialRes: SuccessRes<Material> | ErrorRes = await res.json();\n\n if (!res?.ok || !materialRes.success)\n throw new Error(\n materialRes.message ?? `SSO-SDK: Material fetch by id failed.`,\n );\n\n const { data } = materialRes;\n\n this.cb({\n type: c.actions.material_fetch,\n payload: data,\n });\n\n return data;\n };\n\n private readonly materialUpdate = async (\n materialId: string,\n payload: UpdateMaterialPayload,\n ) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(\n `${this.ssoServerUrl}/clothings/materials/${materialId}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(payload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n },\n );\n });\n\n const materialRes: SuccessRes<Material> | ErrorRes = await res.json();\n if (!res?.ok || !materialRes.success)\n throw new Error(\n materialRes.message ?? `SSO-SDK: Material update failed.`,\n );\n\n const { data } = materialRes;\n\n this.cb({\n type: c.actions.material_update,\n payload: data,\n });\n\n return data;\n };\n\n private readonly materialDelete = async (materialId: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(\n `${this.ssoServerUrl}/clothings/materials/${materialId}`,\n {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n },\n );\n });\n\n const materialRes: SuccessRes<Material> | ErrorRes = await res.json();\n\n if (!res?.ok || !materialRes.success)\n throw new Error(\n materialRes.message ?? `SSO-SDK: Material delete failed.`,\n );\n\n const { data } = materialRes;\n\n this.cb({\n type: c.actions.material_delete,\n payload: data,\n });\n\n return data;\n };\n\n // skulls\n private readonly skullAdd = async (payload: AddSkullFilePayload) => {\n const preview = await this.fileUpload(payload.filePreview);\n const model = await this.fileUpload(payload.file3d);\n\n if (!preview || !model) throw new Error(`SSO-SDK: File upload failed.`);\n\n const jsonPayload = {\n ...payload,\n previewUrl: preview,\n url3d: model,\n } satisfies AddSkullPayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls`, {\n method: \"POST\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<Skull> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(skullRes.message ?? \"SSO-SDK: Skull add failed.\");\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_add,\n payload: data,\n });\n\n return data;\n };\n\n private readonly skullUpdate = async (\n skullId: string,\n payload: UpdateSkullPayload,\n ) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/${skullId}`, {\n method: \"PATCH\",\n body: JSON.stringify(payload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes = (await res.json()) as SuccessRes<Skull> | ErrorRes;\n\n if (!res?.ok || !skullRes.success)\n throw new Error(skullRes.message ?? \"SSO-SDK: Skull update failed.\");\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_update,\n payload: data,\n });\n\n return data;\n };\n\n readonly skullGetAll = async () => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<Skull[]> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(skullRes.message ?? \"SSO-SDK: Skull get all failed.\");\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_fetch_all,\n payload: data,\n });\n\n return data;\n };\n\n readonly skullGetById = async (skullId: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/${skullId}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<Skull> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(skullRes.message ?? \"SSO-SDK: Skull get by id failed.\");\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_fetch,\n payload: data,\n });\n\n return data;\n };\n\n private readonly skullDelete = async (skullId: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/${skullId}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<Skull> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(skullRes.message ?? \"SSO-SDK: Skull delete failed.\");\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_delete,\n payload: data,\n });\n\n return data;\n };\n\n // skull material\n private readonly skullMaterialAdd = async (\n payload: SkullMaterialAddFilePayload,\n ) => {\n const { file3d, previewFile, ...rest } = payload;\n const preview = await this.fileUpload(previewFile);\n const model = await this.fileUpload(file3d);\n\n if (!preview || !model) throw new Error(`SSO-SDK: File upload failed.`);\n\n const jsonPayload = {\n ...rest,\n previewUrl: preview,\n url3d: model,\n } satisfies SkullMaterialAddPayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/materials`, {\n method: \"POST\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<SkullMaterial> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(\n skullRes.message ?? \"SSO-SDK: Skull material add failed.\",\n );\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_material_add,\n payload: data,\n });\n\n return data;\n };\n\n readonly skullMaterialGetAll = async () => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/materials`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<SkullMaterial[]> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(\n skullRes.message ?? \"SSO-SDK: Skull materials get all failed.\",\n );\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_material_fetch_all,\n payload: data,\n });\n\n return data;\n };\n\n readonly skullMaterialGetById = async (id: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/materials/${id}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<SkullMaterial> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(\n skullRes.message ?? \"SSO-SDK: Skull material get by id failed.\",\n );\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_material_fetch,\n payload: data,\n });\n\n return data;\n };\n\n private readonly skullMaterialUpdate = async (\n id: string,\n payload: SkullMaterialUpdateFilePayload,\n ) => {\n const { file3d, previewFile, ...rest } = payload;\n const preview = previewFile && (await this.fileUpload(previewFile));\n const model = file3d && (await this.fileUpload(file3d));\n\n const jsonPayload = {\n ...rest,\n previewUrl: preview,\n url3d: model,\n } satisfies SkullMaterialUpdatePayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/materials/${id}`, {\n method: \"PATCH\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<SkullMaterial> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(\n skullRes.message ?? \"SSO-SDK: Skull material update failed.\",\n );\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_material_update,\n payload: data,\n });\n\n return data;\n };\n\n private readonly skullMaterialDelete = async (id: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/materials/${id}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<SkullMaterial> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(\n skullRes.message ?? \"SSO-SDK: Skull material delete failed.\",\n );\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_material_delete,\n payload: data,\n });\n\n return data;\n };\n\n // body\n private readonly bodyAdd = async (payload: BodyAddFilePayload) => {\n const { file3d, previewFile, ...rest } = payload;\n const preview = await this.fileUpload(previewFile);\n const model = await this.fileUpload(file3d);\n\n if (!preview || !model) throw new Error(`SSO-SDK: File upload failed.`);\n\n const jsonPayload = {\n ...rest,\n previewUrl: preview,\n url3d: model,\n } satisfies BodyAddPayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/bodies`, {\n method: \"POST\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Body> | ErrorRes = await res.json();\n\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? \"SSO-SDK: Body add failed.\");\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.body_add,\n payload: data,\n });\n\n return data;\n };\n\n readonly bodyGetAll = async () => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/bodies`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Body[]> | ErrorRes = await res.json();\n\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? \"SSO-SDK: Body add failed.\");\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.body_fetch_all,\n payload: data,\n });\n\n return data;\n };\n\n readonly bodyGetById = async (id: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/bodies/${id}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Body> | ErrorRes = await res.json();\n\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? \"SSO-SDK: Body add failed.\");\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.body_fetch,\n payload: data,\n });\n\n return data;\n };\n\n private readonly bodyUpdate = async (\n id: string,\n payload: BodyUpdateFilePayload,\n ) => {\n const { file3d, previewFile, ...rest } = payload;\n const preview = previewFile && (await this.fileUpload(previewFile));\n const model = file3d && (await this.fileUpload(file3d));\n\n const jsonPayload = {\n ...rest,\n previewUrl: preview,\n url3d: model,\n } satisfies BodyUpdatePayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/bodies/${id}`, {\n method: \"PATCH\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Body> | ErrorRes = await res.json();\n\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? \"SSO-SDK: Body add failed.\");\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.body_update,\n payload: data,\n });\n\n return data;\n };\n\n private readonly bodyDelete = async (id: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/bodies/${id}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Body> | ErrorRes = await res.json();\n\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? \"SSO-SDK: Body add failed.\");\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.body_delete,\n payload: data,\n });\n\n return data;\n };\n\n private validatedUrl = (url: string) => {\n try {\n return new URL(url).href;\n } catch {\n throw new Error(`SSO-SDK: Invalid URL.`);\n }\n };\n\n private emailVerificationQuery = ({\n redirectUri,\n type,\n }: {\n redirectUri?: string;\n type?: \"otp\";\n }) => {\n const params = new URLSearchParams();\n\n if (redirectUri) params.set(\"redirectUri\", this.validatedUrl(redirectUri));\n if (type) params.set(\"type\", type);\n\n const query = params.toString();\n\n return query ? `?${query}` : \"\";\n };\n\n private throwIfNotBrowser = () => {\n if (!isBrowser()) throw new Error(\"SSO-SDK: Not in browser.\");\n };\n\n /**\n * get user from indexedDB without validating tokens.\n */\n readonly getLocalUser = async () => {\n const dbUser = (await this.db.getById(this.dbId)) as DBRes | undefined;\n\n if (!dbUser) throw new Error(`SSO-SDK: No user found in IndexedDB.`);\n\n return dbUser;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/database.ts","../src/config/environment.ts","../src/config/index.ts","../src/lib/CustomStorage.ts","../src/lib/utils.ts","../src/main.ts"],"names":["db","ssoClientUrl","ssoServerUrl","r"],"mappings":"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","file":"main.js","sourcesContent":["export default class Database {\n constructor(\n private readonly config: {\n dbName: string;\n dbVersion: number;\n storeName: string;\n },\n ) {}\n\n open = (): Promise<IDBDatabase> => {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.config.dbName, this.config.dbVersion);\n\n request.onerror = () => reject(request.error);\n\n request.onupgradeneeded = () => {\n const db = request.result;\n\n if (!db.objectStoreNames.contains(this.config.storeName))\n db.createObjectStore(this.config.storeName, {\n keyPath: \"id\",\n });\n };\n\n request.onsuccess = () => resolve(request.result);\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n create = async (user: { id: string; [key: string]: any }) => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readwrite\");\n const store = tx.objectStore(this.config.storeName);\n\n const request = store.add(user);\n\n request.onsuccess = () => resolve(user);\n request.onerror = () => reject(request.error);\n });\n };\n\n getById = async <T = unknown>(id: string): Promise<T | null> => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readonly\");\n const store = tx.objectStore(this.config.storeName);\n\n const request = store.get(id) ?? null;\n\n request.onsuccess = () => resolve(request.result as T);\n request.onerror = () => reject(request.error);\n });\n };\n\n getAll = async () => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readonly\");\n const store = tx.objectStore(this.config.storeName);\n\n const request = store.getAll();\n\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n update = async (id: string, updates: Partial<Record<string, any>>) => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readwrite\");\n const store = tx.objectStore(this.config.storeName);\n\n const getReq = store.get(id);\n\n getReq.onerror = () => reject(getReq.error);\n\n getReq.onsuccess = () => {\n if (!getReq.result) {\n reject(new Error(\"User not found\"));\n return;\n }\n\n const updatedUser = {\n ...getReq.result,\n ...updates,\n };\n\n const putReq = store.put(updatedUser);\n\n putReq.onsuccess = () => resolve(updatedUser);\n putReq.onerror = () => reject(putReq.error);\n };\n });\n };\n\n delete = async (id: string) => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readwrite\");\n const store = tx.objectStore(this.config.storeName);\n\n const request = store.delete(id);\n\n request.onsuccess = () => resolve(true);\n request.onerror = () => reject(request.error);\n });\n };\n\n reset = async () => {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(this.config.storeName, \"readwrite\");\n const store = tx.objectStore(this.config.storeName);\n\n const request = store.clear();\n\n request.onsuccess = () => resolve(true);\n request.onerror = () => reject(request.error);\n });\n };\n}\n","/**\n * URLs baked in at build time by tsup — see tsup.config.ts.\n * `process.env.*` refs here are compile-time string replacements, not runtime lookups.\n */\ndeclare const process: {\n env: {\n SSO_CLIENT_URL: string;\n SSO_SERVER_URL: string;\n };\n};\n\nexport const ssoClientUrl: string = process.env.SSO_CLIENT_URL;\nexport const ssoServerUrl: string = process.env.SSO_SERVER_URL;\n","import Database from \"../lib/database\";\nimport { Actions } from \"../types\";\nimport * as environment from \"./environment\";\n\nexport const db = new Database({\n dbName: \"sso-sdk\",\n dbVersion: 1,\n storeName: \"credentials\",\n});\n\nexport const ssoClientUrl = environment?.ssoClientUrl;\nexport const ssoServerUrl = environment?.ssoServerUrl;\n\nexport const actions = {\n local_login: \"local-login\",\n local_register: \"local-register\",\n local_logout: \"local-logout\",\n local_exchange: \"local-exchange\",\n sso_exchange: \"sso-exchange\",\n logout: \"logout\",\n session_cleared: \"session-cleared\",\n refresh: \"refresh\",\n profile_fetch: \"profile.fetch\",\n profile_update: \"profile.update\",\n profile_photo_update: \"profile-photo.update\",\n cloth_add: \"cloth.add\",\n cloth_fetch_all: \"cloth.fetch-all\",\n cloth_fetch: \"cloth.fetch\",\n cloth_update: \"cloth.update\",\n cloth_delete: \"cloth.delete\",\n material_add: \"material.add\",\n material_fetch_all: \"material.fetch-all\",\n material_fetch: \"material.fetch\",\n material_update: \"material.update\",\n material_delete: \"material.delete\",\n skull_add: \"skull.add\",\n skull_update: \"skull.update\",\n skull_fetch_all: \"skull.fetch-all\",\n skull_fetch: \"skull.fetch\",\n skull_delete: \"skull.delete\",\n skull_material_add: \"skull-material.add\",\n skull_material_fetch_all: \"skull-material.fetch-all\",\n skull_material_fetch: \"skull-material.fetch\",\n skull_material_update: \"skull-material.update\",\n skull_material_delete: \"skull-material.delete\",\n body_add: \"body.add\",\n body_fetch_all: \"body.fetch-all\",\n body_fetch: \"body.fetch\",\n body_update: \"body.update\",\n body_delete: \"body.delete\",\n} satisfies Record<string, Actions[\"type\"]>;\n","interface StorageDriver {\n get(key: string): string | null;\n set(key: string, value: string): void;\n remove(key: string): void;\n}\n\nexport default class CustomStorage {\n constructor(private readonly storage: StorageDriver) {}\n\n open = async () => this.storage;\n\n create = async <T extends { id: string }>(user: T) => {\n this.storage.set(user.id, JSON.stringify(user));\n\n return user;\n };\n\n getById = async <T = unknown>(id: string): Promise<T | null> => {\n const item = this.storage.get(id);\n\n if (!item) return null;\n\n return JSON.parse(item) as T;\n };\n\n getAll = async () => {\n return [];\n };\n\n update = async <T extends Record<string, unknown>>(\n id: string,\n updates: Partial<T>,\n ) => {\n const item = await this.getById<T>(id);\n\n if (!item) throw new Error(\"User not found\");\n\n const updatedItem = {\n ...item,\n ...updates,\n };\n\n this.storage.set(id, JSON.stringify(updatedItem));\n\n return updatedItem;\n };\n\n delete = async (id: string) => {\n this.storage.remove(id);\n\n return true;\n };\n\n reset = async () => {\n this.storage.remove(\"local-user\");\n\n return true;\n };\n}\n","export const isBrowser = () => typeof window !== \"undefined\";\n","import * as c from \"./config\";\nimport CustomStorage from \"./lib/CustomStorage\";\nimport Database from \"./lib/database\";\nimport { isBrowser } from \"./lib/utils\";\nimport {\n AddClothFilePayload,\n AddClothPayload,\n AddMaterialFilePayload,\n AddMaterialPayload,\n AddSkullFilePayload,\n AddSkullPayload,\n Body,\n BodyAddFilePayload,\n BodyAddPayload,\n BodyUpdateFilePayload,\n BodyUpdatePayload,\n Cb,\n Cloth,\n Config,\n DBRes,\n ErrorRes,\n Exchange,\n GetClothsOptions,\n GetMaterialsOptions,\n LocalRegister,\n LocalRegisterPayload,\n LoginPayload,\n Material,\n Profile,\n RefreshTokenPayload,\n RefToken,\n SignedUrl,\n Skull,\n SkullMaterial,\n SkullMaterialAddFilePayload,\n SkullMaterialAddPayload,\n SkullMaterialUpdateFilePayload,\n SkullMaterialUpdatePayload,\n SuccessRes,\n UpdateClothPayload,\n UpdateMaterialPayload,\n UpdateProfilePayload,\n UpdateProfilePicture,\n UpdateProfilePicturePayload,\n UpdateSkullPayload,\n Verify,\n VerifyOtpPayload,\n} from \"./types\";\n\nexport type * from \"./types\";\n\nexport { default as CustomStorage } from \"./lib/CustomStorage\";\n\nexport default class SSO {\n readonly serviceType = \"AVATAR_SSO\";\n protected readonly db: Database | CustomStorage;\n protected ssoClientUrl = c.ssoClientUrl;\n protected ssoServerUrl = c.ssoServerUrl;\n readonly sdkKey: string;\n readonly dbId = \"local-user\";\n private callbacks = new Set<Cb>();\n private cb: Cb = (payload) => {\n for (const cb of this.callbacks) cb(payload);\n };\n\n constructor(private readonly config: Config) {\n this.sdkKey = config.sdkKey ?? \"no-sdk-key\";\n this.db = config.storage instanceof CustomStorage ? config.storage : c.db;\n this.ssoClientUrl = config.clientUrl ?? c.ssoClientUrl;\n this.ssoServerUrl = config.serverUrl ?? c.ssoServerUrl;\n }\n\n readonly register = async (\n payload: LocalRegisterPayload,\n ): Promise<LocalRegister> => {\n const { redirectUri, type, ...body } = payload;\n const queryParams = this.emailVerificationQuery({ redirectUri, type });\n\n const res = await fetch(`${this.ssoServerUrl}/users/signup${queryParams}`, {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-sdk-key\": this.sdkKey,\n },\n });\n const json = (await res.json()) as SuccessRes<LocalRegister> | ErrorRes;\n\n if (!res?.ok || !json.success)\n throw new Error(json.message ?? \"SSO-SDK: Local register failed.\");\n\n this.cb({\n type: c.actions.local_register,\n payload: json.data,\n });\n\n return json.data;\n };\n\n private readonly localLogin = async (payload: LoginPayload) => {\n if (!(payload instanceof Object)) return;\n\n const { redirectUri, type, ...body } = payload;\n const queryParams = this.emailVerificationQuery({ redirectUri, type });\n\n const res = await fetch(`${this.ssoServerUrl}/users/signin${queryParams}`, {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const json: SuccessRes | ErrorRes = await res.json();\n\n if (!res?.ok || !json.success)\n throw new Error(json.message ?? \"SSO-SDK: Local login failed.\");\n\n this.cb({\n type: c.actions.local_login,\n payload: null,\n });\n };\n private readonly ssoLogin = async (redirectUrl: LoginPayload) => {\n if (redirectUrl instanceof Object) return;\n\n this.throwIfNotBrowser();\n\n const r = `${this.ssoClientUrl}/sso?sdkKey=${this.sdkKey}&redirectUri=${redirectUrl}`;\n\n window.location.href = r;\n };\n /**\n * Login function that triggers both local and SSO login flows. If the payload is a string, it will trigger the SSO login flow with the payload as the redirect URL. If the payload is an object, it will trigger the local login flow with the payload as the login data.\n * @param payload just redirect URL string for SSO login or LocalLoginPayload for local login\n * @returns\n */\n readonly login = async (payload: LoginPayload) => {\n await Promise.all([this.localLogin(payload), this.ssoLogin(payload)]);\n };\n\n private readonly decodeJwtPayload = <T>(token: string) => {\n try {\n const payload = token.split(\".\")[1];\n if (!payload) return null;\n\n const base64 = payload.replace(/-/g, \"+\").replace(/_/g, \"/\");\n\n return JSON.parse(atob(base64)) as T;\n } catch {\n return null;\n }\n };\n\n /**\n * - it throws.\n */\n private readonly autoRefresh = async () => {\n const existingUser = await this.getLocalUser().catch(() => null);\n\n if (!existingUser) return null;\n\n const { accessToken, refreshToken } = existingUser.tokens;\n\n const decodedRT = this.decodeJwtPayload<RefreshTokenPayload>(refreshToken);\n const decodedAT = this.decodeJwtPayload<RefreshTokenPayload>(accessToken);\n\n const date = new Date();\n\n const isValidRefToken =\n decodedRT?.exp && decodedAT?.exp && date.getTime() < decodedRT.exp * 1000;\n\n if (!isValidRefToken) {\n await this.db.reset();\n throw new Error(`SSO-SDK: Session cleared. Please login again.`);\n } else {\n date.setMinutes(date.getMinutes() + 5); // check if it expires in the next 5 minutes\n const shouldRefresh =\n decodedAT?.exp && date.getTime() > decodedAT.exp * 1000;\n\n if (!shouldRefresh) return existingUser.tokens;\n\n return await this.refresh();\n }\n };\n\n private readonly localExchange = async (\n email: string | null,\n token: string | null,\n ): Promise<Exchange | void> => {\n if (!email || !token) return;\n\n const res = await fetch(`${this.ssoServerUrl}/users/verify`, {\n method: \"POST\",\n body: JSON.stringify({\n token,\n email,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const verifyRes: SuccessRes<Verify> | ErrorRes = await res.json();\n\n if (!res.ok || !verifyRes.success)\n throw new Error(verifyRes.message ?? `SSO-SDK: Local exchange failed.`);\n\n const profileRes = await fetch(`${this.ssoServerUrl}/users/profile`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${verifyRes.data.tokens.accessToken}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const profileJson: SuccessRes<Profile> | ErrorRes = await profileRes.json();\n\n if (!profileRes.ok || !profileJson.success)\n throw new Error(profileJson.message ?? `SSO-SDK: Profile fetch failed.`);\n\n await this.db.open();\n\n await this.db.delete(this.dbId);\n\n await this.db.create({\n ...profileJson.data,\n userId: profileJson.data.id,\n tokens: verifyRes.data.tokens,\n id: this.dbId,\n });\n\n this.cb({\n type: c.actions.local_exchange,\n payload: profileJson.data,\n });\n\n return { ...profileJson.data, tokens: verifyRes.data.tokens };\n };\n\n readonly verifyOtp = async (payload: VerifyOtpPayload) => {\n await this.db.reset();\n\n const email = payload.email.trim().toLowerCase();\n const otpCode = payload.otpCode.trim();\n\n if (!email || !otpCode) throw new Error(`SSO-SDK: Invalid OTP payload.`);\n\n const res = await this.localExchange(email, otpCode);\n\n if (!res) throw new Error(`SSO-SDK: OTP verification failed.`);\n\n return res;\n };\n private readonly ssoExchange = async (\n email: string | null,\n token: string | null,\n ): Promise<Exchange | void> => {\n if (email || !token) return;\n\n const res = await fetch(`${this.ssoServerUrl}/sso/exchange`, {\n method: \"POST\",\n body: JSON.stringify({\n token,\n sdkKey: this.sdkKey,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const data: SuccessRes<{\n tokens: {\n accessToken: string;\n refreshToken: string;\n };\n }> = await res.json();\n\n if (!res.ok)\n throw new Error(data.message ?? `SSO-SDK: SSO exchange failed.`);\n\n const profileRes = await fetch(`${this.ssoServerUrl}/users/profile`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${data.data.tokens.accessToken}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const profileJson: SuccessRes<Profile> | ErrorRes = await profileRes.json();\n\n if (!profileRes.ok || !profileJson.success)\n throw new Error(profileJson.message ?? `SSO-SDK: Profile fetch failed.`);\n\n await this.db.open();\n\n await this.db.delete(this.dbId);\n\n await this.db.create({\n ...profileJson.data,\n userId: profileJson.data.id,\n tokens: data.data.tokens,\n id: this.dbId,\n });\n\n this.cb({\n type: c.actions.sso_exchange,\n payload: profileJson.data,\n });\n\n return { ...profileJson.data, tokens: data.data.tokens };\n };\n /**\n * - this will just skip the exchange returning null if the query params are not correct and won't throw an error.\n */\n readonly exchange = async () => {\n this.throwIfNotBrowser();\n\n const url = new URL(window.location.href);\n const email = url.searchParams.get(\"email\");\n const token = url.searchParams.get(\"token\");\n\n const isExchanging = !!(email && token);\n\n if (isExchanging) {\n url.searchParams.delete(\"email\");\n url.searchParams.delete(\"token\");\n window.history.replaceState({}, \"\", url);\n }\n\n const tokenReused = await this.autoRefresh().catch((e) => {\n if (/session cleared/i.test(e?.message ?? \"\") && !isExchanging) {\n this.cb({\n type: c.actions.session_cleared,\n payload: null,\n });\n }\n\n if (!isExchanging)\n throw new Error(e?.message ?? `SSO-SDK: Auto refresh failed.`);\n\n return null;\n });\n\n if (tokenReused && isExchanging)\n throw new Error(`SSO-SDK: User already logged in.`);\n\n if (!isExchanging) return null;\n\n await this.db.reset(); // reset the db before exchange to avoid conflicts\n\n const sanitizedEmail = email\n ? email.trim().toLowerCase().replace(/\\s+/g, \"+\")\n : null;\n\n const res = await Promise.all([\n this.localExchange(sanitizedEmail, token),\n this.ssoExchange(sanitizedEmail, token),\n ]).then((r) => r.find((r2) => !!r2));\n\n if (!res) throw new Error(`SSO-SDK: Exchange failed.`);\n\n return res;\n };\n\n readonly fetchProfile = async () => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/users/profile`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const pRes: SuccessRes<Profile> | ErrorRes = await res.json();\n\n if (!res?.ok || !pRes.success)\n throw new Error(pRes.message ?? `SSO-SDK: Profile fetch failed.`);\n\n this.cb({\n type: c.actions.profile_fetch,\n payload: pRes.data,\n });\n\n return pRes.data;\n };\n\n readonly refresh = async () => {\n const dbUser = (await this.db.getById(this.dbId)) as DBRes | undefined;\n\n if (!dbUser) throw new Error(`SSO-SDK: No user found in IndexedDB.`);\n\n const res = await fetch(`${this.ssoServerUrl}/users/refresh`, {\n method: \"POST\",\n body: JSON.stringify({\n token: dbUser.tokens.refreshToken,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-sdk-key\": this.sdkKey,\n },\n });\n\n const refTokeRes: SuccessRes<RefToken> | ErrorRes = await res.json();\n\n if (!res.ok || !refTokeRes.success) {\n this.db.delete(this.dbId);\n this.cb({\n type: c.actions.session_cleared,\n payload: null,\n });\n throw new Error(refTokeRes.message ?? `SSO-SDK: Refresh failed.`);\n }\n\n await this.db.update(this.dbId, {\n ...dbUser,\n tokens: {\n accessToken: refTokeRes.data.accessToken,\n refreshToken: refTokeRes.data.refreshToken,\n },\n });\n\n this.cb({\n type: c.actions.refresh,\n payload: refTokeRes.data,\n });\n\n return refTokeRes.data;\n };\n\n private readonly localLogout = async (redirectUrl?: string) => {\n if (redirectUrl) return;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/users/logout`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const json: SuccessRes | ErrorRes = await res.json();\n\n if (!res?.ok || !json.success)\n throw new Error(json.message ?? `SSO-SDK: Local logout failed.`);\n\n await this.db.delete(this.dbId);\n\n this.cb({\n type: c.actions.local_logout,\n payload: null,\n });\n\n return true;\n };\n private readonly ssoLogout = async (redirectUrl?: string) => {\n if (!redirectUrl) return;\n\n this.throwIfNotBrowser();\n\n const url = this.validatedUrl(redirectUrl);\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/users/logout`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const json: SuccessRes | ErrorRes = await res.json();\n\n if (!res?.ok || !json.success)\n throw new Error(json.message ?? `SSO-SDK: Logout failed.`);\n\n await this.db.delete(this.dbId);\n\n const goToUrl = `${this.ssoClientUrl}/logout?redirectUri=${url}`;\n location.href = goToUrl;\n\n this.cb({\n type: c.actions.logout,\n payload: null,\n });\n\n return true;\n };\n /**\n * - If a redirect URL is provided, it will trigger the SSO logout flow and redirect the user to the provided URL after logout.\n * - If no redirect URL is provided, it will trigger the local logout flow and clear the user data from IndexedDB.\n */\n readonly logout = async (redirectUrl?: string): Promise<Boolean> => {\n const res = await Promise.all([\n this.localLogout(redirectUrl),\n this.ssoLogout(redirectUrl),\n ]).then((r) => r.find((r) => r !== undefined));\n\n if (!res) throw new Error(\"SSO-SDK: Logout failed.\");\n\n this.cb({\n type: c.actions.session_cleared,\n payload: null,\n });\n\n return res;\n };\n\n readonly onEvents = (cb: Cb) => {\n this.callbacks.add(cb);\n return () => this.callbacks.delete(cb);\n };\n\n protected readonly withRefresh = async (\n api: (aT: string) => Promise<Response>,\n ) => {\n await this.db.open();\n const dbUser = (await this.db.getById(this.dbId)) as DBRes | undefined;\n\n if (!dbUser) throw new Error(`SSO-SDK: No user found in IndexedDB.`);\n\n const r = await api(dbUser.tokens.accessToken);\n\n if (r.status !== 401) return r;\n\n const resToken = await this.refresh();\n\n const nR = await api(resToken.accessToken);\n\n return nR;\n };\n\n readonly profileUpdate = async (payload: UpdateProfilePayload) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/users/profile`, {\n method: \"PATCH\",\n body: JSON.stringify(payload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const pRes: SuccessRes<Profile> | ErrorRes = await res.json();\n if (!res?.ok || !pRes.success)\n throw new Error(pRes.message ?? `SSO-SDK: Profile update failed.`);\n\n const { id, ...rest } = pRes.data;\n\n await this.db.update(this.dbId, {\n ...rest,\n userId: id,\n });\n\n this.cb({\n type: c.actions.profile_update,\n payload: pRes.data,\n });\n\n return pRes.data;\n };\n\n readonly avatarUpdate = async (file: File) => {\n const photoURL = await this.fileUpload(file);\n\n if (!photoURL) throw new Error(`SSO-SDK: File upload failed.`);\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/users/profile/avatar`, {\n method: \"PUT\",\n body: JSON.stringify({\n photoURL,\n } satisfies UpdateProfilePicturePayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const pRes: SuccessRes<UpdateProfilePicture> | ErrorRes = await res.json();\n\n if (!res?.ok || !pRes.success)\n throw new Error(pRes.message ?? `SSO-SDK: Profile update failed.`);\n\n const { id, ...rest } = pRes.data;\n\n await this.db.update(this.dbId, {\n ...rest,\n userId: id,\n });\n\n this.cb({\n type: c.actions.profile_photo_update,\n payload: pRes.data,\n });\n\n return pRes.data;\n };\n\n private readonly fileUpload = async (file: File) => {\n const { type } = file;\n\n const url = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/uploads/url?fileType=${type}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const json: SuccessRes<SignedUrl> | ErrorRes = await url.json();\n if (!url?.ok || !json.success)\n throw new Error(json.message ?? `SSO-SDK: could not get upload url.`);\n\n const upload = await fetch(json.data.url, {\n method: json.data.method,\n body: file,\n headers: json.data.headers,\n });\n\n if (!upload.ok) throw new Error(`SSO-SDK: could not upload file.`);\n\n const { origin, pathname } = new URL(json.data.url);\n\n return `${origin}${pathname}`;\n };\n\n private readonly clothAdd = async (payload: AddClothFilePayload) => {\n const thumb = await this.fileUpload(payload.thumb);\n if (!thumb) throw new Error(`SSO-SDK: File upload failed.`);\n\n const jsonPayload = {\n ...payload,\n thumb,\n } satisfies AddClothPayload;\n\n await this.db.open();\n\n const dbUser = (await this.db.getById(this.dbId)) as DBRes | undefined;\n\n if (!dbUser) throw new Error(`SSO-SDK: No user found in IndexedDB.`);\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings`, {\n method: \"POST\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT || dbUser.tokens.accessToken}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Cloth> | ErrorRes = await res.json();\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? `SSO-SDK: Cloth add failed.`);\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.cloth_add,\n payload: data,\n });\n\n return data;\n };\n\n readonly clothGetAll = async (options?: GetClothsOptions) => {\n const queryParams = new URLSearchParams({\n skip: Math.ceil(options?.skip ?? 0).toString(),\n limit: Math.ceil(options?.limit ?? 10).toString(),\n sort: options?.sort ?? \"asc\",\n });\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(\n `${this.ssoServerUrl}/clothings?${queryParams.toString()}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n },\n );\n });\n\n const clothRes: SuccessRes<Cloth[]> | ErrorRes = await res.json();\n if (!res?.ok || !clothRes.success)\n throw new Error(clothRes.message ?? `SSO-SDK: Get all cloths failed.`);\n\n this.cb({\n type: c.actions.cloth_fetch_all,\n payload: clothRes.data,\n });\n\n return clothRes.data;\n };\n\n readonly clothGetById = async (clothId: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings/${clothId}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const clothRes: SuccessRes<Cloth> | ErrorRes = await res.json();\n\n if (!res?.ok || !clothRes.success)\n throw new Error(clothRes.message ?? `SSO-SDK: Get cloth by id failed.`);\n\n this.cb({\n type: c.actions.cloth_fetch,\n payload: clothRes.data,\n });\n\n return clothRes.data;\n };\n\n private readonly clothUpdate = async (\n clothId: string,\n payload: UpdateClothPayload,\n ) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings/${clothId}`, {\n method: \"PATCH\",\n body: JSON.stringify(payload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const clothRes: SuccessRes<Cloth> | ErrorRes = await res.json();\n\n if (!res?.ok || !clothRes.success)\n throw new Error(clothRes.message ?? `SSO-SDK: Cloth update failed.`);\n\n const { data } = clothRes;\n\n this.cb({\n type: c.actions.cloth_update,\n payload: data,\n });\n\n return data;\n };\n\n private readonly clothDelete = async (clothId: string) => {\n await this.db.open();\n\n const dbUser = (await this.db.getById(this.dbId)) as DBRes | undefined;\n\n if (!dbUser) throw new Error(`SSO-SDK: No user found in IndexedDB.`);\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings/${clothId}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT || dbUser.tokens.accessToken}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const clothRes: SuccessRes<Cloth> | ErrorRes = await res.json();\n\n if (!res?.ok || !clothRes.success)\n throw new Error(clothRes.message ?? `SSO-SDK: Cloth delete failed.`);\n\n this.cb({\n type: c.actions.cloth_delete,\n payload: clothRes.data,\n });\n\n return clothRes.data;\n };\n\n // materials\n private readonly materialAdd = async (payload: AddMaterialFilePayload) => {\n const thumb = await this.fileUpload(payload.thumb);\n if (!thumb) throw new Error(`SSO-SDK: File upload failed.`);\n\n const jsonPayload = {\n ...payload,\n thumb: thumb,\n } satisfies AddMaterialPayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings/materials`, {\n method: \"POST\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const materialRes: SuccessRes<Material> | ErrorRes = await res.json();\n\n if (!res?.ok || !materialRes.success)\n throw new Error(materialRes.message ?? `SSO-SDK: Material add failed.`);\n\n const { data } = materialRes;\n\n this.cb({\n type: c.actions.material_add,\n payload: data,\n });\n\n return data;\n };\n\n readonly materialGetAll = async (options?: GetMaterialsOptions) => {\n const params = new URLSearchParams({\n skip: options?.skip?.toString() || \"0\",\n limit: options?.limit?.toString() || \"10\",\n sort: options?.sort || \"asc\",\n });\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/clothings/materials?${params}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const materialRes: SuccessRes<Material[]> | ErrorRes = await res.json();\n\n if (!res?.ok || !materialRes.success)\n throw new Error(\n materialRes.message ?? `SSO-SDK: Material fetch all failed.`,\n );\n\n const { data } = materialRes;\n\n this.cb({\n type: c.actions.material_fetch_all,\n payload: data,\n });\n\n return data;\n };\n\n readonly materialGetById = async (materialId: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(\n `${this.ssoServerUrl}/clothings/materials/${materialId}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n },\n );\n });\n\n const materialRes: SuccessRes<Material> | ErrorRes = await res.json();\n\n if (!res?.ok || !materialRes.success)\n throw new Error(\n materialRes.message ?? `SSO-SDK: Material fetch by id failed.`,\n );\n\n const { data } = materialRes;\n\n this.cb({\n type: c.actions.material_fetch,\n payload: data,\n });\n\n return data;\n };\n\n private readonly materialUpdate = async (\n materialId: string,\n payload: UpdateMaterialPayload,\n ) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(\n `${this.ssoServerUrl}/clothings/materials/${materialId}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(payload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n },\n );\n });\n\n const materialRes: SuccessRes<Material> | ErrorRes = await res.json();\n if (!res?.ok || !materialRes.success)\n throw new Error(\n materialRes.message ?? `SSO-SDK: Material update failed.`,\n );\n\n const { data } = materialRes;\n\n this.cb({\n type: c.actions.material_update,\n payload: data,\n });\n\n return data;\n };\n\n private readonly materialDelete = async (materialId: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(\n `${this.ssoServerUrl}/clothings/materials/${materialId}`,\n {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n },\n );\n });\n\n const materialRes: SuccessRes<Material> | ErrorRes = await res.json();\n\n if (!res?.ok || !materialRes.success)\n throw new Error(\n materialRes.message ?? `SSO-SDK: Material delete failed.`,\n );\n\n const { data } = materialRes;\n\n this.cb({\n type: c.actions.material_delete,\n payload: data,\n });\n\n return data;\n };\n\n // skulls\n private readonly skullAdd = async (payload: AddSkullFilePayload) => {\n const preview = await this.fileUpload(payload.filePreview);\n const model = await this.fileUpload(payload.file3d);\n\n if (!preview || !model) throw new Error(`SSO-SDK: File upload failed.`);\n\n const jsonPayload = {\n ...payload,\n previewUrl: preview,\n url3d: model,\n } satisfies AddSkullPayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls`, {\n method: \"POST\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<Skull> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(skullRes.message ?? \"SSO-SDK: Skull add failed.\");\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_add,\n payload: data,\n });\n\n return data;\n };\n\n private readonly skullUpdate = async (\n skullId: string,\n payload: UpdateSkullPayload,\n ) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/${skullId}`, {\n method: \"PATCH\",\n body: JSON.stringify(payload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes = (await res.json()) as SuccessRes<Skull> | ErrorRes;\n\n if (!res?.ok || !skullRes.success)\n throw new Error(skullRes.message ?? \"SSO-SDK: Skull update failed.\");\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_update,\n payload: data,\n });\n\n return data;\n };\n\n readonly skullGetAll = async () => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<Skull[]> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(skullRes.message ?? \"SSO-SDK: Skull get all failed.\");\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_fetch_all,\n payload: data,\n });\n\n return data;\n };\n\n readonly skullGetById = async (skullId: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/${skullId}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<Skull> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(skullRes.message ?? \"SSO-SDK: Skull get by id failed.\");\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_fetch,\n payload: data,\n });\n\n return data;\n };\n\n private readonly skullDelete = async (skullId: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/${skullId}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<Skull> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(skullRes.message ?? \"SSO-SDK: Skull delete failed.\");\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_delete,\n payload: data,\n });\n\n return data;\n };\n\n // skull material\n private readonly skullMaterialAdd = async (\n payload: SkullMaterialAddFilePayload,\n ) => {\n const { file3d, previewFile, ...rest } = payload;\n const preview = await this.fileUpload(previewFile);\n const model = await this.fileUpload(file3d);\n\n if (!preview || !model) throw new Error(`SSO-SDK: File upload failed.`);\n\n const jsonPayload = {\n ...rest,\n previewUrl: preview,\n url3d: model,\n } satisfies SkullMaterialAddPayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/materials`, {\n method: \"POST\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<SkullMaterial> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(\n skullRes.message ?? \"SSO-SDK: Skull material add failed.\",\n );\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_material_add,\n payload: data,\n });\n\n return data;\n };\n\n readonly skullMaterialGetAll = async () => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/materials`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<SkullMaterial[]> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(\n skullRes.message ?? \"SSO-SDK: Skull materials get all failed.\",\n );\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_material_fetch_all,\n payload: data,\n });\n\n return data;\n };\n\n readonly skullMaterialGetById = async (id: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/materials/${id}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<SkullMaterial> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(\n skullRes.message ?? \"SSO-SDK: Skull material get by id failed.\",\n );\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_material_fetch,\n payload: data,\n });\n\n return data;\n };\n\n private readonly skullMaterialUpdate = async (\n id: string,\n payload: SkullMaterialUpdateFilePayload,\n ) => {\n const { file3d, previewFile, ...rest } = payload;\n const preview = previewFile && (await this.fileUpload(previewFile));\n const model = file3d && (await this.fileUpload(file3d));\n\n const jsonPayload = {\n ...rest,\n previewUrl: preview,\n url3d: model,\n } satisfies SkullMaterialUpdatePayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/materials/${id}`, {\n method: \"PATCH\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<SkullMaterial> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(\n skullRes.message ?? \"SSO-SDK: Skull material update failed.\",\n );\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_material_update,\n payload: data,\n });\n\n return data;\n };\n\n private readonly skullMaterialDelete = async (id: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/skulls/materials/${id}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const skullRes: SuccessRes<SkullMaterial> | ErrorRes = await res.json();\n\n if (!res?.ok || !skullRes.success)\n throw new Error(\n skullRes.message ?? \"SSO-SDK: Skull material delete failed.\",\n );\n\n const { data } = skullRes;\n\n this.cb({\n type: c.actions.skull_material_delete,\n payload: data,\n });\n\n return data;\n };\n\n // body\n private readonly bodyAdd = async (payload: BodyAddFilePayload) => {\n const { file3d, previewFile, ...rest } = payload;\n const preview = await this.fileUpload(previewFile);\n const model = await this.fileUpload(file3d);\n\n if (!preview || !model) throw new Error(`SSO-SDK: File upload failed.`);\n\n const jsonPayload = {\n ...rest,\n previewUrl: preview,\n url3d: model,\n } satisfies BodyAddPayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/bodies`, {\n method: \"POST\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Body> | ErrorRes = await res.json();\n\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? \"SSO-SDK: Body add failed.\");\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.body_add,\n payload: data,\n });\n\n return data;\n };\n\n readonly bodyGetAll = async () => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/bodies`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Body[]> | ErrorRes = await res.json();\n\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? \"SSO-SDK: Body add failed.\");\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.body_fetch_all,\n payload: data,\n });\n\n return data;\n };\n\n readonly bodyGetById = async (id: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/bodies/${id}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Body> | ErrorRes = await res.json();\n\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? \"SSO-SDK: Body add failed.\");\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.body_fetch,\n payload: data,\n });\n\n return data;\n };\n\n private readonly bodyUpdate = async (\n id: string,\n payload: BodyUpdateFilePayload,\n ) => {\n const { file3d, previewFile, ...rest } = payload;\n const preview = previewFile && (await this.fileUpload(previewFile));\n const model = file3d && (await this.fileUpload(file3d));\n\n const jsonPayload = {\n ...rest,\n previewUrl: preview,\n url3d: model,\n } satisfies BodyUpdatePayload;\n\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/bodies/${id}`, {\n method: \"PATCH\",\n body: JSON.stringify(jsonPayload),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Body> | ErrorRes = await res.json();\n\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? \"SSO-SDK: Body add failed.\");\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.body_update,\n payload: data,\n });\n\n return data;\n };\n\n private readonly bodyDelete = async (id: string) => {\n const res = await this.withRefresh(async (aT) => {\n return await fetch(`${this.ssoServerUrl}/bodies/${id}`, {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${aT}`,\n \"x-sdk-key\": this.sdkKey,\n },\n });\n });\n\n const bodyRes: SuccessRes<Body> | ErrorRes = await res.json();\n\n if (!res?.ok || !bodyRes.success)\n throw new Error(bodyRes.message ?? \"SSO-SDK: Body add failed.\");\n\n const { data } = bodyRes;\n\n this.cb({\n type: c.actions.body_delete,\n payload: data,\n });\n\n return data;\n };\n\n private validatedUrl = (url: string) => {\n try {\n return new URL(url).href;\n } catch {\n throw new Error(`SSO-SDK: Invalid URL.`);\n }\n };\n\n private emailVerificationQuery = ({\n redirectUri,\n type,\n }: {\n redirectUri?: string;\n type?: \"otp\";\n }) => {\n const params = new URLSearchParams();\n\n if (redirectUri) params.set(\"redirectUri\", this.validatedUrl(redirectUri));\n if (type) params.set(\"type\", type);\n\n const query = params.toString();\n\n return query ? `?${query}` : \"\";\n };\n\n private throwIfNotBrowser = () => {\n if (!isBrowser()) throw new Error(\"SSO-SDK: Not in browser.\");\n };\n\n /**\n * get user from indexedDB without validating tokens.\n */\n readonly getLocalUser = async () => {\n const dbUser = (await this.db.getById(this.dbId)) as DBRes | undefined;\n\n if (!dbUser) throw new Error(`SSO-SDK: No user found in IndexedDB.`);\n\n return dbUser;\n };\n}\n"]}
|
package/package.json
CHANGED