@choiceform/shared-auth 0.1.14 → 0.1.16

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.
Files changed (95) hide show
  1. package/README.md +106 -450
  2. package/dist/api/auth-api.d.ts +28 -0
  3. package/dist/api/auth-api.d.ts.map +1 -0
  4. package/dist/api/auth-api.js +133 -0
  5. package/dist/api/client.d.ts +34 -0
  6. package/dist/api/client.d.ts.map +1 -0
  7. package/dist/api/client.js +104 -0
  8. package/dist/api/index.d.ts +12 -0
  9. package/dist/api/index.d.ts.map +1 -0
  10. package/dist/api/index.js +7 -0
  11. package/dist/api/organization-api.d.ts +96 -0
  12. package/dist/api/organization-api.d.ts.map +1 -0
  13. package/dist/api/organization-api.js +228 -0
  14. package/dist/api/team-api.d.ts +57 -0
  15. package/dist/api/team-api.d.ts.map +1 -0
  16. package/dist/api/team-api.js +118 -0
  17. package/dist/config.d.ts +4 -57
  18. package/dist/config.d.ts.map +1 -1
  19. package/dist/config.js +4 -6
  20. package/dist/core.d.ts +114 -72
  21. package/dist/core.d.ts.map +1 -1
  22. package/dist/core.js +35 -17
  23. package/dist/hooks/use-auth-init.d.ts +10 -0
  24. package/dist/hooks/use-auth-init.d.ts.map +1 -1
  25. package/dist/hooks/use-auth-init.js +59 -31
  26. package/dist/index.d.ts +12 -15
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +26 -13
  29. package/dist/init.d.ts +133 -92
  30. package/dist/init.d.ts.map +1 -1
  31. package/dist/init.js +12 -14
  32. package/dist/lib/auth-client.d.ts +49 -54
  33. package/dist/lib/auth-client.d.ts.map +1 -1
  34. package/dist/lib/auth-client.js +10 -16
  35. package/dist/services/companion-team.d.ts +16 -0
  36. package/dist/services/companion-team.d.ts.map +1 -0
  37. package/dist/services/companion-team.js +73 -0
  38. package/dist/services/index.d.ts +5 -0
  39. package/dist/services/index.d.ts.map +1 -0
  40. package/dist/services/index.js +4 -0
  41. package/dist/store/actions.d.ts +45 -33
  42. package/dist/store/actions.d.ts.map +1 -1
  43. package/dist/store/actions.js +135 -106
  44. package/dist/store/index.d.ts +8 -0
  45. package/dist/store/index.d.ts.map +1 -0
  46. package/dist/store/index.js +7 -0
  47. package/dist/store/state.d.ts +10 -7
  48. package/dist/store/state.d.ts.map +1 -1
  49. package/dist/store/state.js +31 -23
  50. package/dist/store/utils.d.ts +22 -71
  51. package/dist/store/utils.d.ts.map +1 -1
  52. package/dist/store/utils.js +28 -146
  53. package/dist/types/auth.d.ts +107 -0
  54. package/dist/types/auth.d.ts.map +1 -0
  55. package/dist/types/auth.js +4 -0
  56. package/dist/types/index.d.ts +8 -0
  57. package/dist/types/index.d.ts.map +1 -0
  58. package/dist/types/index.js +4 -0
  59. package/dist/types/organization.d.ts +111 -0
  60. package/dist/types/organization.d.ts.map +1 -0
  61. package/dist/types/organization.js +4 -0
  62. package/dist/types/team.d.ts +52 -0
  63. package/dist/types/team.d.ts.map +1 -0
  64. package/dist/types/team.js +4 -0
  65. package/dist/types/user.d.ts +44 -0
  66. package/dist/types/user.d.ts.map +1 -0
  67. package/dist/types/user.js +4 -0
  68. package/dist/utils/date.d.ts +10 -0
  69. package/dist/utils/date.d.ts.map +1 -0
  70. package/dist/utils/date.js +13 -0
  71. package/dist/utils/env.d.ts +20 -0
  72. package/dist/utils/env.d.ts.map +1 -0
  73. package/dist/utils/env.js +23 -0
  74. package/dist/utils/index.d.ts +7 -0
  75. package/dist/utils/index.d.ts.map +1 -0
  76. package/dist/utils/index.js +6 -0
  77. package/dist/utils/user-mapper.d.ts +21 -0
  78. package/dist/utils/user-mapper.d.ts.map +1 -0
  79. package/dist/utils/user-mapper.js +55 -0
  80. package/package.json +3 -4
  81. package/dist/components/auth-sync.d.ts +0 -25
  82. package/dist/components/auth-sync.d.ts.map +0 -1
  83. package/dist/components/auth-sync.js +0 -346
  84. package/dist/components/protected-route.d.ts +0 -18
  85. package/dist/components/protected-route.d.ts.map +0 -1
  86. package/dist/components/protected-route.js +0 -34
  87. package/dist/components/sign-in-page.d.ts +0 -21
  88. package/dist/components/sign-in-page.d.ts.map +0 -1
  89. package/dist/components/sign-in-page.js +0 -31
  90. package/dist/core/init-auth-sync.d.ts +0 -7
  91. package/dist/core/init-auth-sync.d.ts.map +0 -1
  92. package/dist/core/init-auth-sync.js +0 -34
  93. package/dist/types.d.ts +0 -87
  94. package/dist/types.d.ts.map +0 -1
  95. package/dist/types.js +0 -4
