@customafk/lunas-api-sdk 0.0.25 → 0.0.27

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/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- let e=require(`@elysiajs/eden`),t=function(e){return e.PRODUCT=`product`,e.EXTRA_PRODUCT=`extra_product`,e.VARIANT=`variant`,e.CATEGORY=`category`,e.BRAND=`brand`,e.BLOG_POST=`blog_post`,e.SERIES=`series`,e}({}),n=function(e){return e.IMAGE_WEBP=`image/webp`,e.IMAGE_JPEG=`image/jpeg`,e.IMAGE_JPG=`image/jpg`,e.IMAGE_PNG=`image/png`,e.IMAGE_GIF=`image/gif`,e.IMAGE_AVIF=`image/avif`,e.IMAGE_SVG=`image/svg+xml`,e}({}),r=function(e){return e.KG=`kg`,e.G=`g`,e.LB=`lb`,e.OZ=`oz`,e}({}),i=function(e){return e.CM=`cm`,e.M=`m`,e.INCH=`inch`,e.FT=`ft`,e}({}),a=function(e){return e.VIETNAM=`Vietnam`,e.USA=`USA`,e.JAPAN=`Japan`,e.KOREA=`Korea`,e.CHINA=`China`,e.TAIWAN=`Taiwan`,e.THAILAND=`Thailand`,e.MALAYSIA=`Malaysia`,e.SINGAPORE=`Singapore`,e.INDONESIA=`Indonesia`,e}({}),o=function(e){return e.SUPER_ADMIN=`SUPER_ADMIN`,e.ADMIN=`ADMIN`,e.MODERATOR=`MODERATOR`,e.STAFF=`STAFF`,e.EDITOR=`EDITOR`,e.VIEWER=`VIEWER`,e.USER=`USER`,e}({}),s=function(e){return e.BASIC=`BASIC`,e.FACEBOOK=`FACEBOOK`,e.GOOGLE=`GOOGLE`,e.GITHUB=`GITHUB`,e.TWITTER=`TWITTER`,e}({}),c=function(e){return e.DRAFT=`draft`,e.REVIEW=`review`,e.PUBLISHED=`published`,e.CANCELLED=`cancelled`,e}({}),l=function(e){return e.IN_STOCK=`in_stock`,e.OUT_OF_STOCK=`out_of_stock`,e.PREORDER=`preorder`,e}({}),u=function(e){return e.ACTIVE=`active`,e.COMPLETED=`completed`,e.ABANDONED=`abandoned`,e.EXPIRED=`expired`,e}({}),d=function(e){return e.IN_STOCK=`in_stock`,e.ORDER=`order`,e}({});var f=class t{static{this._getMeTask=null}static{this._refreshTokenTask=null}static{this._logoutTask=null}static{this.user=null}static{this.listeners=null}static async _getUser(){if(t.user||!t._client)return;if(t._getMeTask){await t._getMeTask;return}let e=t._client.admin.v1.auth.me.get();t._getMeTask=e;try{let n=await e;if(n.data&&n.data.data&&n.data.success)t.user=n.data.data;else if(n?.data?.statusCode===4001){let{status:n}=await t._refreshToken();if(n===`SUCCESS`){let n=await e;n.data&&n.data.success&&n.data.statusCode===200?t.user=n.data.data:t.user=null}n===`FAILED`&&(t.user=null)}else t.user=null,console.error(`Failed to fetch user data:`,JSON.stringify(n.data))}catch(e){console.error(`Error fetching user data:`,JSON.stringify(e)),t.user=null}finally{t._getMeTask=null}}static async _refreshToken(){return t._client?t._refreshTokenTask?await t._refreshTokenTask:(t._refreshTokenTask=(async()=>{try{let e=await t._client?.admin.v1.auth[`refresh-token`].get();return e?.data&&e.data.success&&e.data.statusCode===200?{status:`SUCCESS`}:{status:`FAILED`}}catch(e){return console.error(`Error refreshing token:`,JSON.stringify(e)),{status:`FAILED`}}})(),t._refreshTokenTask.finally(()=>{t._refreshTokenTask=null})):{status:`FAILED`}}static async _logout(){if(t._client)try{if(t._logoutTask){await t._logoutTask;return}let e=t._client.admin.v1.auth.logout.delete();t._logoutTask=e,await e}catch(e){console.error(`Error during logout:`,e)}finally{t.user=null,t._logoutTask=null,t.listeners?.onUserChange?.(null),t.listeners?.onLogout?.()}}constructor({baseURL:n,config:r}){t._client||=(0,e.treaty)(n,r),this._onUnauthorized=async()=>{t.user=null,await t.listeners?.onUserChange?.(null),await t.listeners?.onUnauthorized?.()}}async getUser(){return await t._getUser(),await t.listeners?.onGetMe?.(t.user),t.user??null}getClient(){return t._client}async logout(){await t._client?.admin.v1.auth.logout.delete(),await t.listeners?.onLogout?.()}async fetchApi({request:e}){if(!t._client)throw Error(`Client not initialized`);try{t._getMeTask&&(console.log(`Awaiting ongoing _getMeTask before proceeding with fetchApi`),await t._getMeTask),t._refreshTokenTask&&(console.log(`Awaiting ongoing _refreshTokenTask before proceeding with fetchApi`),await t._refreshTokenTask),t._logoutTask&&(console.log(`Awaiting ongoing _logoutTask before proceeding with fetchApi`),await t._logoutTask);let n=await e(t._client);if(!n.data)return console.error(`No response data received from API request`),null;let r=n.data;if(r?.statusCode===401)return await this._onUnauthorized?.(),await t.listeners?.onUnauthorized?.(),null;if(r?.statusCode===4001){let{status:n}=await t._refreshToken();if(await t.listeners?.onRefreshToken?.(n),n===`SUCCESS`)return await e(t._client);if(n===`FAILED`)return await t._logout(),await t.listeners?.onLogout?.(),null}return n}catch(e){return console.error(`Error in fetchApi:`,JSON.stringify(e)),{success:!1,statusCode:500,data:null,message:`Internal Client Error`,error:{statusCode:500,message:`Internal Client Error`},meta:{version:`1.0.0`,timestamp:new Date().toISOString(),path:``}}}}};Object.defineProperty(exports,`AppType`,{enumerable:!0,get:function(){return AppType}}),exports.ClientApi=f,exports.ECartStatus=u,exports.ECartType=d,exports.ECountry=a,exports.EDimensionUnit=i,exports.EMediaEntityType=t,exports.EMimeType=n,exports.EProductInventoryStatus=l,exports.EProductStatus=c,exports.EProvider=s,exports.ERole=o,exports.EWeightUnit=r,Object.defineProperty(exports,`TResponse`,{enumerable:!0,get:function(){return TResponse}});
1
+ let e=require(`@elysiajs/eden`);var t=class t{static{this._getMeTask=null}static{this._refreshTokenTask=null}static{this._logoutTask=null}static{this.user=null}static{this.listeners=null}static async _getUser(){if(t.user||!t._client)return;if(t._getMeTask){await t._getMeTask;return}let e=t._client.admin.v1.auth.me.get();t._getMeTask=e;try{let n=await e;if(n.data&&n.data.data&&n.data.success)t.user=n.data.data;else if(n?.data?.statusCode===4001){let{status:n}=await t._refreshToken();if(n===`SUCCESS`){let n=await e;n.data&&n.data.success&&n.data.statusCode===200?t.user=n.data.data:t.user=null}n===`FAILED`&&(t.user=null)}else t.user=null,console.error(`Failed to fetch user data:`,JSON.stringify(n.data))}catch(e){console.error(`Error fetching user data:`,JSON.stringify(e)),t.user=null}finally{t._getMeTask=null}}static async _refreshToken(){return t._client?t._refreshTokenTask?await t._refreshTokenTask:(t._refreshTokenTask=(async()=>{try{let e=await t._client?.admin.v1.auth[`refresh-token`].get();return e?.data&&e.data.success&&e.data.statusCode===200?{status:`SUCCESS`}:{status:`FAILED`}}catch(e){return console.error(`Error refreshing token:`,JSON.stringify(e)),{status:`FAILED`}}})(),t._refreshTokenTask.finally(()=>{t._refreshTokenTask=null})):{status:`FAILED`}}static async _logout(){if(t._client)try{if(t._logoutTask){await t._logoutTask;return}let e=t._client.admin.v1.auth.logout.delete();t._logoutTask=e,await e}catch(e){console.error(`Error during logout:`,e)}finally{t.user=null,t._logoutTask=null,t.listeners?.onUserChange?.(null),t.listeners?.onLogout?.()}}constructor({baseURL:n,config:r}){t._client||=(0,e.treaty)(n,r),this._onUnauthorized=async()=>{t.user=null,await t.listeners?.onUserChange?.(null),await t.listeners?.onUnauthorized?.()}}async getUser(){return await t._getUser(),await t.listeners?.onGetMe?.(t.user),t.user??null}getClient(){return t._client}async logout(){await t._client?.admin.v1.auth.logout.delete(),await t.listeners?.onLogout?.()}async fetchApi({request:e}){if(!t._client)throw Error(`Client not initialized`);try{t._getMeTask&&(console.log(`Awaiting ongoing _getMeTask before proceeding with fetchApi`),await t._getMeTask),t._refreshTokenTask&&(console.log(`Awaiting ongoing _refreshTokenTask before proceeding with fetchApi`),await t._refreshTokenTask),t._logoutTask&&(console.log(`Awaiting ongoing _logoutTask before proceeding with fetchApi`),await t._logoutTask);let n=await e(t._client);if(!n.data)return console.error(`No response data received from API request`),null;let r=n.data;if(r?.statusCode===401)return await this._onUnauthorized?.(),await t.listeners?.onUnauthorized?.(),null;if(r?.statusCode===4001){let{status:n}=await t._refreshToken();if(await t.listeners?.onRefreshToken?.(n),n===`SUCCESS`)return await e(t._client);if(n===`FAILED`)return await t._logout(),await t.listeners?.onLogout?.(),null}return n}catch(e){return console.error(`Error in fetchApi:`,JSON.stringify(e)),{success:!1,statusCode:500,data:null,message:`Internal Client Error`,error:{statusCode:500,message:`Internal Client Error`},meta:{version:`1.0.0`,timestamp:new Date().toISOString(),path:``}}}}};exports.ClientApi=t;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../app/src/types.d.ts","../src/utils.ts"],"sourcesContent":["import type { app } from '.';\n\nexport enum EMediaEntityType {\n PRODUCT = 'product',\n EXTRA_PRODUCT = 'extra_product',\n VARIANT = 'variant',\n CATEGORY = 'category',\n BRAND = 'brand',\n BLOG_POST = 'blog_post',\n SERIES = 'series',\n}\n\nexport enum EMimeType {\n IMAGE_WEBP = 'image/webp',\n IMAGE_JPEG = 'image/jpeg',\n IMAGE_JPG = 'image/jpg',\n IMAGE_PNG = 'image/png',\n IMAGE_GIF = 'image/gif',\n IMAGE_AVIF = 'image/avif',\n IMAGE_SVG = 'image/svg+xml',\n}\n\nexport enum EWeightUnit {\n KG = 'kg',\n G = 'g',\n LB = 'lb',\n OZ = 'oz',\n}\n\nexport enum EDimensionUnit {\n CM = 'cm',\n M = 'm',\n INCH = 'inch',\n FT = 'ft',\n}\n\nexport enum ECountry {\n VIETNAM = 'Vietnam',\n USA = 'USA',\n JAPAN = 'Japan',\n KOREA = 'Korea',\n CHINA = 'China',\n TAIWAN = 'Taiwan',\n THAILAND = 'Thailand',\n MALAYSIA = 'Malaysia',\n SINGAPORE = 'Singapore',\n INDONESIA = 'Indonesia',\n}\n\nexport enum ERole {\n SUPER_ADMIN = 'SUPER_ADMIN',\n ADMIN = 'ADMIN',\n MODERATOR = 'MODERATOR',\n STAFF = 'STAFF',\n EDITOR = 'EDITOR',\n VIEWER = 'VIEWER',\n USER = 'USER',\n}\n\nexport enum EProvider {\n BASIC = 'BASIC',\n FACEBOOK = 'FACEBOOK',\n GOOGLE = 'GOOGLE',\n GITHUB = 'GITHUB',\n TWITTER = 'TWITTER',\n}\n\nexport enum EProductStatus {\n DRAFT = 'draft',\n REVIEW = 'review',\n PUBLISHED = 'published',\n CANCELLED = 'cancelled',\n}\n\nexport enum EProductInventoryStatus {\n IN_STOCK = 'in_stock',\n OUT_OF_STOCK = 'out_of_stock',\n PREORDER = 'preorder',\n}\n\nexport enum ECartStatus {\n ACTIVE = 'active',\n COMPLETED = 'completed',\n ABANDONED = 'abandoned',\n EXPIRED = 'expired',\n}\n\nexport enum ECartType {\n IN_STOCK = 'in_stock',\n ORDER = 'order',\n}\n\nexport type TResponsePagination = {\n page: number;\n limit: number;\n total: number;\n totalPages: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n};\n\nexport type TResponseError = {\n statusCode: number;\n message: string;\n reference?: string | null;\n fields?: {\n [key: string]: string[] | string;\n };\n};\n\nexport type TResponseMeta = {\n version: string;\n timestamp: string;\n path: string;\n pagination?: TResponsePagination;\n};\n\nexport type TResponse<T> = T extends string\n ?\n | {\n success: true;\n statusCode: number;\n data: null;\n message: string;\n error: null;\n meta: TResponseMeta;\n }\n | {\n success: false;\n statusCode: number;\n data: null;\n message: string;\n error: TResponseError;\n meta: TResponseMeta;\n }\n :\n | {\n success: true;\n statusCode: number;\n data: T;\n message: null;\n error: null;\n meta: TResponseMeta;\n }\n | {\n success: false;\n statusCode: number;\n data: null;\n message: string;\n error: TResponseError;\n meta: TResponseMeta;\n };\n\nexport type TPayloadJwt = {\n uuid: string;\n role: string;\n};\n\nexport type AppType = typeof app;\n","/** biome-ignore-all lint/suspicious/noExplicitAny: true */\nimport type { Treaty } from '@elysiajs/eden';\nimport { treaty } from '@elysiajs/eden';\nimport type { AppType, TResponse } from './types';\n\ntype RefreshStatus = 'SUCCESS' | 'FAILED';\n\n// Trick to extract Treaty Client type\nclass _Client {\n public static client: Treaty.Create<AppType>;\n public getClient() {\n return null;\n }\n}\n\n// Extract the client type\nconst _func = () => _Client.client;\ntype TClient = ReturnType<typeof _func>;\n\nexport type TUser = Treaty.Data<\n Awaited<ReturnType<TClient['admin']['v1']['auth']['me']['get']>>\n>['data'];\n\ntype Config = {\n baseURL: string;\n config?: Omit<Treaty.Config, 'onResponse'>;\n};\n\nexport class ClientApi {\n // Keep track of the ongoing \"me\" request to prevent multiple simultaneous calls\n private static _client: TClient | undefined;\n private static _getMeTask: Promise<any> | null = null;\n private static _refreshTokenTask: Promise<{ status: RefreshStatus }> | null =\n null;\n private static _logoutTask: Promise<any> | null = null;\n\n public static user: TUser = null;\n\n public static listeners: {\n onUserChange?: (user: TUser | null) => void | Promise<void>;\n onGetMe?: (user: TUser | null) => void | Promise<void>;\n onLogout?: () => void | Promise<void>;\n onUnauthorized?: () => void | Promise<void>;\n onRefreshToken?: (status: 'SUCCESS' | 'FAILED') => void | Promise<void>;\n } | null = null;\n\n private static async _getUser() {\n // If already logged in, no need to fetch again\n if (ClientApi.user) return;\n\n // Ensure client is initialized\n if (!ClientApi._client) return;\n\n // If there's an ongoing \"me\" request, await its completion\n if (ClientApi._getMeTask) {\n await ClientApi._getMeTask;\n return;\n }\n\n const getMe = ClientApi._client.admin.v1.auth.me.get();\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._getMeTask = getMe;\n try {\n const res = await getMe;\n if (!!res.data && !!res.data.data && res.data.success) {\n ClientApi.user = res.data.data;\n\n // CASE: Token Expired\n } else if (res?.data?.statusCode === 4001) {\n const { status } = await ClientApi._refreshToken();\n if (status === 'SUCCESS') {\n const _res = await getMe;\n if (\n !!_res.data &&\n _res.data.success &&\n _res.data.statusCode === 200\n ) {\n ClientApi.user = _res.data.data;\n } else {\n ClientApi.user = null;\n }\n }\n if (status === 'FAILED') {\n ClientApi.user = null;\n }\n // CASE: Unauthorized\n } else {\n ClientApi.user = null;\n console.error('Failed to fetch user data:', JSON.stringify(res.data));\n }\n } catch (error) {\n console.error('Error fetching user data:', JSON.stringify(error));\n ClientApi.user = null;\n } finally {\n ClientApi._getMeTask = null;\n }\n }\n\n private static async _refreshToken() {\n // Ensure client is initialized\n if (!ClientApi._client) return { status: 'FAILED' as const };\n\n // If there's an ongoing \"refresh token\" request, await its completion\n if (ClientApi._refreshTokenTask) {\n const res = await ClientApi._refreshTokenTask;\n return res;\n }\n\n const handler = async (): Promise<{ status: RefreshStatus }> => {\n try {\n const res =\n await ClientApi._client?.admin.v1.auth['refresh-token'].get();\n if (!!res?.data && !!res.data.success && res.data.statusCode === 200) {\n return { status: 'SUCCESS' };\n }\n return { status: 'FAILED' };\n } catch (error) {\n console.error('Error refreshing token:', JSON.stringify(error));\n return { status: 'FAILED' };\n }\n };\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._refreshTokenTask = handler();\n return ClientApi._refreshTokenTask.finally(() => {\n ClientApi._refreshTokenTask = null;\n });\n }\n\n private static async _logout() {\n // Ensure client is initialized\n if (!ClientApi._client) return;\n try {\n // If there's an ongoing \"logout\" request, await its completion\n if (ClientApi._logoutTask) {\n await ClientApi._logoutTask;\n return;\n }\n\n const logout = ClientApi._client.admin.v1.auth.logout.delete();\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._logoutTask = logout;\n await logout;\n } catch (error) {\n console.error('Error during logout:', error);\n } finally {\n ClientApi.user = null;\n ClientApi._logoutTask = null;\n ClientApi.listeners?.onUserChange?.(null);\n ClientApi.listeners?.onLogout?.();\n }\n }\n\n constructor({ baseURL, config }: Config) {\n // Initialize Treaty Client\n if (!ClientApi._client) {\n ClientApi._client = treaty<AppType>(baseURL, config);\n }\n\n this._onUnauthorized = async () => {\n ClientApi.user = null;\n await ClientApi.listeners?.onUserChange?.(null);\n await ClientApi.listeners?.onUnauthorized?.();\n };\n }\n\n public async getUser() {\n await ClientApi._getUser();\n await ClientApi.listeners?.onGetMe?.(ClientApi.user);\n return ClientApi.user ?? null;\n }\n\n public getClient(): TClient | undefined {\n return ClientApi._client;\n }\n\n public async logout() {\n await ClientApi._client?.admin.v1.auth.logout.delete();\n await ClientApi.listeners?.onLogout?.();\n }\n\n public async fetchApi<TData>({\n request,\n }: {\n request: (api: TClient) => Promise<TData>;\n }) {\n // Ensure client is initialized\n if (!ClientApi._client) {\n throw new Error('Client not initialized');\n }\n\n try {\n // Await ongoing \"me\" request to ensure user state is up-to-date\n if (ClientApi._getMeTask) {\n console.log(\n 'Awaiting ongoing _getMeTask before proceeding with fetchApi'\n );\n await ClientApi._getMeTask;\n }\n\n // Await ongoing \"refresh token\" request to ensure token state is up-to-date\n if (ClientApi._refreshTokenTask) {\n console.log(\n 'Awaiting ongoing _refreshTokenTask before proceeding with fetchApi'\n );\n await ClientApi._refreshTokenTask;\n }\n\n // Await ongoing \"logout\" request to ensure user is logged out properly\n if (ClientApi._logoutTask) {\n console.log(\n 'Awaiting ongoing _logoutTask before proceeding with fetchApi'\n );\n await ClientApi._logoutTask;\n }\n\n const response = (await request(\n ClientApi._client\n )) as Treaty.TreatyResponse<Record<number, TResponse<any>>>;\n\n // Check if response data exists\n if (!response.data) {\n console.error('No response data received from API request');\n return null;\n }\n\n // Check for status codes in the response data\n const _data = response.data;\n\n // CASE: User is Unauthorized\n if (_data?.statusCode === 401) {\n await this._onUnauthorized?.();\n await ClientApi.listeners?.onUnauthorized?.();\n return null;\n }\n\n // CASE: TOKEN EXPIRED - Re-fetch user data\n if (_data?.statusCode === 4001) {\n const { status } = await ClientApi._refreshToken();\n await ClientApi.listeners?.onRefreshToken?.(status);\n if (status === 'SUCCESS') {\n const response = (await request(\n ClientApi._client\n )) as Treaty.TreatyResponse<Record<number, TResponse<any>>>;\n return response as TData;\n }\n if (status === 'FAILED') {\n await ClientApi._logout();\n await ClientApi.listeners?.onLogout?.();\n return null;\n }\n }\n\n return response as TData;\n } catch (error) {\n console.error('Error in fetchApi:', JSON.stringify(error));\n return {\n success: false,\n statusCode: 500,\n data: null,\n message: 'Internal Client Error',\n error: {\n statusCode: 500,\n message: 'Internal Client Error',\n },\n meta: {\n version: '1.0.0',\n timestamp: new Date().toISOString(),\n path: '',\n },\n };\n }\n }\n\n private _onUnauthorized?: () => void | Promise<void>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../src/utils.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: true */\nimport type { Treaty } from '@elysiajs/eden';\nimport { treaty } from '@elysiajs/eden';\nimport type { Type } from './types';\n\ntype RefreshStatus = 'SUCCESS' | 'FAILED';\n\n// Trick to extract Treaty Client type\nclass _Client {\n public static client: Treaty.Create<Type.AppType>;\n public getClient() {\n return null;\n }\n}\n\n// Extract the client type\nconst _func = () => _Client.client;\ntype TClient = ReturnType<typeof _func>;\n\nexport type TUser = Treaty.Data<\n Awaited<ReturnType<TClient['admin']['v1']['auth']['me']['get']>>\n>['data'];\n\ntype Config = {\n baseURL: string;\n config?: Omit<Treaty.Config, 'onResponse'>;\n};\n\nexport class ClientApi {\n // Keep track of the ongoing \"me\" request to prevent multiple simultaneous calls\n private static _client: TClient | undefined;\n private static _getMeTask: Promise<any> | null = null;\n private static _refreshTokenTask: Promise<{ status: RefreshStatus }> | null =\n null;\n private static _logoutTask: Promise<any> | null = null;\n\n public static user: TUser = null;\n\n public static listeners: {\n onUserChange?: (user: TUser | null) => void | Promise<void>;\n onGetMe?: (user: TUser | null) => void | Promise<void>;\n onLogout?: () => void | Promise<void>;\n onUnauthorized?: () => void | Promise<void>;\n onRefreshToken?: (status: 'SUCCESS' | 'FAILED') => void | Promise<void>;\n } | null = null;\n\n private static async _getUser() {\n // If already logged in, no need to fetch again\n if (ClientApi.user) return;\n\n // Ensure client is initialized\n if (!ClientApi._client) return;\n\n // If there's an ongoing \"me\" request, await its completion\n if (ClientApi._getMeTask) {\n await ClientApi._getMeTask;\n return;\n }\n\n const getMe = ClientApi._client.admin.v1.auth.me.get();\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._getMeTask = getMe;\n try {\n const res = await getMe;\n if (!!res.data && !!res.data.data && res.data.success) {\n ClientApi.user = res.data.data;\n\n // CASE: Token Expired\n } else if (res?.data?.statusCode === 4001) {\n const { status } = await ClientApi._refreshToken();\n if (status === 'SUCCESS') {\n const _res = await getMe;\n if (\n !!_res.data &&\n _res.data.success &&\n _res.data.statusCode === 200\n ) {\n ClientApi.user = _res.data.data;\n } else {\n ClientApi.user = null;\n }\n }\n if (status === 'FAILED') {\n ClientApi.user = null;\n }\n // CASE: Unauthorized\n } else {\n ClientApi.user = null;\n console.error('Failed to fetch user data:', JSON.stringify(res.data));\n }\n } catch (error) {\n console.error('Error fetching user data:', JSON.stringify(error));\n ClientApi.user = null;\n } finally {\n ClientApi._getMeTask = null;\n }\n }\n\n private static async _refreshToken() {\n // Ensure client is initialized\n if (!ClientApi._client) return { status: 'FAILED' as const };\n\n // If there's an ongoing \"refresh token\" request, await its completion\n if (ClientApi._refreshTokenTask) {\n const res = await ClientApi._refreshTokenTask;\n return res;\n }\n\n const handler = async (): Promise<{ status: RefreshStatus }> => {\n try {\n const res =\n await ClientApi._client?.admin.v1.auth['refresh-token'].get();\n if (!!res?.data && !!res.data.success && res.data.statusCode === 200) {\n return { status: 'SUCCESS' };\n }\n return { status: 'FAILED' };\n } catch (error) {\n console.error('Error refreshing token:', JSON.stringify(error));\n return { status: 'FAILED' };\n }\n };\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._refreshTokenTask = handler();\n return ClientApi._refreshTokenTask.finally(() => {\n ClientApi._refreshTokenTask = null;\n });\n }\n\n private static async _logout() {\n // Ensure client is initialized\n if (!ClientApi._client) return;\n try {\n // If there's an ongoing \"logout\" request, await its completion\n if (ClientApi._logoutTask) {\n await ClientApi._logoutTask;\n return;\n }\n\n const logout = ClientApi._client.admin.v1.auth.logout.delete();\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._logoutTask = logout;\n await logout;\n } catch (error) {\n console.error('Error during logout:', error);\n } finally {\n ClientApi.user = null;\n ClientApi._logoutTask = null;\n ClientApi.listeners?.onUserChange?.(null);\n ClientApi.listeners?.onLogout?.();\n }\n }\n\n constructor({ baseURL, config }: Config) {\n // Initialize Treaty Client\n if (!ClientApi._client) {\n ClientApi._client = treaty<Type.AppType>(baseURL, config);\n }\n\n this._onUnauthorized = async () => {\n ClientApi.user = null;\n await ClientApi.listeners?.onUserChange?.(null);\n await ClientApi.listeners?.onUnauthorized?.();\n };\n }\n\n public async getUser() {\n await ClientApi._getUser();\n await ClientApi.listeners?.onGetMe?.(ClientApi.user);\n return ClientApi.user ?? null;\n }\n\n public getClient(): TClient | undefined {\n return ClientApi._client;\n }\n\n public async logout() {\n await ClientApi._client?.admin.v1.auth.logout.delete();\n await ClientApi.listeners?.onLogout?.();\n }\n\n public async fetchApi<TData>({\n request,\n }: {\n request: (api: TClient) => Promise<TData>;\n }) {\n // Ensure client is initialized\n if (!ClientApi._client) {\n throw new Error('Client not initialized');\n }\n\n try {\n // Await ongoing \"me\" request to ensure user state is up-to-date\n if (ClientApi._getMeTask) {\n console.log(\n 'Awaiting ongoing _getMeTask before proceeding with fetchApi'\n );\n await ClientApi._getMeTask;\n }\n\n // Await ongoing \"refresh token\" request to ensure token state is up-to-date\n if (ClientApi._refreshTokenTask) {\n console.log(\n 'Awaiting ongoing _refreshTokenTask before proceeding with fetchApi'\n );\n await ClientApi._refreshTokenTask;\n }\n\n // Await ongoing \"logout\" request to ensure user is logged out properly\n if (ClientApi._logoutTask) {\n console.log(\n 'Awaiting ongoing _logoutTask before proceeding with fetchApi'\n );\n await ClientApi._logoutTask;\n }\n\n const response = (await request(\n ClientApi._client\n )) as Treaty.TreatyResponse<Record<number, Type.TResponse<any>>>;\n\n // Check if response data exists\n if (!response.data) {\n console.error('No response data received from API request');\n return null;\n }\n\n // Check for status codes in the response data\n const _data = response.data;\n\n // CASE: User is Unauthorized\n if (_data?.statusCode === 401) {\n await this._onUnauthorized?.();\n await ClientApi.listeners?.onUnauthorized?.();\n return null;\n }\n\n // CASE: TOKEN EXPIRED - Re-fetch user data\n if (_data?.statusCode === 4001) {\n const { status } = await ClientApi._refreshToken();\n await ClientApi.listeners?.onRefreshToken?.(status);\n if (status === 'SUCCESS') {\n const response = (await request(\n ClientApi._client\n )) as Treaty.TreatyResponse<Record<number, Type.TResponse<any>>>;\n return response as TData;\n }\n if (status === 'FAILED') {\n await ClientApi._logout();\n await ClientApi.listeners?.onLogout?.();\n return null;\n }\n }\n\n return response as TData;\n } catch (error) {\n console.error('Error in fetchApi:', JSON.stringify(error));\n return {\n success: false,\n statusCode: 500,\n data: null,\n message: 'Internal Client Error',\n error: {\n statusCode: 500,\n message: 'Internal Client Error',\n },\n meta: {\n version: '1.0.0',\n timestamp: new Date().toISOString(),\n path: '',\n },\n };\n }\n }\n\n private _onUnauthorized?: () => void | Promise<void>;\n}\n"],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -131,7 +131,6 @@ type TResponse<T> = T extends string ? {
131
131
  error: TResponseError;
