@accelbyte/sdk 0.0.0-dev-20240828032938 → 0.0.0-dev-20240828053809

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/index.node.ts","../../../src/polyfills/node.ts","../../../src/utils/Network.ts","../../../src/utils/SdkDevice.ts","../../../src/AccelByteSDK.ts","../../../src/constants/IamErrorCode.ts","../../../src/constants/LinkAccount.ts","../../../src/interceptors/AuthInterceptors.ts","../../../src/utils/DesktopChecker.ts","../../../src/utils/BrowserHelper.ts","../../../src/utils/RefreshSession.ts","../../../../sdk-iam/src/generated-definitions/TokenWithDeviceCookieResponseV3.ts","../../../../sdk-iam/src/generated-definitions/JwtBanV3.ts","../../../../sdk-iam/src/generated-definitions/NamespaceRole.ts","../../../../sdk-iam/src/generated-definitions/PermissionV3.ts","../../../src/utils/CodeGenUtil.ts","../../../src/utils/Validate.ts","../../../src/interceptors/AuthInterceptorDeps.ts","../../../src/interceptors/ErrorInterceptor.ts","../../../src/utils/ApiUtils.ts","../../../src/utils/UrlHelper.ts"],"sourcesContent":["/*\n * Copyright (c) 2022 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\n\n// This needs to be imported otherwise the polyfill will appear after all of the code bundles.\nimport './polyfills/node'\nexport * from './index'\n","/*\n * Copyright (c) 2018-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport { webcrypto } from 'crypto'\n\nif (!global.crypto) {\n global.crypto = webcrypto as unknown as Crypto\n}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport axios, { AxiosInstance, AxiosRequestConfig } from 'axios'\nimport qs from 'query-string'\nimport { SdkDevice } from './SdkDevice'\n\nexport class Network {\n static create(...configs: AxiosRequestConfig[]): AxiosInstance {\n const axiosInstance = axios.create(\n Object.assign(\n {\n paramsSerializer: qs.stringify\n },\n ...configs\n )\n )\n\n return axiosInstance\n }\n\n static withBearerToken(accessToken: string, config?: AxiosRequestConfig): AxiosInstance {\n return Network.create(config || {}, {\n headers: { Authorization: `Bearer ${accessToken}` }\n })\n }\n\n static setDeviceTokenCookie = () => {\n const deviceId = SdkDevice.getDeviceId()\n document.cookie = `device_token=${deviceId}; path=/;`\n }\n\n static removeDeviceTokenCookie = () => {\n document.cookie = `device_token=; expires=${new Date(0).toUTCString()}`\n }\n\n static getFormUrlEncodedData = (data: any): URLSearchParams => {\n const formPayload = new URLSearchParams()\n const formKeys = Object.keys(data) as []\n formKeys.forEach(key => {\n if (data[key]) formPayload.append(key, data[key])\n })\n return formPayload\n }\n}\n","/*\n * Copyright (c) 2022 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport * as uuid from 'uuid'\n\nexport class SdkDevice {\n static ID_KEY = 'deviceId'\n\n static TYPE = {\n MOBILE: 'mobile',\n DESKTOP: 'desktop'\n }\n\n static getType = () => {\n return isMobile() ? SdkDevice.TYPE.MOBILE : SdkDevice.TYPE.DESKTOP\n }\n\n static generateUUID = () => {\n const deviceIdInUUID = uuid.v4().split('-').join('')\n localStorage.setItem(SdkDevice.ID_KEY, deviceIdInUUID)\n return deviceIdInUUID\n }\n\n static getDeviceId = () => {\n return localStorage.getItem(this.ID_KEY) || this.generateUUID()\n }\n}\n\n/*\n Below function is copied from npm 'is-mobile'\n */\nconst mobileRE =\n /(android|bb\\d+|meego).+mobile|armv7l|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i\nconst tabletRE = /android|ipad|playbook|silk/i\n\nconst isMobile = (opts?: any) => {\n if (!opts) opts = {}\n let ua = opts.ua\n if (!ua && typeof navigator !== 'undefined') ua = navigator.userAgent\n if (ua && ua.headers && typeof ua.headers['user-agent'] === 'string') {\n ua = ua.headers['user-agent']\n }\n if (typeof ua !== 'string') return false\n\n let result = mobileRE.test(ua) || (!!opts.tablet && tabletRE.test(ua))\n\n if (\n !result &&\n opts.tablet &&\n opts.featureDetect &&\n navigator &&\n navigator.maxTouchPoints > 1 &&\n ua.indexOf('Macintosh') !== -1 &&\n ua.indexOf('Safari') !== -1\n ) {\n result = true\n }\n\n return result\n}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\n\nimport { AxiosInstance } from 'axios'\nimport { AxiosConfig, CoreConfig, Interceptor, SdkConstructorParam, SdkSetConfigParam } from './Types'\nimport { Network } from './utils/Network'\nimport { MakeRequired } from './utils/Type'\n\nexport const AccelByte = {\n SDK: (param: SdkConstructorParam) => {\n return new AccelByteSDK(param)\n }\n}\n\nexport class AccelByteSDK {\n private coreConfig: CoreConfig\n private axiosConfig: AxiosConfig\n private axiosInstance: AxiosInstance\n\n constructor({ coreConfig, axiosConfig }: SdkConstructorParam) {\n this.coreConfig = {\n ...coreConfig,\n useSchemaValidation: coreConfig.useSchemaValidation ?? true\n }\n this.axiosConfig = {\n /**\n * when user create a variable to store intercepters and passed into sdk\n * the sdk will use the variable as reference value,\n * so when new interceptor added, reference value will also has the new interceptor,\n * to avoid this we create shallow copy for the interceptors\n */\n interceptors: axiosConfig?.interceptors ? [...axiosConfig.interceptors] : undefined,\n request: {\n timeout: 60000,\n withCredentials: true,\n ...axiosConfig?.request,\n headers: {\n 'Content-Type': 'application/json',\n ...axiosConfig?.request?.headers\n }\n }\n }\n this.axiosInstance = Network.create({ baseURL: coreConfig.baseURL, ...this.axiosConfig.request })\n }\n\n assembly() {\n return {\n axiosInstance: this.axiosInstance,\n coreConfig: this.coreConfig,\n axiosConfig: this.axiosConfig as MakeRequired<AxiosConfig, 'request'>\n }\n }\n\n clone(opts?: { interceptors?: boolean }): AccelByteSDK {\n const newConfigs = {\n coreConfig: { ...this.coreConfig },\n axiosConfig: { ...this.axiosConfig }\n }\n\n if (opts?.interceptors === false) {\n delete newConfigs.axiosConfig.interceptors\n }\n\n return new AccelByteSDK(newConfigs)\n }\n\n addInterceptors(interceptors: Interceptor[]): AccelByteSDK {\n if (!this.axiosConfig.interceptors) {\n this.axiosConfig.interceptors = []\n }\n\n this.axiosConfig.interceptors.push(...interceptors)\n\n return this\n }\n\n // Method overloads.\n removeInterceptors(): AccelByteSDK\n removeInterceptors(filterCallback: (interceptor: Interceptor) => boolean): AccelByteSDK\n\n removeInterceptors(filterCallback?: (interceptor: Interceptor) => boolean) {\n if (!this.axiosConfig?.interceptors) return this\n if (!filterCallback) {\n this.axiosConfig.interceptors = undefined\n return this\n }\n\n this.axiosConfig.interceptors = this.axiosConfig.interceptors.filter(filterCallback)\n return this\n }\n\n setConfig({ coreConfig, axiosConfig }: SdkSetConfigParam) {\n this.coreConfig = {\n ...this.coreConfig,\n ...coreConfig\n }\n this.axiosConfig = {\n ...this.axiosConfig,\n ...axiosConfig\n }\n\n return this\n }\n}\n","/*\n * Copyright (c) 2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\n\n// More detail: https://github.com/AccelByte/go-restful-plugins/blob/master/pkg/auth/iam/event.go\nexport enum IamErrorCode {\n InternalServerError = 20000,\n UnauthorizedAccess = 20001,\n ValidationError = 20002,\n ForbiddenAccess = 20003,\n TooManyRequests = 20007,\n UserNotFound = 20008,\n TokenIsExpired = 20011,\n InsufficientPermissions = 20013,\n InvalidAudience = 20014,\n InsufficientScope = 20015,\n UnableToParseRequestBody = 20019,\n InvalidPaginationParameters = 20021,\n TokenIsNotUserToken = 20022,\n InvalidRefererHeader = 20023,\n SubdomainMismatch = 20030\n}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\n\nexport const ERROR_LINK_ANOTHER_3RD_PARTY_ACCOUNT = 10200\nexport const ERROR_CODE_LINK_DELETION_ACCOUNT = 10135\nexport const ERROR_CODE_TOKEN_EXPIRED = 10196\nexport const ERROR_USER_BANNED = 10134\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport axios, { AxiosError, AxiosRequestConfig } from 'axios'\nimport { Interceptor } from '../Types'\nimport { DesktopChecker } from '../utils/DesktopChecker'\nimport { Network } from '../utils/Network'\nimport { RefreshSession } from '../utils/RefreshSession'\nimport { OAuth20$, TokenWithDeviceCookieResponseV3 } from './AuthInterceptorDeps'\n\nconst REFRESH_EXPIRY = 1000\nconst REFRESH_EXPIRY_UPDATE_RATE = 500\nconst REFRESH_EXPIRY_CHECK_RATE = 1000\n\nenum LoginUrls {\n GRANT_TOKEN = '/iam/v3/oauth/token',\n REVOKE = '/iam/v3/oauth/revoke'\n}\n\ntype RefreshArgs = {\n axiosConfig: AxiosRequestConfig\n refreshToken?: string\n clientId: string\n}\n\n/* eslint camelcase: 0 */\nconst refreshSession = ({ axiosConfig, refreshToken, clientId }: RefreshArgs) => {\n const config = {\n ...axiosConfig,\n withCredentials: false,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Authorization: `Basic ${Buffer.from(`${clientId}:`).toString('base64')}`\n }\n }\n const axios = Network.create(config)\n\n const payload = {\n refresh_token: refreshToken || undefined,\n client_id: clientId,\n grant_type: 'refresh_token'\n } as const\n\n const oauth20 = new OAuth20$(axios, 'NAMESPACE-NOT-REQUIRED')\n return oauth20.postOauthToken(payload)\n}\n\n// Return Promise<true> if refresh in any tab is successful;\nexport const refreshWithLock = ({\n axiosConfig,\n refreshToken,\n clientId\n}: RefreshArgs): Promise<Partial<TokenWithDeviceCookieResponseV3> | false> => {\n //\n if (RefreshSession.isLocked()) {\n return Promise.resolve().then(async () => {\n // This block is executed when other tab / request is refreshing\n while (RefreshSession.isLocked()) {\n await RefreshSession.sleepAsync(REFRESH_EXPIRY_CHECK_RATE)\n }\n return {}\n })\n }\n\n RefreshSession.lock(REFRESH_EXPIRY)\n let isLocallyRefreshingToken = true\n\n ;(async () => {\n // eslint-disable-next-line no-unmodified-loop-condition\n while (isLocallyRefreshingToken) {\n RefreshSession.lock(REFRESH_EXPIRY)\n await RefreshSession.sleepAsync(REFRESH_EXPIRY_UPDATE_RATE)\n }\n })()\n\n return Promise.resolve()\n .then(doRefreshSession({ axiosConfig, clientId, refreshToken }))\n .finally(() => {\n isLocallyRefreshingToken = false\n RefreshSession.unlock()\n })\n}\n\nexport const doRefreshSession =\n ({ axiosConfig, clientId, refreshToken }: RefreshArgs) =>\n async () => {\n // we need this to check if app use “withCredentials: false” and don’t have refreshToken it should return false,\n // because we track it as a logout user, if not do this even user logout on the desktop app (that use withCredentials: false)\n // will automatically login with refreshSession\n if (DesktopChecker.isDesktopApp() && !axiosConfig.withCredentials && !refreshToken) {\n return false\n }\n const result = await refreshSession({ axiosConfig, clientId, refreshToken })\n if (result.error) {\n return false\n }\n return result.response.data\n }\n\nconst uponRefreshComplete = (\n error: AxiosError,\n tokenResponse: Partial<TokenWithDeviceCookieResponseV3> | false,\n onSessionExpired: (() => void) | undefined,\n axiosConfig: AxiosRequestConfig,\n errorConfig: AxiosRequestConfig\n) => {\n //\n if (tokenResponse) {\n const { access_token } = tokenResponse\n\n // desktop\n if (!axiosConfig.withCredentials && access_token) {\n return axios({\n ...errorConfig,\n headers: {\n ...errorConfig.headers,\n Authorization: `Bearer ${access_token}`\n }\n })\n // web\n } else {\n return axios(errorConfig)\n }\n }\n\n if (onSessionExpired) {\n onSessionExpired()\n }\n throw error\n}\n\n/**\n * Not sure if we can separate the auth error interceptor from the response interceptor\n */\nexport const AuthInterceptors: Array<Interceptor> = [\n {\n type: 'request',\n name: 'refresh-session',\n onError: error => Promise.reject(error),\n onRequest: async config => {\n // need to lock on the desktop as well to sleep other request before refresh session is done\n const isRefreshTokenUrl = config.url === LoginUrls.GRANT_TOKEN\n // eslint-disable-next-line no-unmodified-loop-condition\n while (RefreshSession.isLocked() && !isRefreshTokenUrl) {\n await RefreshSession.sleepAsync(200)\n }\n return config\n }\n },\n {\n type: 'response',\n name: 'get-session',\n onError: error => Promise.reject(error),\n onSuccess: response => {\n const { config, status } = response\n\n if (config.url === LoginUrls.GRANT_TOKEN && status === 200) {\n // @ts-ignore\n const { access_token, refresh_token } = response.data as TokenWithDeviceCookieResponseV3\n\n if (access_token) {\n // do something when get session\n }\n }\n\n return response\n }\n },\n {\n type: 'response',\n name: 'cancelled',\n onError: e => {\n const error = e as AxiosError\n\n if (axios.isCancel(error)) {\n // expected case, exit\n return Promise.reject(error)\n }\n\n return Promise.reject(error)\n }\n },\n {\n type: 'response',\n name: 'disconnected',\n onError: e => {\n const error = e as AxiosError\n const { config, response } = error\n\n if (!response) {\n console.warn(`sdk:ERR_INTERNET_DISCONNECTED ${config?.baseURL}${config?.url}. ${(error as AxiosError).message}\\n`)\n }\n\n return Promise.reject(error)\n }\n },\n {\n type: 'response',\n name: 'session-expired',\n onError: e => {\n const error = e as AxiosError\n const { config, response } = error\n\n if (response?.status === 401) {\n const { url } = config || {}\n const clientId = '' // get from env\n const axiosConfig = config as AxiosRequestConfig\n const refreshToken = '' || undefined // get from cookie\n\n // expected business case, exit\n // @ts-ignore\n if (Object.values(LoginUrls).includes(url)) {\n return Promise.reject(error)\n }\n\n // need to lock on the desktop as well to prevent multiple token request\n return refreshWithLock({ axiosConfig, clientId, refreshToken }).then(tokenResponse => {\n return uponRefreshComplete(\n error,\n tokenResponse,\n () => {\n // do something when session expired\n },\n axiosConfig,\n config || {}\n )\n })\n }\n\n return Promise.reject(error)\n }\n }\n]\n","/*\n * Copyright (c) 2022 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nexport class DesktopChecker {\n private static desktopApp = DesktopChecker.isElectron()\n\n static isDesktopApp() {\n return DesktopChecker.desktopApp && !DesktopChecker.isInIframe()\n }\n\n private static isInIframe() {\n try {\n return window.self !== window.top\n } catch (error) {\n return true\n }\n }\n\n // borrowed from https://github.com/cheton/is-electron\n private static isElectron() {\n // @ts-ignore Renderer process\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\n return true\n }\n // Main process\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\n return true\n }\n // Detect the user agent when the `nodeIntegration` option is set to false\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\n return true\n }\n return false\n }\n}\n","/*\n * Copyright (c) 2022 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nexport class BrowserHelper {\n static isOnBrowser = () => {\n return typeof window !== 'undefined' && window.document\n }\n}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport { AxiosRequestConfig } from 'axios'\nimport { BrowserHelper } from './BrowserHelper'\n\nexport class RefreshSession {\n // --\n static KEY = 'RefreshSession.lock'\n\n static isLocked = (): boolean => {\n if (!BrowserHelper.isOnBrowser()) return false\n const lockStatus = localStorage.getItem(RefreshSession.KEY)\n if (!lockStatus) {\n return false\n }\n const lockExpiry = Number(lockStatus)\n if (isNaN(lockExpiry)) {\n return false\n }\n return lockExpiry > new Date().getTime()\n }\n\n static lock = (expiry: number) => {\n if (!BrowserHelper.isOnBrowser()) return\n localStorage.setItem(RefreshSession.KEY, `${new Date().getTime() + expiry}`)\n }\n\n static unlock = () => {\n if (!BrowserHelper.isOnBrowser()) return\n localStorage.removeItem(RefreshSession.KEY)\n }\n\n static sleepAsync = (timeInMs: number) => new Promise(resolve => setTimeout(resolve, timeInMs))\n\n static isBearerAuth = (config?: AxiosRequestConfig) => {\n // @ts-ignore\n if (config?.headers?.Authorization?.toLowerCase().indexOf('bearer') > -1) {\n return true\n }\n return false\n }\n}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport { z } from 'zod'\nimport { JwtBanV3 } from './JwtBanV3.js'\nimport { NamespaceRole } from './NamespaceRole.js'\nimport { PermissionV3 } from './PermissionV3.js'\n\nexport const TokenWithDeviceCookieResponseV3 = z.object({\n access_token: z.string(),\n auth_trust_id: z.string().nullish(),\n bans: z.array(JwtBanV3).nullish(),\n display_name: z.string().nullish(),\n expires_in: z.number().int(),\n is_comply: z.boolean().nullish(),\n jflgs: z.number().int().nullish(),\n namespace: z.string(),\n namespace_roles: z.array(NamespaceRole).nullish(),\n permissions: z.array(PermissionV3),\n platform_id: z.string().nullish(),\n platform_user_id: z.string().nullish(),\n refresh_expires_in: z.number().int().nullish(),\n refresh_token: z.string().nullish(),\n roles: z.array(z.string()).nullish(),\n scope: z.string(),\n simultaneous_platform_id: z.string().nullish(),\n simultaneous_platform_user_id: z.string().nullish(),\n token_type: z.string(),\n unique_display_name: z.string().nullish(),\n user_id: z.string().nullish(),\n xuid: z.string().nullish()\n})\n\nexport interface TokenWithDeviceCookieResponseV3 extends z.TypeOf<typeof TokenWithDeviceCookieResponseV3> {}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport { z } from 'zod'\n\nexport const JwtBanV3 = z.object({\n ban: z.string(),\n disabledDate: z.string().nullish(),\n enabled: z.boolean(),\n endDate: z.string(),\n targetedNamespace: z.string()\n})\n\nexport interface JwtBanV3 extends z.TypeOf<typeof JwtBanV3> {}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport { z } from 'zod'\n\nexport const NamespaceRole = z.object({ namespace: z.string(), roleId: z.string() })\n\nexport interface NamespaceRole extends z.TypeOf<typeof NamespaceRole> {}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport { z } from 'zod'\n\nexport const PermissionV3 = z.object({\n action: z.number().int(),\n resource: z.string(),\n schedAction: z.number().int().nullish(),\n schedCron: z.string().nullish(),\n schedRange: z.array(z.string()).nullish()\n})\n\nexport interface PermissionV3 extends z.TypeOf<typeof PermissionV3> {}\n","/*\n * Copyright (c) 2022 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nexport class CodeGenUtil {\n /**\n * Returns a hash code from a string\n * @param {String} str The string to hash.\n * @return {Number} A 32bit integer\n * @see http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/\n */\n static hashCode(str: string): number {\n let hash = 0\n for (let i = 0, len = str.length; i < len; i++) {\n const chr = str.charCodeAt(i)\n hash = (hash << 5) - hash + chr\n hash |= 0 // Convert to 32bit integer\n }\n return hash\n }\n\n static getFormUrlEncodedData = (data: Record<string, any>): URLSearchParams => {\n const formPayload = new URLSearchParams()\n const formKeys = Object.keys(data) as []\n formKeys.forEach(key => {\n if (typeof data[key] !== 'undefined') formPayload.append(key, data[key])\n })\n return formPayload\n }\n}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport { AxiosError, AxiosResponse } from 'axios'\nimport { z, ZodError } from 'zod'\n\nexport type ResponseError = Error | AxiosError\n\nexport type Response<T> =\n | {\n response: AxiosResponse<T>\n error: null\n }\n | {\n response: null\n error: ResponseError\n }\n\nexport class Validate {\n static validateOrReturnResponse<D>(\n useSchemaValidation: boolean,\n networkCall: () => Promise<AxiosResponse<D>>,\n Codec: z.ZodType<D>,\n modelName: string\n ) {\n return useSchemaValidation ? Validate.responseType(() => networkCall(), Codec, modelName) : Validate.unsafeResponse(() => networkCall())\n }\n\n static responseType<D>(networkCall: () => Promise<AxiosResponse<D>>, Codec: z.ZodType<D>, modelName: string) {\n return wrapNetworkCallSafely<D>(async () => {\n const response = await networkCall()\n const decodeResult = Codec.safeParse(response.data)\n if (!decodeResult.success && response.status !== 204) {\n throw new DecodeError({ error: decodeResult.error, response, modelName })\n }\n return response\n })\n }\n\n static unsafeResponse<D>(networkCall: () => Promise<AxiosResponse<D>>) {\n return wrapNetworkCallSafely<D>(() => networkCall())\n }\n\n static safeParse<D>(data: unknown, Codec: z.ZodType<D>): D | null {\n const result = Codec.safeParse(data)\n if (result.success) {\n return result.data\n }\n return null\n }\n}\n\nasync function wrapNetworkCallSafely<D>(networkCallFunction: () => Promise<AxiosResponse<D>>): Promise<Response<D>> {\n try {\n const response = await networkCallFunction()\n return { response, error: null }\n } catch (error) {\n return { response: null, error: <Error>error }\n }\n}\n\nexport class DecodeError extends Error {\n constructor({ error, response, modelName }: { error: ZodError; response: AxiosResponse; modelName: string }) {\n const msg = `response from url \"${response.config.url}\" doesn't match model \"${modelName}\"`\n super(msg)\n console.error(msg, error)\n }\n}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport { TokenWithDeviceCookieResponseV3 } from '~/iam-definitions/TokenWithDeviceCookieResponseV3'\nimport { AxiosInstance, AxiosRequestConfig } from 'axios'\nimport { CodeGenUtil } from '../utils/CodeGenUtil'\nimport { Response, Validate } from '../utils/Validate'\n\nexport { TokenWithDeviceCookieResponseV3 }\n\n/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\n\nexport class OAuth20$ {\n // @ts-ignore\n constructor(private axiosInstance: AxiosInstance, private namespace: string) {}\n\n postOauthToken<T = TokenWithDeviceCookieResponseV3>(data: {\n grant_type: 'authorization_code' | 'client_credentials' | 'password' | 'refresh_token'\n username?: string | null\n password?: string | null\n code?: string | null\n code_verifier?: string | null\n client_id?: string | null\n redirect_uri?: string | null\n refresh_token?: string | null\n extend_exp?: boolean | null\n }): Promise<Response<T>> {\n const params = {} as AxiosRequestConfig\n const url = '/iam/v3/oauth/token'\n const resultPromise = this.axiosInstance.post(url, CodeGenUtil.getFormUrlEncodedData(data), {\n ...params,\n headers: { ...params.headers, 'content-type': 'application/x-www-form-urlencoded' }\n })\n\n return Validate.responseType(() => resultPromise, TokenWithDeviceCookieResponseV3, 'TokenWithDeviceCookieResponseV3')\n }\n}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nimport { AxiosError } from 'axios'\nimport { Interceptor } from '../Types'\n\nconst ERROR_ELIGIBILITY_CODE = 13130\n\nexport const ErrorInterceptors: Array<Interceptor> = [\n {\n type: 'response',\n name: 'user-eligibilitiy-change',\n onError: e => {\n const error = e as AxiosError<any>\n if (error.response) {\n const { response } = error\n if (response?.status === 403 && (response?.config as any).url.includes(process.env.BASE_URL) && response?.config.withCredentials) {\n if (response.data.errorCode === ERROR_ELIGIBILITY_CODE) {\n // onUserEligibilityChange()\n }\n }\n }\n\n return Promise.reject(error)\n }\n },\n {\n type: 'response',\n name: 'too-many-request',\n onError: e => {\n const error = e as AxiosError<any>\n if (error.response) {\n const { response } = error\n if (response?.status === 429 /* TooManyRequests */) {\n // onTooManyRequest(error)\n }\n }\n\n return Promise.reject(error)\n }\n }\n]\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\n\nimport axios, { AxiosRequestConfig } from 'axios'\n\nexport class ApiUtils {\n static mergeAxiosConfigs = (config: AxiosRequestConfig, overrides?: AxiosRequestConfig): AxiosRequestConfig => {\n return {\n ...config,\n ...overrides,\n headers: {\n ...config?.headers,\n ...overrides?.headers\n }\n }\n }\n\n static is4xxError = (error: unknown): boolean => {\n if (axios.isAxiosError(error) && error.response) {\n return error.response.status >= 400 && error.response.status <= 499\n }\n return false\n }\n}\n","/*\n * Copyright (c) 2022-2024 AccelByte Inc. All Rights Reserved\n * This is licensed software from AccelByte Inc, for limitations\n * and restrictions contact your company contract manager.\n */\nexport class UrlHelper {\n static isCompleteURLString = (urlString: string) => {\n try {\n const url = new URL(urlString)\n return url.hostname !== ''\n } catch (error) {}\n return false\n }\n\n static trimSlashFromStringEnd(pathString: string) {\n let newString = pathString\n while (newString[newString.length - 1] === '/') {\n newString = newString.slice(0, -1)\n }\n return newString\n }\n\n static trimSlashFromStringStart(pathString: string) {\n let newString = pathString\n while (newString[0] === '/') {\n newString = newString.slice(1)\n }\n return newString\n }\n\n static trimSlashFromStringEdges(pathString: string) {\n return UrlHelper.trimSlashFromStringStart(this.trimSlashFromStringEnd(pathString))\n }\n\n static combinePaths(...paths: string[]) {\n const completePath = paths.join('/')\n // Replace 2 or more consecutive slashes with a single slash.\n // This is also the behavior from Node's `path.join`.\n return completePath.replace(/\\/{2,}/g, '/')\n }\n\n static combineURLPaths(urlString: string, ...paths: string[]) {\n const url = new URL(urlString)\n const { origin } = url\n const pathname = UrlHelper.trimSlashFromStringEdges(UrlHelper.combinePaths(url.pathname, ...paths))\n return new URL(pathname, origin).toString()\n }\n\n static removeQueryParam(fullUrlString: string, param: string) {\n const url = new URL(fullUrlString)\n const params = url.searchParams\n const pathname = this.trimSlashFromStringEnd(url.pathname)\n\n // Remove the query parameter\n params.delete(param)\n\n // Preserving other URL attributes\n let newUrlString: string\n if (params.toString() === '') newUrlString = `${url.origin}${pathname}${url.hash}`\n else newUrlString = `${url.origin}${pathname}?${params.toString()}${url.hash}`\n\n return newUrlString\n }\n}\n"],"mappings":"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","names":["axios","qs","IamErrorCode","import_axios","import_zod","import_zod","import_zod","LoginUrls","axios","import_axios","axios"]}