@@ -6,6 +6,7 @@ import type { AuthConfig } from "../config";
6
6
  * - 使用 Bearer Token 认证模式
7
7
  * - Token 从 localStorage 中动态读取
8
8
  * - 支持服务器端 Bearer Plugin 的 session 管理
9
+ * - basePath 设置为 /v1/auth(与后端 better-auth 配置一致)
9
10
  *
10
11
  * @param config - 认证配置对象
11
12
  * @returns Better Auth 客户端实例
@@ -13,7 +14,7 @@ import type { AuthConfig } from "../config";
13
14
  export declare function createAuthClientFromConfig(config: AuthConfig): {
14
15
  signIn: {
15
16
  social: <FetchOptions extends import("better-auth").ClientFetchOption<Partial<{
16
- provider: unknown;
17
+ provider: (string & {}) | "github" | "apple" | "atlassian" | "cognito" | "discord" | "facebook" | "figma" | "microsoft" | "google" | "huggingface" | "slack" | "spotify" | "twitch" | "twitter" | "dropbox" | "kick" | "linear" | "linkedin" | "gitlab" | "tiktok" | "reddit" | "roblox" | "salesforce" | "vk" | "zoom" | "notion" | "kakao" | "naver" | "line" | "paybin" | "paypal" | "polar" | "vercel";
17
18
  callbackURL?: string | undefined;
18
19
  newUserCallbackURL?: string | undefined;
19
20
  errorCallbackURL?: string | undefined;
@@ -29,8 +30,8 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
29
30
  requestSignUp?: boolean | undefined;
30
31
  loginHint?: string | undefined;
31
32
  additionalData?: Record<string, any> | undefined;
32
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
33
- provider: unknown;
33
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
34
+ provider: (string & {}) | "github" | "apple" | "atlassian" | "cognito" | "discord" | "facebook" | "figma" | "microsoft" | "google" | "huggingface" | "slack" | "spotify" | "twitch" | "twitter" | "dropbox" | "kick" | "linear" | "linkedin" | "gitlab" | "tiktok" | "reddit" | "roblox" | "salesforce" | "vk" | "zoom" | "notion" | "kakao" | "naver" | "line" | "paybin" | "paypal" | "polar" | "vercel";
34
35
  callbackURL?: string | undefined;
35
36
  newUserCallbackURL?: string | undefined;
36
37
  errorCallbackURL?: string | undefined;
@@ -49,28 +50,28 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
49
50
  } & {
50
51
  fetchOptions?: FetchOptions | undefined;
51
52
  }>, data_1?: FetchOptions | undefined) => Promise<import("@better-fetch/fetch").BetterFetchResponse<NonNullable<{
53
+ redirect: boolean;
54
+ url: string;
55
+ } | {
52
56
  redirect: boolean;
53
57
  token: string;
54
58
  url: undefined;
55
59
  user: {
56
60
  id: string;
57
- email: string;
58
- name: string;
59
- image: string | null | undefined;
60
- emailVerified: boolean;
61
61
  createdAt: Date;
62
62
  updatedAt: Date;
63
+ email: string;
64
+ emailVerified: boolean;
65
+ name: string;
66
+ image?: string | null | undefined | undefined;
63
67
  };
64
- } | {
65
- url: string;
66
- redirect: boolean;
67
68
  }>, {
68
69
  code?: string | undefined;
69
70
  message?: string | undefined;
70
71
  }, FetchOptions["throw"] extends true ? true : false>>;
71
72
  };