132
132
  meta: TResponseMeta;
133
133
  };
134
- type AppType = typeof app;
135
134
  //#endregion
136
135
  //#region src/utils.d.ts
137
136
  declare const _func: () => {
@@ -3084,5 +3083,5 @@ declare class ClientApi {
3084
3083
  private _onUnauthorized?;
3085
3084
  }
3086
3085
  //#endregion
3087
- export { AppType, ClientApi, ECartStatus, ECartType, ECountry, EDimensionUnit, EMediaEntityType, EMimeType, EProductInventoryStatus, EProductStatus, EProvider, ERole, EWeightUnit, TResponse, type TUser };
3086
+ export { ClientApi, type ECartStatus, type ECartType, type ECountry, type EDimensionUnit, type EMediaEntityType, type EMimeType, type EProductInventoryStatus, type EProductStatus, type EProvider, type ERole, type EWeightUnit, type TResponse, type TResponseError, type TUser };
3088
3087
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":["app","EMediaEntityType","EMimeType","EWeightUnit","EDimensionUnit","ECountry","ERole","EProvider","EProductStatus","EProductInventoryStatus","ECartStatus","ECartType","TResponsePagination","TResponseError","TResponseMeta","TResponse","T","TPayloadJwt","AppType"],"sources":["../../app/src/types.d.ts","../src/utils.ts"],"sourcesContent":["import type { app } from '.';\n\nexport enum EMediaEntityType {\n PRODUCT = 'product',\n EXTRA_PRODUCT = 'extra_product',\n VARIANT = 'variant',\n CATEGORY = 'category',\n BRAND = 'brand',\n BLOG_POST = 'blog_post',\n SERIES = 'series',\n}\n\nexport enum EMimeType {\n IMAGE_WEBP = 'image/webp',\n IMAGE_JPEG = 'image/jpeg',\n IMAGE_JPG = 'image/jpg',\n IMAGE_PNG = 'image/png',\n IMAGE_GIF = 'image/gif',\n IMAGE_AVIF = 'image/avif',\n IMAGE_SVG = 'image/svg+xml',\n}\n\nexport enum EWeightUnit {\n KG = 'kg',\n G = 'g',\n LB = 'lb',\n OZ = 'oz',\n}\n\nexport enum EDimensionUnit {\n CM = 'cm',\n M = 'm',\n INCH = 'inch',\n FT = 'ft',\n}\n\nexport enum ECountry {\n VIETNAM = 'Vietnam',\n USA = 'USA',\n JAPAN = 'Japan',\n KOREA = 'Korea',\n CHINA = 'China',\n TAIWAN = 'Taiwan',\n THAILAND = 'Thailand',\n MALAYSIA = 'Malaysia',\n SINGAPORE = 'Singapore',\n INDONESIA = 'Indonesia',\n}\n\nexport enum ERole {\n SUPER_ADMIN = 'SUPER_ADMIN',\n ADMIN = 'ADMIN',\n MODERATOR = 'MODERATOR',\n STAFF = 'STAFF',\n EDITOR = 'EDITOR',\n VIEWER = 'VIEWER',\n USER = 'USER',\n}\n\nexport enum EProvider {\n BASIC = 'BASIC',\n FACEBOOK = 'FACEBOOK',\n GOOGLE = 'GOOGLE',\n GITHUB = 'GITHUB',\n TWITTER = 'TWITTER',\n}\n\nexport enum EProductStatus {\n DRAFT = 'draft',\n REVIEW = 'review',\n PUBLISHED = 'published',\n CANCELLED = 'cancelled',\n}\n\nexport enum EProductInventoryStatus {\n IN_STOCK = 'in_stock',\n OUT_OF_STOCK = 'out_of_stock',\n PREORDER = 'preorder',\n}\n\nexport enum ECartStatus {\n ACTIVE = 'active',\n COMPLETED = 'completed',\n ABANDONED = 'abandoned',\n EXPIRED = 'expired',\n}\n\nexport enum ECartType {\n IN_STOCK = 'in_stock',\n ORDER = 'order',\n}\n\nexport type TResponsePagination = {\n page: number;\n limit: number;\n total: number;\n totalPages: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n};\n\nexport type TResponseError = {\n statusCode: number;\n message: string;\n reference?: string | null;\n fields?: {\n [key: string]: string[] | string;\n };\n};\n\nexport type TResponseMeta = {\n version: string;\n timestamp: string;\n path: string;\n pagination?: TResponsePagination;\n};\n\nexport type TResponse<T> = T extends string\n ?\n | {\n success: true;\n statusCode: number;\n data: null;\n message: string;\n error: null;\n meta: TResponseMeta;\n }\n | {\n success: false;\n statusCode: number;\n data: null;\n message: string;\n error: TResponseError;\n meta: TResponseMeta;\n }\n :\n | {\n success: true;\n statusCode: number;\n data: T;\n message: null;\n error: null;\n meta: TResponseMeta;\n }\n | {\n success: false;\n statusCode: number;\n data: null;\n message: string;\n error: TResponseError;\n meta: TResponseMeta;\n };\n\nexport type TPayloadJwt = {\n uuid: string;\n role: string;\n};\n\nexport type AppType = typeof app;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":["app","EMediaEntityType","EMimeType","EWeightUnit","EDimensionUnit","ECountry","ERole","EProvider","EProductStatus","EProductInventoryStatus","ECartStatus","ECartType","TResponsePagination","TResponseError","TResponseMeta","TResponse","T","TPayloadJwt","AppType"],"sources":["../../app/src/types.d.ts","../src/utils.ts"],"sourcesContent":["import type { app } from '.';\n\nexport enum EMediaEntityType {\n PRODUCT = 'product',\n EXTRA_PRODUCT = 'extra_product',\n VARIANT = 'variant',\n CATEGORY = 'category',\n BRAND = 'brand',\n BLOG_POST = 'blog_post',\n SERIES = 'series',\n}\n\nexport enum EMimeType {\n IMAGE_WEBP = 'image/webp',\n IMAGE_JPEG = 'image/jpeg',\n IMAGE_JPG = 'image/jpg',\n IMAGE_PNG = 'image/png',\n IMAGE_GIF = 'image/gif',\n IMAGE_AVIF = 'image/avif',\n IMAGE_SVG = 'image/svg+xml',\n}\n\nexport enum EWeightUnit {\n KG = 'kg',\n G = 'g',\n LB = 'lb',\n OZ = 'oz',\n}\n\nexport enum EDimensionUnit {\n CM = 'cm',\n M = 'm',\n INCH = 'inch',\n FT = 'ft',\n}\n\nexport enum ECountry {\n VIETNAM = 'Vietnam',\n USA = 'USA',\n JAPAN = 'Japan',\n KOREA = 'Korea',\n CHINA = 'China',\n TAIWAN = 'Taiwan',\n THAILAND = 'Thailand',\n MALAYSIA = 'Malaysia',\n SINGAPORE = 'Singapore',\n INDONESIA = 'Indonesia',\n}\n\nexport enum ERole {\n SUPER_ADMIN = 'SUPER_ADMIN',\n ADMIN = 'ADMIN',\n MODERATOR = 'MODERATOR',\n STAFF = 'STAFF',\n EDITOR = 'EDITOR',\n VIEWER = 'VIEWER',\n USER = 'USER',\n}\n\nexport enum EProvider {\n BASIC = 'BASIC',\n FACEBOOK = 'FACEBOOK',\n GOOGLE = 'GOOGLE',\n GITHUB = 'GITHUB',\n TWITTER = 'TWITTER',\n}\n\nexport enum EProductStatus {\n DRAFT = 'draft',\n REVIEW = 'review',\n PUBLISHED = 'published',\n CANCELLED = 'cancelled',\n}\n\nexport enum EProductInventoryStatus {\n IN_STOCK = 'in_stock',\n OUT_OF_STOCK = 'out_of_stock',\n PREORDER = 'preorder',\n}\n\nexport enum ECartStatus {\n ACTIVE = 'active',\n COMPLETED = 'completed',\n ABANDONED = 'abandoned',\n EXPIRED = 'expired',\n}\n\nexport enum ECartType {\n IN_STOCK = 'in_stock',\n ORDER = 'order',\n}\n\nexport type TResponsePagination = {\n page: number;\n limit: number;\n total: number;\n totalPages: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n};\n\nexport type TResponseError = {\n statusCode: number;\n message: string;\n reference?: string | null;\n fields?: {\n [key: string]: string[] | string;\n };\n};\n\nexport type TResponseMeta = {\n version: string;\n timestamp: string;\n path: string;\n pagination?: TResponsePagination;\n};\n\nexport type TResponse<T> = T extends string\n ?\n | {\n success: true;\n statusCode: number;\n data: null;\n message: string;\n error: null;\n meta: TResponseMeta;\n }\n | {\n success: false;\n statusCode: number;\n data: null;\n message: string;\n error: TResponseError;\n meta: TResponseMeta;\n }\n :\n | {\n success: true;\n statusCode: number;\n data: T;\n message: null;\n error: null;\n meta: TResponseMeta;\n }\n | {\n success: false;\n statusCode: number;\n data: null;\n message: string;\n error: TResponseError;\n meta: TResponseMeta;\n };\n\nexport type TPayloadJwt = {\n uuid: string;\n role: string;\n};\n\nexport type AppType = typeof app;\n"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,137 @@
1
- import { a as EDimensionUnit, c as EProductInventoryStatus, d as ERole, f as EWeightUnit, h as TResponseMeta, i as ECountry, l as EProductStatus, m as TResponseError, n as ECartStatus, o as EMediaEntityType, p as TResponse, r as ECartType, s as EMimeType, t as AppType, u as EProvider } from "./types-CbjP5yIv.mjs";
2
1
  import { Treaty } from "@elysiajs/eden";
3
2
 
3
+ //#region ../app/src/types.d.ts
4
+ declare enum EMediaEntityType {
5
+ PRODUCT = 'product',
6
+ EXTRA_PRODUCT = 'extra_product',
7
+ VARIANT = 'variant',
8
+ CATEGORY = 'category',
9
+ BRAND = 'brand',
10
+ BLOG_POST = 'blog_post',
11
+ SERIES = 'series',
12
+ }
13
+ declare enum EMimeType {
14
+ IMAGE_WEBP = 'image/webp',
15
+ IMAGE_JPEG = 'image/jpeg',
16
+ IMAGE_JPG = 'image/jpg',
17
+ IMAGE_PNG = 'image/png',
18
+ IMAGE_GIF = 'image/gif',
19
+ IMAGE_AVIF = 'image/avif',
20
+ IMAGE_SVG = 'image/svg+xml',
21
+ }
22
+ declare enum EWeightUnit {
23
+ KG = 'kg',
24
+ G = 'g',
25
+ LB = 'lb',
26
+ OZ = 'oz',
27
+ }
28
+ declare enum EDimensionUnit {
29
+ CM = 'cm',
30
+ M = 'm',
31
+ INCH = 'inch',
32
+ FT = 'ft',
33
+ }
34
+ declare enum ECountry {
35
+ VIETNAM = 'Vietnam',
36
+ USA = 'USA',
37
+ JAPAN = 'Japan',
38
+ KOREA = 'Korea',
39
+ CHINA = 'China',
40
+ TAIWAN = 'Taiwan',
41
+ THAILAND = 'Thailand',
42
+ MALAYSIA = 'Malaysia',
43
+ SINGAPORE = 'Singapore',
44
+ INDONESIA = 'Indonesia',
45
+ }
46
+ declare enum ERole {
47
+ SUPER_ADMIN = 'SUPER_ADMIN',
48
+ ADMIN = 'ADMIN',
49
+ MODERATOR = 'MODERATOR',
50
+ STAFF = 'STAFF',
51
+ EDITOR = 'EDITOR',
52
+ VIEWER = 'VIEWER',
53
+ USER = 'USER',
54
+ }
55
+ declare enum EProvider {
56
+ BASIC = 'BASIC',
57
+ FACEBOOK = 'FACEBOOK',
58
+ GOOGLE = 'GOOGLE',
59
+ GITHUB = 'GITHUB',
60
+ TWITTER = 'TWITTER',
61
+ }
62
+ declare enum EProductStatus {
63
+ DRAFT = 'draft',
64
+ REVIEW = 'review',
65
+ PUBLISHED = 'published',
66
+ CANCELLED = 'cancelled',
67
+ }
68
+ declare enum EProductInventoryStatus {
69
+ IN_STOCK = 'in_stock',
70
+ OUT_OF_STOCK = 'out_of_stock',
71
+ PREORDER = 'preorder',
72
+ }
73
+ declare enum ECartStatus {
74
+ ACTIVE = 'active',
75
+ COMPLETED = 'completed',
76
+ ABANDONED = 'abandoned',
77
+ EXPIRED = 'expired',
78
+ }
79
+ declare enum ECartType {
80
+ IN_STOCK = 'in_stock',
81
+ ORDER = 'order',
82
+ }
83
+ type TResponsePagination = {
84
+ page: number;
85
+ limit: number;
86
+ total: number;
87
+ totalPages: number;
88
+ hasNextPage: boolean;
89
+ hasPreviousPage: boolean;
90
+ };
91
+ type TResponseError = {
92
+ statusCode: number;
93
+ message: string;
94
+ reference?: string | null;
95
+ fields?: {
96
+ [key: string]: string[] | string;
97
+ };
98
+ };
99
+ type TResponseMeta = {
100
+ version: string;
101
+ timestamp: string;
102
+ path: string;
103
+ pagination?: TResponsePagination;
104
+ };
105
+ type TResponse<T> = T extends string ? {
106
+ success: true;
107
+ statusCode: number;
108
+ data: null;
109
+ message: string;
110
+ error: null;
111
+ meta: TResponseMeta;
112
+ } | {
113
+ success: false;
114
+ statusCode: number;
115
+ data: null;
116
+ message: string;
117
+ error: TResponseError;
118
+ meta: TResponseMeta;
119
+ } : {
120
+ success: true;
121
+ statusCode: number;
122
+ data: T;
123
+ message: null;
124
+ error: null;
125
+ meta: TResponseMeta;
126
+ } | {
127
+ success: false;
128
+ statusCode: number;
129
+ data: null;
130
+ message: string;
131
+ error: TResponseError;
132
+ meta: TResponseMeta;
133
+ };
134
+ //#endregion
4
135
  //#region src/utils.d.ts
5
136
  declare const _func: () => {
6
137
  admin: {
@@ -2952,5 +3083,5 @@ declare class ClientApi {
2952
3083
  private _onUnauthorized?;
2953
3084
  }
2954
3085
  //#endregion
2955
- export { AppType, ClientApi, ECartStatus, ECartType, ECountry, EDimensionUnit, EMediaEntityType, EMimeType, EProductInventoryStatus, EProductStatus, EProvider, ERole, EWeightUnit, TResponse, type TUser };
3086
+ export { ClientApi, type ECartStatus, type ECartType, type ECountry, type EDimensionUnit, type EMediaEntityType, type EMimeType, type EProductInventoryStatus, type EProductStatus, type EProvider, type ERole, type EWeightUnit, type TResponse, type TResponseError, type TUser };
2956
3087
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/utils.ts"],"sourcesContent":[],"mappings":";;;;cAgBM;;IAAA,EAAA,EAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBACnB,SAAU,MAAA;kBAER,SAAA,MAAA;gBACI,CAAA,EAAA;cAAX,CAAA;cAAR,OAAA,EAAA,IAAA;cADyB,KAAA,EAAA,IAAA;cAAI,IAAA,eAAA;YAIpB,CAEK;YAGM,GAAA,EAAA;cAQA,IAAA,EAAA,YAAA;cAGI,EAAA,EAAA,MAAA;cAAwB,OAAA,CAAA,EAAA,MAAA;cAC7B,OAAA,CAAA,EAAA,MAAA;cAAwB,KAAA,CAAA,EAAA,OAAA;cACjB,QAAA,CAAA,EAAA,MAAA;cACM,QAAA,CAAA,EAAA,MAAA;YAC4B,CAAA;UA6G9C,CAAA,CAAA,CAAA;QAAS,CAAA;QAAU,KAAA,EAAA,CAAA,KAAA,EAAA;;;;;;;;;;YAab,OAAA,EAAA,KAAA;YAMA,UAAA,EAAA,MAAA;YAID,IAAA,EAAA,IAAA;YAMjB,OAAA,EAAA,MAAA;YAEe,KAAA,gBAAA;YAAoB,IAAA,eAAA;UAAR,CAAA,GAAA;YAC5B,OAAA,EAAA,IAAA;YAAA,UAAA,EAAA,MAAA;YAAA,IAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAvKE,OAAA,GAAU,kBAAkB;KAErB,KAAA,GAAQ,MAAA,CAAO,KACzB,QAAQ,WAAW;KAGhB,MAAA;;WAEM,KAAK,MAAA,CAAO;;cAGV,SAAA;;;;;eAQS;;0BAGI,wBAAwB;qBAC7B,wBAAwB;4BACjB;kCACM;8DAC4B;;;;;;;;KA6G3B;aAab;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAMA;YAID;;;;mBAQF,YAAY,QAAQ;MACpC,QAAA"}
1
+ {"version":3,"file":"index.d.mts","names":["app","EMediaEntityType","EMimeType","EWeightUnit","EDimensionUnit","ECountry","ERole","EProvider","EProductStatus","EProductInventoryStatus","ECartStatus","ECartType","TResponsePagination","TResponseError","TResponseMeta","TResponse","T","TPayloadJwt","AppType"],"sources":["../../app/src/types.d.ts","../src/utils.ts"],"sourcesContent":["import type { app } from '.';\n\nexport enum EMediaEntityType {\n PRODUCT = 'product',\n EXTRA_PRODUCT = 'extra_product',\n VARIANT = 'variant',\n CATEGORY = 'category',\n BRAND = 'brand',\n BLOG_POST = 'blog_post',\n SERIES = 'series',\n}\n\nexport enum EMimeType {\n IMAGE_WEBP = 'image/webp',\n IMAGE_JPEG = 'image/jpeg',\n IMAGE_JPG = 'image/jpg',\n IMAGE_PNG = 'image/png',\n IMAGE_GIF = 'image/gif',\n IMAGE_AVIF = 'image/avif',\n IMAGE_SVG = 'image/svg+xml',\n}\n\nexport enum EWeightUnit {\n KG = 'kg',\n G = 'g',\n LB = 'lb',\n OZ = 'oz',\n}\n\nexport enum EDimensionUnit {\n CM = 'cm',\n M = 'm',\n INCH = 'inch',\n FT = 'ft',\n}\n\nexport enum ECountry {\n VIETNAM = 'Vietnam',\n USA = 'USA',\n JAPAN = 'Japan',\n KOREA = 'Korea',\n CHINA = 'China',\n TAIWAN = 'Taiwan',\n THAILAND = 'Thailand',\n MALAYSIA = 'Malaysia',\n SINGAPORE = 'Singapore',\n INDONESIA = 'Indonesia',\n}\n\nexport enum ERole {\n SUPER_ADMIN = 'SUPER_ADMIN',\n ADMIN = 'ADMIN',\n MODERATOR = 'MODERATOR',\n STAFF = 'STAFF',\n EDITOR = 'EDITOR',\n VIEWER = 'VIEWER',\n USER = 'USER',\n}\n\nexport enum EProvider {\n BASIC = 'BASIC',\n FACEBOOK = 'FACEBOOK',\n GOOGLE = 'GOOGLE',\n GITHUB = 'GITHUB',\n TWITTER = 'TWITTER',\n}\n\nexport enum EProductStatus {\n DRAFT = 'draft',\n REVIEW = 'review',\n PUBLISHED = 'published',\n CANCELLED = 'cancelled',\n}\n\nexport enum EProductInventoryStatus {\n IN_STOCK = 'in_stock',\n OUT_OF_STOCK = 'out_of_stock',\n PREORDER = 'preorder',\n}\n\nexport enum ECartStatus {\n ACTIVE = 'active',\n COMPLETED = 'completed',\n ABANDONED = 'abandoned',\n EXPIRED = 'expired',\n}\n\nexport enum ECartType {\n IN_STOCK = 'in_stock',\n ORDER = 'order',\n}\n\nexport type TResponsePagination = {\n page: number;\n limit: number;\n total: number;\n totalPages: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n};\n\nexport type TResponseError = {\n statusCode: number;\n message: string;\n reference?: string | null;\n fields?: {\n [key: string]: string[] | string;\n };\n};\n\nexport type TResponseMeta = {\n version: string;\n timestamp: string;\n path: string;\n pagination?: TResponsePagination;\n};\n\nexport type TResponse<T> = T extends string\n ?\n | {\n success: true;\n statusCode: number;\n data: null;\n message: string;\n error: null;\n meta: TResponseMeta;\n }\n | {\n success: false;\n statusCode: number;\n data: null;\n message: string;\n error: TResponseError;\n meta: TResponseMeta;\n }\n :\n | {\n success: true;\n statusCode: number;\n data: T;\n message: null;\n error: null;\n meta: TResponseMeta;\n }\n | {\n success: false;\n statusCode: number;\n data: null;\n message: string;\n error: TResponseError;\n meta: TResponseMeta;\n };\n\nexport type TPayloadJwt = {\n uuid: string;\n role: string;\n};\n\nexport type AppType = typeof app;\n"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,p as c,r as l,s as u,t as d,u as f}from"./types-CbjP5yIv.d.mts";import{treaty as p}from"@elysiajs/eden";var m=class e{static{this._getMeTask=null}static{this._refreshTokenTask=null}static{this._logoutTask=null}static{this.user=null}static{this.listeners=null}static async _getUser(){if(e.user||!e._client)return;if(e._getMeTask){await e._getMeTask;return}let t=e._client.admin.v1.auth.me.get();e._getMeTask=t;try{let n=await t;if(n.data&&n.data.data&&n.data.success)e.user=n.data.data;else if(n?.data?.statusCode===4001){let{status:n}=await e._refreshToken();if(n===`SUCCESS`){let n=await t;n.data&&n.data.success&&n.data.statusCode===200?e.user=n.data.data:e.user=null}n===`FAILED`&&(e.user=null)}else e.user=null,console.error(`Failed to fetch user data:`,JSON.stringify(n.data))}catch(t){console.error(`Error fetching user data:`,JSON.stringify(t)),e.user=null}finally{e._getMeTask=null}}static async _refreshToken(){return e._client?e._refreshTokenTask?await e._refreshTokenTask:(e._refreshTokenTask=(async()=>{try{let t=await e._client?.admin.v1.auth[`refresh-token`].get();return t?.data&&t.data.success&&t.data.statusCode===200?{status:`SUCCESS`}:{status:`FAILED`}}catch(e){return console.error(`Error refreshing token:`,JSON.stringify(e)),{status:`FAILED`}}})(),e._refreshTokenTask.finally(()=>{e._refreshTokenTask=null})):{status:`FAILED`}}static async _logout(){if(e._client)try{if(e._logoutTask){await e._logoutTask;return}let t=e._client.admin.v1.auth.logout.delete();e._logoutTask=t,await t}catch(e){console.error(`Error during logout:`,e)}finally{e.user=null,e._logoutTask=null,e.listeners?.onUserChange?.(null),e.listeners?.onLogout?.()}}constructor({baseURL:t,config:n}){e._client||=p(t,n),this._onUnauthorized=async()=>{e.user=null,await e.listeners?.onUserChange?.(null),await e.listeners?.onUnauthorized?.()}}async getUser(){return await e._getUser(),await e.listeners?.onGetMe?.(e.user),e.user??null}getClient(){return e._client}async logout(){await e._client?.admin.v1.auth.logout.delete(),await e.listeners?.onLogout?.()}async fetchApi({request:t}){if(!e._client)throw Error(`Client not initialized`);try{e._getMeTask&&(console.log(`Awaiting ongoing _getMeTask before proceeding with fetchApi`),await e._getMeTask),e._refreshTokenTask&&(console.log(`Awaiting ongoing _refreshTokenTask before proceeding with fetchApi`),await e._refreshTokenTask),e._logoutTask&&(console.log(`Awaiting ongoing _logoutTask before proceeding with fetchApi`),await e._logoutTask);let n=await t(e._client);if(!n.data)return console.error(`No response data received from API request`),null;let r=n.data;if(r?.statusCode===401)return await this._onUnauthorized?.(),await e.listeners?.onUnauthorized?.(),null;if(r?.statusCode===4001){let{status:n}=await e._refreshToken();if(await e.listeners?.onRefreshToken?.(n),n===`SUCCESS`)return await t(e._client);if(n===`FAILED`)return await e._logout(),await e.listeners?.onLogout?.(),null}return n}catch(e){return console.error(`Error in fetchApi:`,JSON.stringify(e)),{success:!1,statusCode:500,data:null,message:`Internal Client Error`,error:{statusCode:500,message:`Internal Client Error`},meta:{version:`1.0.0`,timestamp:new Date().toISOString(),path:``}}}}};export{d as AppType,m as ClientApi,o as ECartStatus,l as ECartType,i as ECountry,e as EDimensionUnit,s as EMediaEntityType,u as EMimeType,t as EProductInventoryStatus,a as EProductStatus,f as EProvider,n as ERole,r as EWeightUnit,c as TResponse};
1
+ import{treaty as e}from"@elysiajs/eden";var t=class t{static{this._getMeTask=null}static{this._refreshTokenTask=null}static{this._logoutTask=null}static{this.user=null}static{this.listeners=null}static async _getUser(){if(t.user||!t._client)return;if(t._getMeTask){await t._getMeTask;return}let e=t._client.admin.v1.auth.me.get();t._getMeTask=e;try{let n=await e;if(n.data&&n.data.data&&n.data.success)t.user=n.data.data;else if(n?.data?.statusCode===4001){let{status:n}=await t._refreshToken();if(n===`SUCCESS`){let n=await e;n.data&&n.data.success&&n.data.statusCode===200?t.user=n.data.data:t.user=null}n===`FAILED`&&(t.user=null)}else t.user=null,console.error(`Failed to fetch user data:`,JSON.stringify(n.data))}catch(e){console.error(`Error fetching user data:`,JSON.stringify(e)),t.user=null}finally{t._getMeTask=null}}static async _refreshToken(){return t._client?t._refreshTokenTask?await t._refreshTokenTask:(t._refreshTokenTask=(async()=>{try{let e=await t._client?.admin.v1.auth[`refresh-token`].get();return e?.data&&e.data.success&&e.data.statusCode===200?{status:`SUCCESS`}:{status:`FAILED`}}catch(e){return console.error(`Error refreshing token:`,JSON.stringify(e)),{status:`FAILED`}}})(),t._refreshTokenTask.finally(()=>{t._refreshTokenTask=null})):{status:`FAILED`}}static async _logout(){if(t._client)try{if(t._logoutTask){await t._logoutTask;return}let e=t._client.admin.v1.auth.logout.delete();t._logoutTask=e,await e}catch(e){console.error(`Error during logout:`,e)}finally{t.user=null,t._logoutTask=null,t.listeners?.onUserChange?.(null),t.listeners?.onLogout?.()}}constructor({baseURL:n,config:r}){t._client||=e(n,r),this._onUnauthorized=async()=>{t.user=null,await t.listeners?.onUserChange?.(null),await t.listeners?.onUnauthorized?.()}}async getUser(){return await t._getUser(),await t.listeners?.onGetMe?.(t.user),t.user??null}getClient(){return t._client}async logout(){await t._client?.admin.v1.auth.logout.delete(),await t.listeners?.onLogout?.()}async fetchApi({request:e}){if(!t._client)throw Error(`Client not initialized`);try{t._getMeTask&&(console.log(`Awaiting ongoing _getMeTask before proceeding with fetchApi`),await t._getMeTask),t._refreshTokenTask&&(console.log(`Awaiting ongoing _refreshTokenTask before proceeding with fetchApi`),await t._refreshTokenTask),t._logoutTask&&(console.log(`Awaiting ongoing _logoutTask before proceeding with fetchApi`),await t._logoutTask);let n=await e(t._client);if(!n.data)return console.error(`No response data received from API request`),null;let r=n.data;if(r?.statusCode===401)return await this._onUnauthorized?.(),await t.listeners?.onUnauthorized?.(),null;if(r?.statusCode===4001){let{status:n}=await t._refreshToken();if(await t.listeners?.onRefreshToken?.(n),n===`SUCCESS`)return await e(t._client);if(n===`FAILED`)return await t._logout(),await t.listeners?.onLogout?.(),null}return n}catch(e){return console.error(`Error in fetchApi:`,JSON.stringify(e)),{success:!1,statusCode:500,data:null,message:`Internal Client Error`,error:{statusCode:500,message:`Internal Client Error`},meta:{version:`1.0.0`,timestamp:new Date().toISOString(),path:``}}}}};export{t as ClientApi};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/utils.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: true */\nimport type { Treaty } from '@elysiajs/eden';\nimport { treaty } from '@elysiajs/eden';\nimport type { AppType, TResponse } from './types';\n\ntype RefreshStatus = 'SUCCESS' | 'FAILED';\n\n// Trick to extract Treaty Client type\nclass _Client {\n public static client: Treaty.Create<AppType>;\n public getClient() {\n return null;\n }\n}\n\n// Extract the client type\nconst _func = () => _Client.client;\ntype TClient = ReturnType<typeof _func>;\n\nexport type TUser = Treaty.Data<\n Awaited<ReturnType<TClient['admin']['v1']['auth']['me']['get']>>\n>['data'];\n\ntype Config = {\n baseURL: string;\n config?: Omit<Treaty.Config, 'onResponse'>;\n};\n\nexport class ClientApi {\n // Keep track of the ongoing \"me\" request to prevent multiple simultaneous calls\n private static _client: TClient | undefined;\n private static _getMeTask: Promise<any> | null = null;\n private static _refreshTokenTask: Promise<{ status: RefreshStatus }> | null =\n null;\n private static _logoutTask: Promise<any> | null = null;\n\n public static user: TUser = null;\n\n public static listeners: {\n onUserChange?: (user: TUser | null) => void | Promise<void>;\n onGetMe?: (user: TUser | null) => void | Promise<void>;\n onLogout?: () => void | Promise<void>;\n onUnauthorized?: () => void | Promise<void>;\n onRefreshToken?: (status: 'SUCCESS' | 'FAILED') => void | Promise<void>;\n } | null = null;\n\n private static async _getUser() {\n // If already logged in, no need to fetch again\n if (ClientApi.user) return;\n\n // Ensure client is initialized\n if (!ClientApi._client) return;\n\n // If there's an ongoing \"me\" request, await its completion\n if (ClientApi._getMeTask) {\n await ClientApi._getMeTask;\n return;\n }\n\n const getMe = ClientApi._client.admin.v1.auth.me.get();\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._getMeTask = getMe;\n try {\n const res = await getMe;\n if (!!res.data && !!res.data.data && res.data.success) {\n ClientApi.user = res.data.data;\n\n // CASE: Token Expired\n } else if (res?.data?.statusCode === 4001) {\n const { status } = await ClientApi._refreshToken();\n if (status === 'SUCCESS') {\n const _res = await getMe;\n if (\n !!_res.data &&\n _res.data.success &&\n _res.data.statusCode === 200\n ) {\n ClientApi.user = _res.data.data;\n } else {\n ClientApi.user = null;\n }\n }\n if (status === 'FAILED') {\n ClientApi.user = null;\n }\n // CASE: Unauthorized\n } else {\n ClientApi.user = null;\n console.error('Failed to fetch user data:', JSON.stringify(res.data));\n }\n } catch (error) {\n console.error('Error fetching user data:', JSON.stringify(error));\n ClientApi.user = null;\n } finally {\n ClientApi._getMeTask = null;\n }\n }\n\n private static async _refreshToken() {\n // Ensure client is initialized\n if (!ClientApi._client) return { status: 'FAILED' as const };\n\n // If there's an ongoing \"refresh token\" request, await its completion\n if (ClientApi._refreshTokenTask) {\n const res = await ClientApi._refreshTokenTask;\n return res;\n }\n\n const handler = async (): Promise<{ status: RefreshStatus }> => {\n try {\n const res =\n await ClientApi._client?.admin.v1.auth['refresh-token'].get();\n if (!!res?.data && !!res.data.success && res.data.statusCode === 200) {\n return { status: 'SUCCESS' };\n }\n return { status: 'FAILED' };\n } catch (error) {\n console.error('Error refreshing token:', JSON.stringify(error));\n return { status: 'FAILED' };\n }\n };\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._refreshTokenTask = handler();\n return ClientApi._refreshTokenTask.finally(() => {\n ClientApi._refreshTokenTask = null;\n });\n }\n\n private static async _logout() {\n // Ensure client is initialized\n if (!ClientApi._client) return;\n try {\n // If there's an ongoing \"logout\" request, await its completion\n if (ClientApi._logoutTask) {\n await ClientApi._logoutTask;\n return;\n }\n\n const logout = ClientApi._client.admin.v1.auth.logout.delete();\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._logoutTask = logout;\n await logout;\n } catch (error) {\n console.error('Error during logout:', error);\n } finally {\n ClientApi.user = null;\n ClientApi._logoutTask = null;\n ClientApi.listeners?.onUserChange?.(null);\n ClientApi.listeners?.onLogout?.();\n }\n }\n\n constructor({ baseURL, config }: Config) {\n // Initialize Treaty Client\n if (!ClientApi._client) {\n ClientApi._client = treaty<AppType>(baseURL, config);\n }\n\n this._onUnauthorized = async () => {\n ClientApi.user = null;\n await ClientApi.listeners?.onUserChange?.(null);\n await ClientApi.listeners?.onUnauthorized?.();\n };\n }\n\n public async getUser() {\n await ClientApi._getUser();\n await ClientApi.listeners?.onGetMe?.(ClientApi.user);\n return ClientApi.user ?? null;\n }\n\n public getClient(): TClient | undefined {\n return ClientApi._client;\n }\n\n public async logout() {\n await ClientApi._client?.admin.v1.auth.logout.delete();\n await ClientApi.listeners?.onLogout?.();\n }\n\n public async fetchApi<TData>({\n request,\n }: {\n request: (api: TClient) => Promise<TData>;\n }) {\n // Ensure client is initialized\n if (!ClientApi._client) {\n throw new Error('Client not initialized');\n }\n\n try {\n // Await ongoing \"me\" request to ensure user state is up-to-date\n if (ClientApi._getMeTask) {\n console.log(\n 'Awaiting ongoing _getMeTask before proceeding with fetchApi'\n );\n await ClientApi._getMeTask;\n }\n\n // Await ongoing \"refresh token\" request to ensure token state is up-to-date\n if (ClientApi._refreshTokenTask) {\n console.log(\n 'Awaiting ongoing _refreshTokenTask before proceeding with fetchApi'\n );\n await ClientApi._refreshTokenTask;\n }\n\n // Await ongoing \"logout\" request to ensure user is logged out properly\n if (ClientApi._logoutTask) {\n console.log(\n 'Awaiting ongoing _logoutTask before proceeding with fetchApi'\n );\n await ClientApi._logoutTask;\n }\n\n const response = (await request(\n ClientApi._client\n )) as Treaty.TreatyResponse<Record<number, TResponse<any>>>;\n\n // Check if response data exists\n if (!response.data) {\n console.error('No response data received from API request');\n return null;\n }\n\n // Check for status codes in the response data\n const _data = response.data;\n\n // CASE: User is Unauthorized\n if (_data?.statusCode === 401) {\n await this._onUnauthorized?.();\n await ClientApi.listeners?.onUnauthorized?.();\n return null;\n }\n\n // CASE: TOKEN EXPIRED - Re-fetch user data\n if (_data?.statusCode === 4001) {\n const { status } = await ClientApi._refreshToken();\n await ClientApi.listeners?.onRefreshToken?.(status);\n if (status === 'SUCCESS') {\n const response = (await request(\n ClientApi._client\n )) as Treaty.TreatyResponse<Record<number, TResponse<any>>>;\n return response as TData;\n }\n if (status === 'FAILED') {\n await ClientApi._logout();\n await ClientApi.listeners?.onLogout?.();\n return null;\n }\n }\n\n return response as TData;\n } catch (error) {\n console.error('Error in fetchApi:', JSON.stringify(error));\n return {\n success: false,\n statusCode: 500,\n data: null,\n message: 'Internal Client Error',\n error: {\n statusCode: 500,\n message: 'Internal Client Error',\n },\n meta: {\n version: '1.0.0',\n timestamp: new Date().toISOString(),\n path: '',\n },\n };\n }\n }\n\n private _onUnauthorized?: () => void | Promise<void>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/utils.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: true */\nimport type { Treaty } from '@elysiajs/eden';\nimport { treaty } from '@elysiajs/eden';\nimport type { Type } from './types';\n\ntype RefreshStatus = 'SUCCESS' | 'FAILED';\n\n// Trick to extract Treaty Client type\nclass _Client {\n public static client: Treaty.Create<Type.AppType>;\n public getClient() {\n return null;\n }\n}\n\n// Extract the client type\nconst _func = () => _Client.client;\ntype TClient = ReturnType<typeof _func>;\n\nexport type TUser = Treaty.Data<\n Awaited<ReturnType<TClient['admin']['v1']['auth']['me']['get']>>\n>['data'];\n\ntype Config = {\n baseURL: string;\n config?: Omit<Treaty.Config, 'onResponse'>;\n};\n\nexport class ClientApi {\n // Keep track of the ongoing \"me\" request to prevent multiple simultaneous calls\n private static _client: TClient | undefined;\n private static _getMeTask: Promise<any> | null = null;\n private static _refreshTokenTask: Promise<{ status: RefreshStatus }> | null =\n null;\n private static _logoutTask: Promise<any> | null = null;\n\n public static user: TUser = null;\n\n public static listeners: {\n onUserChange?: (user: TUser | null) => void | Promise<void>;\n onGetMe?: (user: TUser | null) => void | Promise<void>;\n onLogout?: () => void | Promise<void>;\n onUnauthorized?: () => void | Promise<void>;\n onRefreshToken?: (status: 'SUCCESS' | 'FAILED') => void | Promise<void>;\n } | null = null;\n\n private static async _getUser() {\n // If already logged in, no need to fetch again\n if (ClientApi.user) return;\n\n // Ensure client is initialized\n if (!ClientApi._client) return;\n\n // If there's an ongoing \"me\" request, await its completion\n if (ClientApi._getMeTask) {\n await ClientApi._getMeTask;\n return;\n }\n\n const getMe = ClientApi._client.admin.v1.auth.me.get();\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._getMeTask = getMe;\n try {\n const res = await getMe;\n if (!!res.data && !!res.data.data && res.data.success) {\n ClientApi.user = res.data.data;\n\n // CASE: Token Expired\n } else if (res?.data?.statusCode === 4001) {\n const { status } = await ClientApi._refreshToken();\n if (status === 'SUCCESS') {\n const _res = await getMe;\n if (\n !!_res.data &&\n _res.data.success &&\n _res.data.statusCode === 200\n ) {\n ClientApi.user = _res.data.data;\n } else {\n ClientApi.user = null;\n }\n }\n if (status === 'FAILED') {\n ClientApi.user = null;\n }\n // CASE: Unauthorized\n } else {\n ClientApi.user = null;\n console.error('Failed to fetch user data:', JSON.stringify(res.data));\n }\n } catch (error) {\n console.error('Error fetching user data:', JSON.stringify(error));\n ClientApi.user = null;\n } finally {\n ClientApi._getMeTask = null;\n }\n }\n\n private static async _refreshToken() {\n // Ensure client is initialized\n if (!ClientApi._client) return { status: 'FAILED' as const };\n\n // If there's an ongoing \"refresh token\" request, await its completion\n if (ClientApi._refreshTokenTask) {\n const res = await ClientApi._refreshTokenTask;\n return res;\n }\n\n const handler = async (): Promise<{ status: RefreshStatus }> => {\n try {\n const res =\n await ClientApi._client?.admin.v1.auth['refresh-token'].get();\n if (!!res?.data && !!res.data.success && res.data.statusCode === 200) {\n return { status: 'SUCCESS' };\n }\n return { status: 'FAILED' };\n } catch (error) {\n console.error('Error refreshing token:', JSON.stringify(error));\n return { status: 'FAILED' };\n }\n };\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._refreshTokenTask = handler();\n return ClientApi._refreshTokenTask.finally(() => {\n ClientApi._refreshTokenTask = null;\n });\n }\n\n private static async _logout() {\n // Ensure client is initialized\n if (!ClientApi._client) return;\n try {\n // If there's an ongoing \"logout\" request, await its completion\n if (ClientApi._logoutTask) {\n await ClientApi._logoutTask;\n return;\n }\n\n const logout = ClientApi._client.admin.v1.auth.logout.delete();\n // Store the ongoing task, so other can know about it and await it if needed\n ClientApi._logoutTask = logout;\n await logout;\n } catch (error) {\n console.error('Error during logout:', error);\n } finally {\n ClientApi.user = null;\n ClientApi._logoutTask = null;\n ClientApi.listeners?.onUserChange?.(null);\n ClientApi.listeners?.onLogout?.();\n }\n }\n\n constructor({ baseURL, config }: Config) {\n // Initialize Treaty Client\n if (!ClientApi._client) {\n ClientApi._client = treaty<Type.AppType>(baseURL, config);\n }\n\n this._onUnauthorized = async () => {\n ClientApi.user = null;\n await ClientApi.listeners?.onUserChange?.(null);\n await ClientApi.listeners?.onUnauthorized?.();\n };\n }\n\n public async getUser() {\n await ClientApi._getUser();\n await ClientApi.listeners?.onGetMe?.(ClientApi.user);\n return ClientApi.user ?? null;\n }\n\n public getClient(): TClient | undefined {\n return ClientApi._client;\n }\n\n public async logout() {\n await ClientApi._client?.admin.v1.auth.logout.delete();\n await ClientApi.listeners?.onLogout?.();\n }\n\n public async fetchApi<TData>({\n request,\n }: {\n request: (api: TClient) => Promise<TData>;\n }) {\n // Ensure client is initialized\n if (!ClientApi._client) {\n throw new Error('Client not initialized');\n }\n\n try {\n // Await ongoing \"me\" request to ensure user state is up-to-date\n if (ClientApi._getMeTask) {\n console.log(\n 'Awaiting ongoing _getMeTask before proceeding with fetchApi'\n );\n await ClientApi._getMeTask;\n }\n\n // Await ongoing \"refresh token\" request to ensure token state is up-to-date\n if (ClientApi._refreshTokenTask) {\n console.log(\n 'Awaiting ongoing _refreshTokenTask before proceeding with fetchApi'\n );\n await ClientApi._refreshTokenTask;\n }\n\n // Await ongoing \"logout\" request to ensure user is logged out properly\n if (ClientApi._logoutTask) {\n console.log(\n 'Awaiting ongoing _logoutTask before proceeding with fetchApi'\n );\n await ClientApi._logoutTask;\n }\n\n const response = (await request(\n ClientApi._client\n )) as Treaty.TreatyResponse<Record<number, Type.TResponse<any>>>;\n\n // Check if response data exists\n if (!response.data) {\n console.error('No response data received from API request');\n return null;\n }\n\n // Check for status codes in the response data\n const _data = response.data;\n\n // CASE: User is Unauthorized\n if (_data?.statusCode === 401) {\n await this._onUnauthorized?.();\n await ClientApi.listeners?.onUnauthorized?.();\n return null;\n }\n\n // CASE: TOKEN EXPIRED - Re-fetch user data\n if (_data?.statusCode === 4001) {\n const { status } = await ClientApi._refreshToken();\n await ClientApi.listeners?.onRefreshToken?.(status);\n if (status === 'SUCCESS') {\n const response = (await request(\n ClientApi._client\n )) as Treaty.TreatyResponse<Record<number, Type.TResponse<any>>>;\n return response as TData;\n }\n if (status === 'FAILED') {\n await ClientApi._logout();\n await ClientApi.listeners?.onLogout?.();\n return null;\n }\n }\n\n return response as TData;\n } catch (error) {\n console.error('Error in fetchApi:', JSON.stringify(error));\n return {\n success: false,\n statusCode: 500,\n data: null,\n message: 'Internal Client Error',\n error: {\n statusCode: 500,\n message: 'Internal Client Error',\n },\n meta: {\n version: '1.0.0',\n timestamp: new Date().toISOString(),\n path: '',\n },\n };\n }\n }\n\n private _onUnauthorized?: () => void | Promise<void>;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customafk/lunas-api-sdk",
3
- "version": "0.0.25",
3
+ "version": "0.0.27",
4
4
  "main": "./dist/index.cjs",
5
5
  "scripts": {
6
6
  "build": "tsdown"
@@ -25,8 +25,7 @@
25
25
  "exports": {
26
26
  ".": {
27
27
  "require": "./dist/index.cjs",
28
- "import": "./dist/index.mjs",
29
- "types": "./dist/index.d.cts"
28
+ "import": "./dist/index.mjs"
30
29
  },
31
30
  "./package.json": "./package.json"
32
31
  },
@@ -1,136 +0,0 @@
1
- //#region ../app/src/types.d.ts
2
-
3
- declare enum EMediaEntityType {
4
- PRODUCT = 'product',
5
- EXTRA_PRODUCT = 'extra_product',
6
- VARIANT = 'variant',
7
- CATEGORY = 'category',
8
- BRAND = 'brand',
9
- BLOG_POST = 'blog_post',
10
- SERIES = 'series',
11
- }
12
- declare enum EMimeType {
13
- IMAGE_WEBP = 'image/webp',
14
- IMAGE_JPEG = 'image/jpeg',
15
- IMAGE_JPG = 'image/jpg',
16
- IMAGE_PNG = 'image/png',
17
- IMAGE_GIF = 'image/gif',
18
- IMAGE_AVIF = 'image/avif',
19
- IMAGE_SVG = 'image/svg+xml',
20
- }
21
- declare enum EWeightUnit {
22
- KG = 'kg',
23
- G = 'g',
24
- LB = 'lb',
25
- OZ = 'oz',
26
- }
27
- declare enum EDimensionUnit {
28
- CM = 'cm',
29
- M = 'm',
30
- INCH = 'inch',
31
- FT = 'ft',
32
- }
33
- declare enum ECountry {
34
- VIETNAM = 'Vietnam',
35
- USA = 'USA',
36
- JAPAN = 'Japan',
37
- KOREA = 'Korea',
38
- CHINA = 'China',
39
- TAIWAN = 'Taiwan',
40
- THAILAND = 'Thailand',
41
- MALAYSIA = 'Malaysia',
42
- SINGAPORE = 'Singapore',
43
- INDONESIA = 'Indonesia',
44
- }
45
- declare enum ERole {
46
- SUPER_ADMIN = 'SUPER_ADMIN',
47
- ADMIN = 'ADMIN',
48
- MODERATOR = 'MODERATOR',
49
- STAFF = 'STAFF',
50
- EDITOR = 'EDITOR',
51
- VIEWER = 'VIEWER',
52
- USER = 'USER',
53
- }
54
- declare enum EProvider {
55
- BASIC = 'BASIC',
56
- FACEBOOK = 'FACEBOOK',
57
- GOOGLE = 'GOOGLE',
58
- GITHUB = 'GITHUB',
59
- TWITTER = 'TWITTER',
60
- }
61
- declare enum EProductStatus {
62
- DRAFT = 'draft',
63
- REVIEW = 'review',
64
- PUBLISHED = 'published',
65
- CANCELLED = 'cancelled',
66
- }
67
- declare enum EProductInventoryStatus {
68
- IN_STOCK = 'in_stock',
69
- OUT_OF_STOCK = 'out_of_stock',
70
- PREORDER = 'preorder',
71
- }
72
- declare enum ECartStatus {
73
- ACTIVE = 'active',
74
- COMPLETED = 'completed',
75
- ABANDONED = 'abandoned',
76
- EXPIRED = 'expired',
77
- }
78
- declare enum ECartType {
79
- IN_STOCK = 'in_stock',
80
- ORDER = 'order',
81
- }
82
- type TResponsePagination = {
83
- page: number;
84
- limit: number;
85
- total: number;
86
- totalPages: number;
87
- hasNextPage: boolean;
88
- hasPreviousPage: boolean;
89
- };
90
- type TResponseError = {
91
- statusCode: number;
92
- message: string;
93
- reference?: string | null;
94
- fields?: {
95
- [key: string]: string[] | string;
96
- };
97
- };
98
- type TResponseMeta = {
99
- version: string;
100
- timestamp: string;
101
- path: string;
102
- pagination?: TResponsePagination;
103
- };
104
- type TResponse<T> = T extends string ? {
105
- success: true;
106
- statusCode: number;
107
- data: null;
108
- message: string;
109
- error: null;
110
- meta: TResponseMeta;
111
- } | {
112
- success: false;
113
- statusCode: number;
114
- data: null;
115
- message: string;
116
- error: TResponseError;
117
- meta: TResponseMeta;
118
- } : {
119
- success: true;
120
- statusCode: number;
121
- data: T;
122
- message: null;
123
- error: null;
124
- meta: TResponseMeta;
125
- } | {
126
- success: false;
127
- statusCode: number;
128
- data: null;
129
- message: string;
130
- error: TResponseError;
131
- meta: TResponseMeta;
132
- };
133
- type AppType = typeof app;
134
- //#endregion
135
- export { EDimensionUnit as a, EProductInventoryStatus as c, ERole as d, EWeightUnit as f, TResponseMeta as h, ECountry as i, EProductStatus as l, TResponseError as m, ECartStatus as n, EMediaEntityType as o, TResponse as p, ECartType as r, EMimeType as s, AppType as t, EProvider as u };
136
- //# sourceMappingURL=types-CbjP5yIv.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-CbjP5yIv.d.mts","names":["app","EMediaEntityType","EMimeType","EWeightUnit","EDimensionUnit","ECountry","ERole","EProvider","EProductStatus","EProductInventoryStatus","ECartStatus","ECartType","TResponsePagination","TResponseError","TResponseMeta","TResponse","T","TPayloadJwt","AppType"],"sources":["../../app/src/types.d.ts"],"sourcesContent":["import type { app } from '.';\n\nexport enum EMediaEntityType {\n PRODUCT = 'product',\n EXTRA_PRODUCT = 'extra_product',\n VARIANT = 'variant',\n CATEGORY = 'category',\n BRAND = 'brand',\n BLOG_POST = 'blog_post',\n SERIES = 'series',\n}\n\nexport enum EMimeType {\n IMAGE_WEBP = 'image/webp',\n IMAGE_JPEG = 'image/jpeg',\n IMAGE_JPG = 'image/jpg',\n IMAGE_PNG = 'image/png',\n IMAGE_GIF = 'image/gif',\n IMAGE_AVIF = 'image/avif',\n IMAGE_SVG = 'image/svg+xml',\n}\n\nexport enum EWeightUnit {\n KG = 'kg',\n G = 'g',\n LB = 'lb',\n OZ = 'oz',\n}\n\nexport enum EDimensionUnit {\n CM = 'cm',\n M = 'm',\n INCH = 'inch',\n FT = 'ft',\n}\n\nexport enum ECountry {\n VIETNAM = 'Vietnam',\n USA = 'USA',\n JAPAN = 'Japan',\n KOREA = 'Korea',\n CHINA = 'China',\n TAIWAN = 'Taiwan',\n THAILAND = 'Thailand',\n MALAYSIA = 'Malaysia',\n SINGAPORE = 'Singapore',\n INDONESIA = 'Indonesia',\n}\n\nexport enum ERole {\n SUPER_ADMIN = 'SUPER_ADMIN',\n ADMIN = 'ADMIN',\n MODERATOR = 'MODERATOR',\n STAFF = 'STAFF',\n EDITOR = 'EDITOR',\n VIEWER = 'VIEWER',\n USER = 'USER',\n}\n\nexport enum EProvider {\n BASIC = 'BASIC',\n FACEBOOK = 'FACEBOOK',\n GOOGLE = 'GOOGLE',\n GITHUB = 'GITHUB',\n TWITTER = 'TWITTER',\n}\n\nexport enum EProductStatus {\n DRAFT = 'draft',\n REVIEW = 'review',\n PUBLISHED = 'published',\n CANCELLED = 'cancelled',\n}\n\nexport enum EProductInventoryStatus {\n IN_STOCK = 'in_stock',\n OUT_OF_STOCK = 'out_of_stock',\n PREORDER = 'preorder',\n}\n\nexport enum ECartStatus {\n ACTIVE = 'active',\n COMPLETED = 'completed',\n ABANDONED = 'abandoned',\n EXPIRED = 'expired',\n}\n\nexport enum ECartType {\n IN_STOCK = 'in_stock',\n ORDER = 'order',\n}\n\nexport type TResponsePagination = {\n page: number;\n limit: number;\n total: number;\n totalPages: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n};\n\nexport type TResponseError = {\n statusCode: number;\n message: string;\n reference?: string | null;\n fields?: {\n [key: string]: string[] | string;\n };\n};\n\nexport type TResponseMeta = {\n version: string;\n timestamp: string;\n path: string;\n pagination?: TResponsePagination;\n};\n\nexport type TResponse<T> = T extends string\n ?\n | {\n success: true;\n statusCode: number;\n data: null;\n message: string;\n error: null;\n meta: TResponseMeta;\n }\n | {\n success: false;\n statusCode: number;\n data: null;\n message: string;\n error: TResponseError;\n meta: TResponseMeta;\n }\n :\n | {\n success: true;\n statusCode: number;\n data: T;\n message: null;\n error: null;\n meta: TResponseMeta;\n }\n | {\n success: false;\n statusCode: number;\n data: null;\n message: string;\n error: TResponseError;\n meta: TResponseMeta;\n };\n\nexport type TPayloadJwt = {\n uuid: string;\n role: string;\n};\n\nexport type AppType = typeof app;\n"],"mappings":";;AAYYE,aAVAD,gBAAAA;EAoBZ,OAAYE,GAAAA,SAAW;EAOvB,aAAYC,GAAAA,eAAc;EAO1B,OAAYC,GAAAA,SAAQ;EAapB,QAAYC,GAAK,UAAA;EAUjB,KAAYC,GAAAA,OAAS;EAQrB,SAAYC,GAAAA,WAAc;EAO1B,MAAYC,GAAAA,QAAAA;AAMZ;AAYYG,aAhFAV,SAAAA;EAyFZ,UAAYW,GAAAA,YAAc;EAS1B,UAAYC,GAAAA,YAAa;EAOzB,SAAYC,GAAAA,WAASC;EAAMA,SAAAA,GAAAA,WAAAA;EAQXF,SAAAA,GAAAA,WAAAA;EAOCD,UAAAA,GAAAA,YAAAA;EACDC,SAAAA,GAAAA,eAAAA;;AAgBCD,aA/HLV,WAAAA;EAgIIW,EAAAA,GAAAA,IAAAA;EAAa,CAAA,GAAA,GAAA;EAQ7B,EAAYI,GAAAA,IAAAA;;;aAjIAd,cAAAA;;;;;;aAOAC,QAAAA;;;;;;;;;;;;aAaAC,KAAAA;;;;;;;;;aAUAC,SAAAA;;;;;;;aAQAC,cAAAA;;;;;;aAOAC,uBAAAA;;;;;aAMAC,WAAAA;;;;;;aAOAC,SAAAA;;;;KAKAC,mBAAAA;;;;;;;;KASAC,cAAAA;;;;;;;;KASAC,aAAAA;;;;eAIGF;;KAGHG,eAAeC;;;;;;QAQXF;;;;;;SAOCD;QACDC;;;;QAMAE;;;QAGAF;;;;;;SAOCD;QACDC;;KAQJI,OAAAA,UAAiBlB"}