enterpriseAuthClient.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import type { EnterpriseAuthRoutes } from '@d8d/server';
  2. import { createRpcClient } from '@d8d/mini-shared-ui-components';
  3. export class EnterpriseAuthClientManager {
  4. private static instance: EnterpriseAuthClientManager;
  5. private client: ReturnType<typeof createRpcClient<typeof EnterpriseAuthRoutes>> | null = null;
  6. private constructor() {}
  7. public static getInstance(): EnterpriseAuthClientManager {
  8. if (!EnterpriseAuthClientManager.instance) {
  9. EnterpriseAuthClientManager.instance = new EnterpriseAuthClientManager();
  10. }
  11. return EnterpriseAuthClientManager.instance;
  12. }
  13. // 初始化客户端
  14. public init(baseUrl: string = '/'): ReturnType<typeof createRpcClient<typeof EnterpriseAuthRoutes>> {
  15. return this.client = createRpcClient<typeof EnterpriseAuthRoutes>({ apiBaseUrl: baseUrl });
  16. }
  17. // 获取客户端实例
  18. public get(): ReturnType<typeof createRpcClient<typeof EnterpriseAuthRoutes>> {
  19. if (!this.client) {
  20. return this.init()
  21. }
  22. return this.client;
  23. }
  24. // 重置客户端(用于测试或重新初始化)
  25. public reset(): void {
  26. this.client = null;
  27. }
  28. }
  29. // 导出单例实例
  30. const enterpriseAuthClientManager = EnterpriseAuthClientManager.getInstance();
  31. // 导出默认客户端实例(延迟初始化)
  32. export const enterpriseAuthClient = enterpriseAuthClientManager.get()
  33. export {
  34. enterpriseAuthClientManager
  35. }