72
73
  } & {
73
- signOut: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/client/plugins").Prettify<{
74
+ signOut: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/react").Prettify<{
74
75
  query?: Record<string, any> | undefined;
75
76
  fetchOptions?: FetchOptions | undefined;
76
77
  }> | undefined, data_1?: FetchOptions | undefined) => Promise<import("@better-fetch/fetch").BetterFetchResponse<{
@@ -88,7 +89,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
88
89
  image?: string | undefined;
89
90
  callbackURL?: string | undefined;
90
91
  rememberMe?: boolean | undefined;
91
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
92
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
92
93
  email: string;
93
94
  name: string;
94
95
  password: string;
@@ -99,23 +100,23 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
99
100
  token: null;
100
101
  user: {
101
102
  id: string;
102
- email: string;
103
- name: string;
104
- image: string | null | undefined;
105
- emailVerified: boolean;
106
103
  createdAt: Date;
107
104
  updatedAt: Date;
105
+ email: string;
106
+ emailVerified: boolean;
107
+ name: string;
108
+ image?: string | null | undefined | undefined;
108
109
  };
109
110
  } | {
110
111
  token: string;
111
112
  user: {
112
113
  id: string;
113
- email: string;
114
- name: string;
115
- image: string | null | undefined;
116
- emailVerified: boolean;
117
114
  createdAt: Date;
118
115
  updatedAt: Date;
116
+ email: string;
117
+ emailVerified: boolean;
118
+ name: string;
119
+ image?: string | null | undefined | undefined;
119
120
  };
120
121
  }>, {
121
122
  code?: string | undefined;
@@ -129,7 +130,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
129
130
  password: string;
130
131
  callbackURL?: string | undefined;
131
132
  rememberMe?: boolean | undefined;
132
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
133
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
133
134
  email: string;
134
135
  password: string;
135
136
  callbackURL?: string | undefined;
@@ -139,15 +140,15 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
139
140
  }>, data_1?: FetchOptions | undefined) => Promise<import("@better-fetch/fetch").BetterFetchResponse<{
140
141
  redirect: boolean;
141
142
  token: string;
142
- url: string | undefined;
143
+ url?: string | undefined;
143
144
  user: {
144
145
  id: string;
145
- email: string;
146
- name: string;
147
- image: string | null | undefined;
148
- emailVerified: boolean;
149
146
  createdAt: Date;
150
147
  updatedAt: Date;
148
+ email: string;
149
+ emailVerified: boolean;
150
+ name: string;
151
+ image?: string | null | undefined | undefined;
151
152
  };
152
153
  }, {
153
154
  code?: string | undefined;
@@ -160,7 +161,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
160
161
  token?: string | undefined;
161
162
  }> & Record<string, any>, Partial<{
162
163
  token?: string | undefined;
163
- }> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
164
+ }> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
164
165
  newPassword: string;
165
166
  token?: string | undefined;
166
167
  } & {
@@ -175,7 +176,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
175
176
  verifyEmail: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<{
176
177
  token: string;
177
178
  callbackURL?: string | undefined;
178
- }> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
179
+ }> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
179
180
  query: {
180
181
  token: string;
181
182
  callbackURL?: string | undefined;
@@ -191,7 +192,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
191
192
  sendVerificationEmail: <FetchOptions extends import("better-auth").ClientFetchOption<Partial<{
192
193
  email: string;
193
194
  callbackURL?: string | undefined;
194
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
195
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
195
196
  email: string;
196
197
  callbackURL?: string | undefined;
197
198
  } & {
@@ -206,7 +207,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
206
207
  changeEmail: <FetchOptions extends import("better-auth").ClientFetchOption<Partial<{
207
208
  newEmail: string;
208
209
  callbackURL?: string | undefined;
209
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
210
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
210
211
  newEmail: string;
211
212
  callbackURL?: string | undefined;
212
213
  } & {
@@ -222,7 +223,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
222
223
  newPassword: string;
223
224
  currentPassword: string;
224
225
  revokeOtherSessions?: boolean | undefined;
225
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
226
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
226
227
  newPassword: string;
227
228
  currentPassword: string;
228
229
  revokeOtherSessions?: boolean | undefined;
@@ -247,7 +248,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
247
248
  updateUser: <FetchOptions extends import("better-auth").ClientFetchOption<Partial<Partial<{}> & {
248
249
  name?: string | undefined;
249
250
  image?: string | undefined;
250
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/client/plugins").Prettify<{
251
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/react").Prettify<{
251
252
  image?: (string | null) | undefined;
252
253
  name?: string | undefined;
253
254
  fetchOptions?: FetchOptions | undefined;
@@ -262,7 +263,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
262
263
  callbackURL?: string | undefined;
263
264
  password?: string | undefined;
264
265
  token?: string | undefined;
265
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/client/plugins").Prettify<{
266
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/react").Prettify<{
266
267
  callbackURL?: string | undefined;
267
268
  password?: string | undefined;
268
269
  token?: string | undefined;
@@ -279,7 +280,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
279
280
  requestPasswordReset: <FetchOptions extends import("better-auth").ClientFetchOption<Partial<{
280
281
  email: string;
281
282
  redirectTo?: string | undefined;
282
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
283
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
283
284
  email: string;
284
285
  redirectTo?: string | undefined;
285
286
  } & {
@@ -297,7 +298,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
297
298
  callbackURL: string;
298
299
  }> & Record<string, any>, {
299
300
  token: string;
300
- }>>(data_0: import("better-auth/client/plugins").Prettify<{
301
+ }>>(data_0: import("better-auth/react").Prettify<{
301
302
  query: {
302
303
  callbackURL: string;
303
304
  };
@@ -308,10 +309,10 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
308
309
  }, FetchOptions["throw"] extends true ? true : false>>;
309
310
  };
310
311
  } & {
311
- listSessions: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/client/plugins").Prettify<{
312
+ listSessions: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/react").Prettify<{
312
313
  query?: Record<string, any> | undefined;
313
314
  fetchOptions?: FetchOptions | undefined;
314
- }> | undefined, data_1?: FetchOptions | undefined) => Promise<import("@better-fetch/fetch").BetterFetchResponse<import("better-auth/client/plugins").Prettify<{
315
+ }> | undefined, data_1?: FetchOptions | undefined) => Promise<import("@better-fetch/fetch").BetterFetchResponse<import("better-auth/react").Prettify<{
315
316
  id: string;
316
317
  createdAt: Date;
317
318
  updatedAt: Date;
@@ -327,7 +328,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
327
328
  } & {
328
329
  revokeSession: <FetchOptions extends import("better-auth").ClientFetchOption<Partial<{
329
330
  token: string;
330
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
331
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
331
332
  token: string;
332
333
  } & {
333
334
  fetchOptions?: FetchOptions | undefined;
@@ -338,7 +339,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
338
339
  message?: string | undefined;
339
340
  }, FetchOptions["throw"] extends true ? true : false>>;
340
341
  } & {
341
- revokeSessions: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/client/plugins").Prettify<{
342
+ revokeSessions: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/react").Prettify<{
342
343
  query?: Record<string, any> | undefined;
343
344
  fetchOptions?: FetchOptions | undefined;
344
345
  }> | undefined, data_1?: FetchOptions | undefined) => Promise<import("@better-fetch/fetch").BetterFetchResponse<{
@@ -348,7 +349,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
348
349
  message?: string | undefined;
349
350
  }, FetchOptions["throw"] extends true ? true : false>>;
350
351
  } & {
351
- revokeOtherSessions: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/client/plugins").Prettify<{
352
+ revokeOtherSessions: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/react").Prettify<{
352
353
  query?: Record<string, any> | undefined;
353
354
  fetchOptions?: FetchOptions | undefined;
354
355
  }> | undefined, data_1?: FetchOptions | undefined) => Promise<import("@better-fetch/fetch").BetterFetchResponse<{
@@ -373,7 +374,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
373
374
  errorCallbackURL?: string | undefined;
374
375
  disableRedirect?: boolean | undefined;
375
376
  additionalData?: Record<string, any> | undefined;
376
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
377
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
377
378
  provider: unknown;
378
379
  callbackURL?: string | undefined;
379
380
  idToken?: {
@@ -398,7 +399,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
398
399
  message?: string | undefined;
399
400
  }, FetchOptions["throw"] extends true ? true : false>>;
400
401
  } & {
401
- listAccounts: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/client/plugins").Prettify<{
402
+ listAccounts: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/react").Prettify<{
402
403
  query?: Record<string, any> | undefined;
403
404
  fetchOptions?: FetchOptions | undefined;
404
405
  }> | undefined, data_1?: FetchOptions | undefined) => Promise<import("@better-fetch/fetch").BetterFetchResponse<{
@@ -418,7 +419,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
418
419
  callback: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<{
419
420
  token: string;
420
421
  callbackURL?: string | undefined;
421
- }> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
422
+ }> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
422
423
  query: {
423
424
  token: string;
424
425
  callbackURL?: string | undefined;
@@ -436,7 +437,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
436
437
  unlinkAccount: <FetchOptions extends import("better-auth").ClientFetchOption<Partial<{
437
438
  providerId: string;
438
439
  accountId?: string | undefined;
439
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
440
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
440
441
  providerId: string;
441
442
  accountId?: string | undefined;
442
443
  } & {
@@ -452,7 +453,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
452
453
  providerId: string;
453
454
  accountId?: string | undefined;
454
455
  userId?: string | undefined;
455
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
456
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
456
457
  providerId: string;
457
458
  accountId?: string | undefined;
458
459
  userId?: string | undefined;
@@ -476,7 +477,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
476
477
  providerId: string;
477
478
  accountId?: string | undefined;
478
479
  userId?: string | undefined;
479
- }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/client/plugins").Prettify<{
480
+ }> & Record<string, any>, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0: import("better-auth/react").Prettify<{
480
481
  providerId: string;
481
482
  accountId?: string | undefined;
482
483
  userId?: string | undefined;
@@ -494,7 +495,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
494
495
  } & {
495
496
  accountInfo: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<{
496
497
  accountId?: string | undefined;
497
- }> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/client/plugins").Prettify<{
498
+ }> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/react").Prettify<{
498
499
  query?: {
499
500
  accountId?: string | undefined;
500
501
  } | undefined;
@@ -510,7 +511,7 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
510
511
  getSession: <FetchOptions extends import("better-auth").ClientFetchOption<never, Partial<{
511
512
  disableCookieCache?: unknown;
512
513
  disableRefresh?: unknown;
513
- }> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/client/plugins").Prettify<{
514
+ }> & Record<string, any>, Record<string, any> | undefined>>(data_0?: import("better-auth/react").Prettify<{
514
515
  query?: {
515
516
  disableCookieCache?: unknown;
516
517
  disableRefresh?: unknown;
@@ -600,12 +601,6 @@ export declare function createAuthClientFromConfig(config: AuthConfig): {
600
601
  hooks: {
601
602
  onSuccess(context: import("@better-fetch/fetch").SuccessContext<any>): void;
602
603
  };
603
- } | {
604
- id: string;
605
- name: string;
606
- hooks: {
607
- onRequest<T extends Record<string, any>>(context: import("@better-fetch/fetch").RequestContext<T>): void;
608
- };
609
604
  } | {
610
605
  id: string;
611
606
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../src/lib/auth-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA6Bo0D,CAAC;iBAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAA8hD,CAAC;;eAA2D,CAAC;;;;;gBAA8U,CAAC;mBAA8C,CAAC;iBAAmC,CAAC;iBAAmC,CAAC;YAA+B,CAAC;gBAAuC,CAAC;gBAA2C,CAAC;sBAAwC,CAAC;cAAwC,CAAC;cAA8C,CAAC;eAA+B,CAAC;mBAA0G,CAAC;yBAAuB,CAAC;;eAAyC,CAAC;;;aAA2G,CAAC;YAA+B,CAAC;;;;;;;;;;;;YAA+e,CAAC;aAAgB,CAAC;cAAiB,CAAC;cAAiB,CAAC;;aAA8F,CAAC;oBAAkE,CAAC;cAAgC,CAAC;mBAAmG,CAAC;yBAA2E,CAAC;qBAAwC,CAAC;;;uBAAkF,CAAC;+GAAuL,CAAC;;;;;;EAF5sL"}
1
+ {"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../src/lib/auth-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAsB8xE,CAAC;iBAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAA42C,CAAC;;eAA2D,CAAC;;;;;gBAA8U,CAAC;mBAA8C,CAAC;iBAAmC,CAAC;iBAAmC,CAAC;YAA+B,CAAC;gBAAuC,CAAC;gBAA2C,CAAC;sBAAwC,CAAC;cAAwC,CAAC;cAA8C,CAAC;eAA+B,CAAC;mBAA0G,CAAC;yBAAuB,CAAC;;eAAyC,CAAC;;;aAA2G,CAAC;YAA+B,CAAC;;;;;;;;;;;;YAA+e,CAAC;aAAgB,CAAC;cAAiB,CAAC;cAAiB,CAAC;;aAA8F,CAAC;oBAAkE,CAAC;cAAgC,CAAC;mBAAmG,CAAC;yBAA2E,CAAC;qBAAwC,CAAC;;;uBAAkF,CAAC;+GAAuL,CAAC;;;;;;EAFp/L"}
@@ -6,6 +6,7 @@ import { createAuthClient } from "better-auth/react";
6
6
  * - 使用 Bearer Token 认证模式
7
7
  * - Token 从 localStorage 中动态读取
8
8
  * - 支持服务器端 Bearer Plugin 的 session 管理
9
+ * - basePath 设置为 /v1/auth(与后端 better-auth 配置一致)
9
10
  *
10
11
  * @param config - 认证配置对象
11
12
  * @returns Better Auth 客户端实例
@@ -13,27 +14,20 @@ import { createAuthClient } from "better-auth/react";
13
14
  export function createAuthClientFromConfig(config) {
14
15
  const { baseURL, plugins = [], tokenStorageKey = "auth-token" } = config;
15
16
  return createAuthClient({
16
- baseURL: `${baseURL}/v1/auth`,
17
+ baseURL,
18
+ basePath: "/v1/auth",
17
19
  plugins,
18
20
  fetchOptions: {
19
21
  auth: {
20
22
  type: "Bearer",
21
23
  token: () => {
22
- // localStorage 获取存储的 bearer token
23
- // SSR 环境下 localStorage 不存在,返回空字符串
24
- if (typeof window === "undefined" || typeof localStorage === "undefined") {
25
- return "";
24
+ if (typeof window === "undefined") {
25
+ return undefined;
26
26
  }
27
- try {
28
- const token = localStorage.getItem(tokenStorageKey);
29
- return token || "";
30
- }
31
- catch {
32
- // localStorage 访问失败(如隐私模式),返回空字符串
33
- return "";
34
- }
35
- }
36
- }
37
- }
27
+ return localStorage.getItem(tokenStorageKey) ?? undefined;
28
+ },
29
+ },
30
+ credentials: "include",
31
+ },
38
32
  });
39
33
  }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Companion Team 服务
3
+ *
4
+ * 在用户登录成功后自动设置组织和团队上下文
5
+ */
6
+ import type { AuthInstance } from "../core";
7
+ import type { CompanionTeamOptions } from "../types";
8
+ /**
9
+ * 设置 Companion Team
10
+ *
11
+ * @param auth - Auth 实例
12
+ * @param token - 认证 token
13
+ * @param options - 选项
14
+ */
15
+ export declare function setupCompanionTeam(auth: AuthInstance, token: string, options?: CompanionTeamOptions): Promise<void>;
16
+ //# sourceMappingURL=companion-team.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"companion-team.d.ts","sourceRoot":"","sources":["../../src/services/companion-team.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAIpD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CAwDf"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Companion Team 服务
3
+ *
4
+ * 在用户登录成功后自动设置组织和团队上下文
5
+ */
6
+ import { createAuthApi } from "../api";
7
+ import { getAuthBaseUrl } from "../utils";
8
+ /**
9
+ * 设置 Companion Team
10
+ *
11
+ * @param auth - Auth 实例
12
+ * @param token - 认证 token
13
+ * @param options - 选项
14
+ */
15
+ export async function setupCompanionTeam(auth, token, options = {}) {
16
+ const { isNewUser, onComplete, onError } = options;
17
+ try {
18
+ if (!token?.trim())
19
+ return;
20
+ const baseURL = getAuthBaseUrl();
21
+ const authApi = createAuthApi(auth.apiClient, baseURL);
22
+ let session = await authApi.getSessionWithToken(token);
23
+ // 新用户或没有 inherent 字段时需要 onboard
24
+ const needsOnboard = isNewUser ||
25
+ (!session?.inherentOrganizationId && !session?.inherentTeamId);
26
+ if (needsOnboard) {
27
+ try {
28
+ await authApi.onboard(token);
29
+ session = await authApi.getSessionWithToken(token);
30
+ }
31
+ catch {
32
+ // onboard 失败不阻塞流程
33
+ }
34
+ }
35
+ if (!session)
36
+ return;
37
+ // 已有活动组织和团队,只需更新 store
38
+ if (session.activeOrganizationId && session.activeTeamId) {
39
+ updateAuthStore(auth, session);
40
+ onComplete?.();
41
+ return;
42
+ }
43
+ // 设置活动组织
44
+ if (!session.activeOrganizationId && session.inherentOrganizationId) {
45
+ await authApi.setActiveOrganization({ organizationId: session.inherentOrganizationId }, token);
46
+ }
47
+ // 设置活动团队
48
+ if (!session.activeTeamId && session.inherentTeamId) {
49
+ await authApi.setActiveTeam({ teamId: session.inherentTeamId }, token);
50
+ }
51
+ // 刷新并更新 store
52
+ const updated = await authApi.getSessionWithToken(token);
53
+ if (updated) {
54
+ updateAuthStore(auth, updated);
55
+ }
56
+ onComplete?.();
57
+ }
58
+ catch (error) {
59
+ onError?.(error instanceof Error ? error : new Error(String(error)));
60
+ }
61
+ }
62
+ function updateAuthStore(auth, session) {
63
+ const user = auth.authStore.user.get();
64
+ if (user) {
65
+ auth.authStore.user.set({
66
+ ...user,
67
+ activeOrganizationId: session.activeOrganizationId,
68
+ activeTeamId: session.activeTeamId,
69
+ inherentOrganizationId: session.inherentOrganizationId,
70
+ inherentTeamId: session.inherentTeamId,
71
+ });
72
+ }
73
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 服务导出
3
+ */
4
+ export { setupCompanionTeam } from "./companion-team";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * 服务导出
3
+ */
4
+ export { setupCompanionTeam } from "./companion-team";
@@ -1,41 +1,23 @@
1
+ /**
2
+ * 认证 Actions
3
+ */
1
4
  import type { Observable } from "@legendapp/state";
2
- import type { AuthState, SessionUser } from "../types";
3
- import type { AuthConfig } from "../config";
4
- import type { TokenStorage } from "./state";
5
+ import type { AuthClientMethods, AuthConfig, AuthState, SessionUser } from "../types";
6
+ import type { TokenStorage } from "../api";
5
7
  /**
6
- * 创建认证 actions
8
+ * 创建认证 Actions
7
9
  */
8
- export declare function createAuthActions(authStore: Observable<AuthState>, tokenStorage: TokenStorage, config: AuthConfig, authClient: {
9
- signIn: {
10
- social: (options: {
11
- callbackURL: string;
12
- provider: string;
13
- }) => Promise<unknown>;
14
- };
15
- signOut: () => Promise<unknown>;
16
- }): {
10
+ export declare function createAuthActions(authStore: Observable<AuthState>, tokenStorage: TokenStorage, config: AuthConfig, authClient: AuthClientMethods): {
17
11
  /**
18
12
  * 初始化认证状态
19
13
  */
20
14
  initialize(user: SessionUser | null, isLoaded: boolean): Promise<void>;
21
15
  /**
22
16
  * 使用 Bearer Token 获取 session
23
- *
24
- * 流程:
25
- * 1. 保存 token 到 localStorage
26
- * 2. 使用 Bearer Token 请求 session endpoint
27
- * 3. 解析响应数据并提取用户信息
28
- * 4. 更新 authStore 状态
29
- *
30
- * @param token - Bearer Token
31
17
  */
32
18
  fetchSessionWithToken(token: string): Promise<void>;
33
19
  /**
34
- * 处理未授权错误(401 或其他认证失败)
35
- * 清理所有认证状态和本地存储
36
- *
37
- * 注意:如果启用了 skipTokenCleanupOnError,token 不会被清除
38
- * 这对于开发环境很有用,避免因网络波动等问题频繁登出
20
+ * 处理未授权
39
21
  */
40
22
  handleUnauthorized(): void;
41
23
  /**
@@ -47,17 +29,47 @@ export declare function createAuthActions(authStore: Observable<AuthState>, toke
47
29
  */
48
30
  setError(error: string | null): void;
49
31
  /**
50
- * 登录 - 使用 OAuth(默认 GitHub)
32
+ * OAuth 登录
51
33
  *
52
- * @param provider OAuth 提供商,默认为 'github'
53
- * @param redirectTo 登录成功后的重定向地址(完整 URL 或相对路径)
54
- * 如果未提供,将使用 defaultRedirectAfterLogin 配置
34
+ * 直接调用 better-auth signIn.social,传入完整的回调 URL
35
+ *
36
+ * @param provider - OAuth 提供商(如 github)
37
+ * @param callbackURL - 登录成功后的完整回调 URL
38
+ * @param newUserCallbackURL - 新用户的回调 URL(可选)
39
+ * @param errorCallbackURL - 登录失败后的完整回调 URL(可选)
55
40
  */
56
- signIn(provider?: string, redirectTo?: string): Promise<void>;
41
+ signIn(provider: string, callbackURL: string, newUserCallbackURL?: string, errorCallbackURL?: string): Promise<void>;
57
42
  /**
58
- * 登出
43
+ * Magic Link 登录
59
44
  *
60
- * @param redirectTo 登出后的重定向地址(可选),如果不提供则不执行自动跳转
45
+ * 发送 Magic Link 到用户邮箱
46
+ *
47
+ * @param email - 用户邮箱
48
+ * @param callbackURL - 登录成功后的完整回调 URL
49
+ * @param name - 用户名称(可选,用于新用户)
50
+ * @param newUserCallbackURL - 新用户的回调 URL(可选)
51
+ * @returns 是否发送成功
52
+ */
53
+ signInWithMagicLink(email: string, callbackURL: string, name?: string, newUserCallbackURL?: string): Promise<boolean>;
54
+ /**
55
+ * Email/Password 登录
56
+ *
57
+ * @param email - 邮箱
58
+ * @param password - 密码
59
+ * @returns 是否登录成功
60
+ */
61
+ signInWithEmail(email: string, password: string): Promise<boolean>;
62
+ /**
63
+ * Email/Password 注册
64
+ *
65
+ * @param email - 邮箱
66
+ * @param password - 密码
67
+ * @param name - 用户名
68
+ * @returns 是否注册成功
69
+ */
70
+ signUpWithEmail(email: string, password: string, name: string): Promise<boolean>;
71
+ /**
72
+ * 登出
61
73
  */
62
74
  signOut(redirectTo?: string): Promise<void>;
63
75
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/store/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAgE3C;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,EAChC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE;IACV,MAAM,EAAE;QACN,MAAM,EAAE,CAAC,OAAO,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KACjF,CAAA;IACD,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CAChC;IAeC;;OAEG;qBACoB,WAAW,GAAG,IAAI,YAAY,OAAO;IAe5D;;;;;;;;;;OAUG;iCACgC,MAAM;IAuDzC;;;;;;OAMG;;IAcH;;OAEG;wBACiB,OAAO;IAI3B;;OAEG;oBACa,MAAM,GAAG,IAAI;IAI7B;;;;;;OAMG;sBACoB,MAAM,eAA0B,MAAM;IAqC7D;;;;OAIG;yBACwB,MAAM;IAiCjC;;OAEG;qBACc,WAAW,GAAG,IAAI;IAUnC;;OAEG;eACQ,WAAW,GAAG,IAAI;EAIhC;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/store/actions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAG1C;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,EAChC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,iBAAiB;IAS3B;;OAEG;qBACoB,WAAW,GAAG,IAAI,YAAY,OAAO;IAe5D;;OAEG;iCACgC,MAAM;IAgDzC;;OAEG;;IAcH;;OAEG;wBACiB,OAAO;IAI3B;;OAEG;oBACa,MAAM,GAAG,IAAI;IAI7B;;;;;;;;;OASG;qBACoB,MAAM,eAAe,MAAM,uBAAuB,MAAM,qBAAqB,MAAM;IAsB1G;;;;;;;;;;OAUG;+BAEM,MAAM,eACA,MAAM,SACZ,MAAM,uBACQ,MAAM,GAC1B,OAAO,CAAC,OAAO,CAAC;IA+BnB;;;;;;OAMG;2BAC0B,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuCxE;;;;;;;OAOG;2BAEM,MAAM,YACH,MAAM,QACV,MAAM,GACX,OAAO,CAAC,OAAO,CAAC;IAuCnB;;OAEG;yBACwB,MAAM;IA6BjC;;OAEG;qBACc,WAAW,GAAG,IAAI;IAUnC;;OAEG;eACQ,WAAW,GAAG,IAAI;EAIhC;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA"}