@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.
- package/README.md +106 -450
- package/dist/api/auth-api.d.ts +28 -0
- package/dist/api/auth-api.d.ts.map +1 -0
- package/dist/api/auth-api.js +133 -0
- package/dist/api/client.d.ts +34 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +104 -0
- package/dist/api/index.d.ts +12 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +7 -0
- package/dist/api/organization-api.d.ts +96 -0
- package/dist/api/organization-api.d.ts.map +1 -0
- package/dist/api/organization-api.js +228 -0
- package/dist/api/team-api.d.ts +57 -0
- package/dist/api/team-api.d.ts.map +1 -0
- package/dist/api/team-api.js +118 -0
- package/dist/config.d.ts +4 -57
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -6
- package/dist/core.d.ts +114 -72
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +35 -17
- package/dist/hooks/use-auth-init.d.ts +10 -0
- package/dist/hooks/use-auth-init.d.ts.map +1 -1
- package/dist/hooks/use-auth-init.js +59 -31
- package/dist/index.d.ts +12 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -13
- package/dist/init.d.ts +133 -92
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +12 -14
- package/dist/lib/auth-client.d.ts +49 -54
- package/dist/lib/auth-client.d.ts.map +1 -1
- package/dist/lib/auth-client.js +10 -16
- package/dist/services/companion-team.d.ts +16 -0
- package/dist/services/companion-team.d.ts.map +1 -0
- package/dist/services/companion-team.js +73 -0
- package/dist/services/index.d.ts +5 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +4 -0
- package/dist/store/actions.d.ts +45 -33
- package/dist/store/actions.d.ts.map +1 -1
- package/dist/store/actions.js +135 -106
- package/dist/store/index.d.ts +8 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +7 -0
- package/dist/store/state.d.ts +10 -7
- package/dist/store/state.d.ts.map +1 -1
- package/dist/store/state.js +31 -23
- package/dist/store/utils.d.ts +22 -71
- package/dist/store/utils.d.ts.map +1 -1
- package/dist/store/utils.js +28 -146
- package/dist/types/auth.d.ts +107 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +4 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -0
- package/dist/types/organization.d.ts +111 -0
- package/dist/types/organization.d.ts.map +1 -0
- package/dist/types/organization.js +4 -0
- package/dist/types/team.d.ts +52 -0
- package/dist/types/team.d.ts.map +1 -0
- package/dist/types/team.js +4 -0
- package/dist/types/user.d.ts +44 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +4 -0
- package/dist/utils/date.d.ts +10 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/date.js +13 -0
- package/dist/utils/env.d.ts +20 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +23 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/user-mapper.d.ts +21 -0
- package/dist/utils/user-mapper.d.ts.map +1 -0
- package/dist/utils/user-mapper.js +55 -0
- package/package.json +3 -4
- package/dist/components/auth-sync.d.ts +0 -25
- package/dist/components/auth-sync.d.ts.map +0 -1
- package/dist/components/auth-sync.js +0 -346
- package/dist/components/protected-route.d.ts +0 -18
- package/dist/components/protected-route.d.ts.map +0 -1
- package/dist/components/protected-route.js +0 -34
- package/dist/components/sign-in-page.d.ts +0 -21
- package/dist/components/sign-in-page.d.ts.map +0 -1
- package/dist/components/sign-in-page.js +0 -31
- package/dist/core/init-auth-sync.d.ts +0 -7
- package/dist/core/init-auth-sync.d.ts.map +0 -1
- package/dist/core/init-auth-sync.js +0 -34
- package/dist/types.d.ts +0 -87
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -4
package/dist/store/utils.js
CHANGED
|
@@ -1,198 +1,80 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Store 工具函数
|
|
3
3
|
*/
|
|
4
4
|
export function getCurrentUser(authStore) {
|
|
5
5
|
return authStore.user.get();
|
|
6
6
|
}
|
|
7
|
-
/**
|
|
8
|
-
* 获取当前用户ID
|
|
9
|
-
*/
|
|
10
7
|
export function getCurrentUserId(authStore) {
|
|
11
|
-
return authStore.user.get()?.id
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* 安全获取当前用户ID
|
|
15
|
-
*/
|
|
16
|
-
export function getCurrentUserIdSafe(authStore) {
|
|
17
|
-
return getCurrentUserId(authStore);
|
|
8
|
+
return authStore.user.get()?.id ?? null;
|
|
18
9
|
}
|
|
19
|
-
/**
|
|
20
|
-
* 检查是否已认证
|
|
21
|
-
*/
|
|
22
10
|
export function isAuthenticated(authStore) {
|
|
23
11
|
return authStore.isAuthenticated.get();
|
|
24
12
|
}
|
|
25
|
-
/**
|
|
26
|
-
* 检查是否正在加载
|
|
27
|
-
*/
|
|
28
13
|
export function isLoading(authStore) {
|
|
29
14
|
return authStore.loading.get();
|
|
30
15
|
}
|
|
31
|
-
/**
|
|
32
|
-
* 检查是否已加载
|
|
33
|
-
*/
|
|
34
16
|
export function isLoaded(authStore) {
|
|
35
17
|
return authStore.isLoaded.get();
|
|
36
18
|
}
|
|
37
|
-
/**
|
|
38
|
-
* 等待认证完成
|
|
39
|
-
* 使用轮询方式检查认证状态(简单但有效)
|
|
40
|
-
*
|
|
41
|
-
* 注意:如果长时间未加载,Promise 不会自动 reject
|
|
42
|
-
* 建议在外层添加超时处理
|
|
43
|
-
*/
|
|
44
19
|
export async function waitForAuth(authStore) {
|
|
20
|
+
if (authStore.isLoaded.get())
|
|
21
|
+
return;
|
|
45
22
|
return new Promise((resolve) => {
|
|
46
|
-
|
|
47
|
-
if (authStore.isLoaded.get()) {
|
|
48
|
-
resolve();
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
const checkAuth = () => {
|
|
23
|
+
const check = () => {
|
|
52
24
|
if (authStore.isLoaded.get()) {
|
|
53
25
|
resolve();
|
|
54
26
|
}
|
|
55
27
|
else {
|
|
56
|
-
setTimeout(
|
|
28
|
+
setTimeout(check, 100);
|
|
57
29
|
}
|
|
58
30
|
};
|
|
59
|
-
|
|
31
|
+
check();
|
|
60
32
|
});
|
|
61
33
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
*/
|
|
65
|
-
export async function getAuthToken(authStore, tokenStorage, authActions, authClient) {
|
|
66
|
-
// 首先从存储中获取 token
|
|
67
|
-
const storedToken = tokenStorage.get();
|
|
68
|
-
if (storedToken) {
|
|
69
|
-
// 如果有 token 但没有用户信息,尝试获取 session
|
|
70
|
-
if (!authStore.user.get()) {
|
|
71
|
-
await authActions.fetchSessionWithToken(storedToken);
|
|
72
|
-
}
|
|
73
|
-
return storedToken;
|
|
74
|
-
}
|
|
75
|
-
// 如果没有存储的 token,尝试从 session 获取
|
|
76
|
-
const sessionData = await authClient.getSession();
|
|
77
|
-
const sessionToken = sessionData?.data?.session?.token || null;
|
|
78
|
-
if (sessionToken) {
|
|
79
|
-
tokenStorage.save(sessionToken);
|
|
80
|
-
}
|
|
81
|
-
return sessionToken;
|
|
34
|
+
export function getAuthTokenSync(tokenStorage) {
|
|
35
|
+
return tokenStorage.get();
|
|
82
36
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
export
|
|
87
|
-
const token =
|
|
88
|
-
if (!token)
|
|
37
|
+
export async function getAuthToken(tokenStorage) {
|
|
38
|
+
return tokenStorage.get();
|
|
39
|
+
}
|
|
40
|
+
export function getAuthHeadersSync(tokenStorage) {
|
|
41
|
+
const token = tokenStorage.get();
|
|
42
|
+
if (!token)
|
|
89
43
|
return {};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
44
|
+
return { Authorization: `Bearer ${encodeURIComponent(token)}` };
|
|
45
|
+
}
|
|
46
|
+
export async function getAuthHeaders(tokenStorage) {
|
|
47
|
+
return getAuthHeadersSync(tokenStorage);
|
|
94
48
|
}
|
|
95
|
-
/**
|
|
96
|
-
* 处理 401 响应
|
|
97
|
-
*/
|
|
98
49
|
export function handle401Response(response, authActions) {
|
|
99
50
|
if (response.status === 401) {
|
|
100
51
|
authActions.handleUnauthorized();
|
|
101
52
|
}
|
|
102
53
|
return response;
|
|
103
54
|
}
|
|
104
|
-
/**
|
|
105
|
-
* API 客户端工具
|
|
106
|
-
*/
|
|
107
|
-
export function createApiClient(authStore, tokenStorage, authActions, authClient) {
|
|
108
|
-
return {
|
|
109
|
-
async get(url, options) {
|
|
110
|
-
const headers = await getAuthHeaders(authStore, tokenStorage, authActions, authClient);
|
|
111
|
-
const response = await fetch(url, {
|
|
112
|
-
...options,
|
|
113
|
-
method: "GET",
|
|
114
|
-
headers: {
|
|
115
|
-
...headers,
|
|
116
|
-
...options?.headers,
|
|
117
|
-
},
|
|
118
|
-
});
|
|
119
|
-
return handle401Response(response, authActions);
|
|
120
|
-
},
|
|
121
|
-
async post(url, body, options) {
|
|
122
|
-
const headers = await getAuthHeaders(authStore, tokenStorage, authActions, authClient);
|
|
123
|
-
const response = await fetch(url, {
|
|
124
|
-
...options,
|
|
125
|
-
method: "POST",
|
|
126
|
-
headers: {
|
|
127
|
-
"Content-Type": "application/json",
|
|
128
|
-
...headers,
|
|
129
|
-
...options?.headers,
|
|
130
|
-
},
|
|
131
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
132
|
-
});
|
|
133
|
-
return handle401Response(response, authActions);
|
|
134
|
-
},
|
|
135
|
-
async put(url, body, options) {
|
|
136
|
-
const headers = await getAuthHeaders(authStore, tokenStorage, authActions, authClient);
|
|
137
|
-
const response = await fetch(url, {
|
|
138
|
-
...options,
|
|
139
|
-
method: "PUT",
|
|
140
|
-
headers: {
|
|
141
|
-
"Content-Type": "application/json",
|
|
142
|
-
...headers,
|
|
143
|
-
...options?.headers,
|
|
144
|
-
},
|
|
145
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
146
|
-
});
|
|
147
|
-
return handle401Response(response, authActions);
|
|
148
|
-
},
|
|
149
|
-
async delete(url, options) {
|
|
150
|
-
const headers = await getAuthHeaders(authStore, tokenStorage, authActions, authClient);
|
|
151
|
-
const response = await fetch(url, {
|
|
152
|
-
...options,
|
|
153
|
-
method: "DELETE",
|
|
154
|
-
headers: {
|
|
155
|
-
...headers,
|
|
156
|
-
...options?.headers,
|
|
157
|
-
},
|
|
158
|
-
});
|
|
159
|
-
return handle401Response(response, authActions);
|
|
160
|
-
},
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* 用户管理器
|
|
165
|
-
*/
|
|
166
55
|
export function createUserManager(authStore) {
|
|
167
56
|
return {
|
|
168
|
-
getUser()
|
|
169
|
-
|
|
170
|
-
},
|
|
171
|
-
getUserId() {
|
|
172
|
-
return getCurrentUserId(authStore);
|
|
173
|
-
},
|
|
57
|
+
getUser: () => getCurrentUser(authStore),
|
|
58
|
+
getUserId: () => getCurrentUserId(authStore),
|
|
174
59
|
};
|
|
175
60
|
}
|
|
176
61
|
/**
|
|
177
|
-
*
|
|
178
|
-
* 这样就不需要在每个项目中重复包装工具函数
|
|
62
|
+
* 创建绑定好的工具函数集合
|
|
179
63
|
*/
|
|
180
64
|
export function createBoundAuthUtils(instance) {
|
|
181
|
-
const { authStore, tokenStorage,
|
|
65
|
+
const { authStore, tokenStorage, apiClient } = instance;
|
|
182
66
|
return {
|
|
183
|
-
// Store 访问
|
|
184
67
|
getCurrentUser: () => getCurrentUser(authStore),
|
|
185
68
|
getCurrentUserId: () => getCurrentUserId(authStore),
|
|
186
|
-
getCurrentUserIdSafe: () => getCurrentUserIdSafe(authStore),
|
|
187
69
|
isAuthenticated: () => isAuthenticated(authStore),
|
|
188
70
|
isLoading: () => isLoading(authStore),
|
|
189
71
|
isLoaded: () => isLoaded(authStore),
|
|
190
72
|
waitForAuth: () => waitForAuth(authStore),
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
getAuthHeaders: () => getAuthHeaders(
|
|
194
|
-
|
|
195
|
-
apiClient
|
|
73
|
+
getAuthToken: () => getAuthToken(tokenStorage),
|
|
74
|
+
getAuthTokenSync: () => getAuthTokenSync(tokenStorage),
|
|
75
|
+
getAuthHeaders: () => getAuthHeaders(tokenStorage),
|
|
76
|
+
getAuthHeadersSync: () => getAuthHeadersSync(tokenStorage),
|
|
77
|
+
apiClient,
|
|
196
78
|
userManager: createUserManager(authStore),
|
|
197
79
|
};
|
|
198
80
|
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 认证状态和配置类型
|
|
3
|
+
*/
|
|
4
|
+
import type { SessionUser } from "./user";
|
|
5
|
+
/** 更新用户请求 */
|
|
6
|
+
export interface UpdateUserRequest {
|
|
7
|
+
color?: string;
|
|
8
|
+
image?: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
}
|
|
11
|
+
/** Magic Link 登录请求 */
|
|
12
|
+
export interface MagicLinkRequest {
|
|
13
|
+
callbackURL?: string;
|
|
14
|
+
email: string;
|
|
15
|
+
errorCallbackURL?: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
newUserCallbackURL?: string;
|
|
18
|
+
}
|
|
19
|
+
/** Magic Link 登录方法签名 */
|
|
20
|
+
export type SignInWithMagicLink = (options: {
|
|
21
|
+
callbackURL: string;
|
|
22
|
+
email: string;
|
|
23
|
+
name?: string;
|
|
24
|
+
newUserCallbackURL?: string;
|
|
25
|
+
}) => Promise<unknown>;
|
|
26
|
+
/** Email/Password 登录方法签名 */
|
|
27
|
+
export type SignInWithEmail = (credentials: {
|
|
28
|
+
email: string;
|
|
29
|
+
password: string;
|
|
30
|
+
}, options?: {
|
|
31
|
+
onError?: (context: {
|
|
32
|
+
error: Error;
|
|
33
|
+
}) => void;
|
|
34
|
+
onSuccess?: (context: {
|
|
35
|
+
response: Response;
|
|
36
|
+
}) => void;
|
|
37
|
+
}) => Promise<unknown>;
|
|
38
|
+
/** Email/Password 注册方法签名 */
|
|
39
|
+
export type SignUpWithEmail = (credentials: {
|
|
40
|
+
email: string;
|
|
41
|
+
name: string;
|
|
42
|
+
password: string;
|
|
43
|
+
}, options?: {
|
|
44
|
+
onError?: (context: {
|
|
45
|
+
error: Error;
|
|
46
|
+
}) => void;
|
|
47
|
+
onSuccess?: (context: {
|
|
48
|
+
response: Response;
|
|
49
|
+
}) => void;
|
|
50
|
+
}) => Promise<unknown>;
|
|
51
|
+
/** 伴生团队设置选项 */
|
|
52
|
+
export interface CompanionTeamOptions {
|
|
53
|
+
isNewUser?: boolean;
|
|
54
|
+
onComplete?: () => void;
|
|
55
|
+
onError?: (error: Error) => void;
|
|
56
|
+
}
|
|
57
|
+
/** Better Auth signIn 方法接口 */
|
|
58
|
+
export interface AuthClientSignIn {
|
|
59
|
+
email?: SignInWithEmail;
|
|
60
|
+
magicLink?: SignInWithMagicLink;
|
|
61
|
+
social: (options: {
|
|
62
|
+
callbackURL: string;
|
|
63
|
+
errorCallbackURL?: string;
|
|
64
|
+
newUserCallbackURL?: string;
|
|
65
|
+
provider: string;
|
|
66
|
+
}) => Promise<unknown>;
|
|
67
|
+
}
|
|
68
|
+
/** Better Auth signUp 方法接口 */
|
|
69
|
+
export interface AuthClientSignUp {
|
|
70
|
+
email?: SignUpWithEmail;
|
|
71
|
+
}
|
|
72
|
+
/** Better Auth 客户端接口 */
|
|
73
|
+
export interface AuthClientMethods {
|
|
74
|
+
signIn: AuthClientSignIn;
|
|
75
|
+
signOut: () => Promise<unknown>;
|
|
76
|
+
signUp?: AuthClientSignUp;
|
|
77
|
+
}
|
|
78
|
+
/** 认证状态(Legend State store) */
|
|
79
|
+
export interface AuthState {
|
|
80
|
+
error: string | null;
|
|
81
|
+
isAuthenticated: boolean;
|
|
82
|
+
isLoaded: boolean;
|
|
83
|
+
loading: boolean;
|
|
84
|
+
token: string | null;
|
|
85
|
+
user: SessionUser | null;
|
|
86
|
+
}
|
|
87
|
+
/** Better Auth 插件类型 */
|
|
88
|
+
export type BetterAuthPlugin = ReturnType<typeof import("better-auth/client/plugins").adminClient>;
|
|
89
|
+
/** 认证配置 */
|
|
90
|
+
export interface AuthConfig {
|
|
91
|
+
/** OneAuth API 基础 URL */
|
|
92
|
+
baseURL: string;
|
|
93
|
+
/** 获取 session 的端点路径 @default '/v1/auth/get-session' */
|
|
94
|
+
getSessionEndpoint?: string;
|
|
95
|
+
/** Better Auth 插件列表 */
|
|
96
|
+
plugins?: BetterAuthPlugin[];
|
|
97
|
+
/** 跳过错误时的 token 清除 @default false */
|
|
98
|
+
skipTokenCleanupOnError?: boolean;
|
|
99
|
+
/** Token 存储 key @default 'auth-token' */
|
|
100
|
+
tokenStorageKey?: string;
|
|
101
|
+
}
|
|
102
|
+
/** 默认配置类型 */
|
|
103
|
+
export type DefaultAuthConfig = Required<Pick<AuthConfig, "baseURL" | "getSessionEndpoint" | "tokenStorageKey">> & {
|
|
104
|
+
plugins: BetterAuthPlugin[];
|
|
105
|
+
skipTokenCleanupOnError: false;
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEzC,aAAa;AACb,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,sBAAsB;AACtB,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,wBAAwB;AACxB,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE;IAC1C,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAEtB,4BAA4B;AAC5B,MAAM,MAAM,eAAe,GAAG,CAC5B,WAAW,EAAE;IACX,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB,EACD,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,KAAK,IAAI,CAAA;CACtD,KACE,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB,4BAA4B;AAC5B,MAAM,MAAM,eAAe,GAAG,CAC5B,WAAW,EAAE;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,EACD,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,KAAK,IAAI,CAAA;CACtD,KACE,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB,eAAe;AACf,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AAED,8BAA8B;AAC9B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,SAAS,CAAC,EAAE,mBAAmB,CAAA;IAC/B,MAAM,EAAE,CAAC,OAAO,EAAE;QAChB,WAAW,EAAE,MAAM,CAAA;QACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACvB;AAED,8BAA8B;AAC9B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB;AAED,wBAAwB;AACxB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/B,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAC1B;AAED,+BAA+B;AAC/B,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;CACzB;AAED,uBAAuB;AACvB,MAAM,MAAM,gBAAgB,GAAG,UAAU,CACvC,cAAc,4BAA4B,EAAE,WAAW,CACxD,CAAA;AAED,WAAW;AACX,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,uBAAuB;IACvB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B,qCAAqC;IACrC,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,yCAAyC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,aAAa;AACb,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CACtC,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,oBAAoB,GAAG,iBAAiB,CAAC,CACvE,GAAG;IACF,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,uBAAuB,EAAE,KAAK,CAAA;CAC/B,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 类型定义导出
|
|
3
|
+
*/
|
|
4
|
+
export type { SessionUser, SessionUserMetadata, Session } from "./user";
|
|
5
|
+
export type { AuthClientMethods, AuthClientSignIn, AuthClientSignUp, AuthConfig, AuthState, BetterAuthPlugin, CompanionTeamOptions, DefaultAuthConfig, MagicLinkRequest, SignInWithEmail, SignInWithMagicLink, SignUpWithEmail, UpdateUserRequest, } from "./auth";
|
|
6
|
+
export type { Organization, FullOrganization, CreateOrganizationRequest, UpdateOrganizationRequest, DeleteOrganizationRequest, SetActiveOrganizationRequest, CheckSlugRequest, MemberRole, Member, MemberUser, MemberWithUser, RemoveMemberRequest, UpdateMemberRoleRequest, InvitationStatus, Invitation, InvitationDetail, InviteMemberRequest, CancelInvitationRequest, AcceptInvitationRequest, RejectInvitationRequest, InvitationResponse, } from "./organization";
|
|
7
|
+
export type { Team, CreateTeamRequest, UpdateTeamRequest, DeleteTeamRequest, SetActiveTeamRequest, TeamMember, AddTeamMemberRequest, RemoveTeamMemberRequest, ListTeamMembersRequest, } from "./team";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACvE,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,QAAQ,CAAA;AAGf,YAAY,EAEV,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,EAC5B,gBAAgB,EAEhB,UAAU,EACV,MAAM,EACN,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EAEvB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AAGvB,YAAY,EAEV,IAAI,EACJ,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EAEpB,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,QAAQ,CAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 组织相关类型定义
|
|
3
|
+
*/
|
|
4
|
+
export interface Organization {
|
|
5
|
+
createdAt: string;
|
|
6
|
+
id?: string;
|
|
7
|
+
logo?: string;
|
|
8
|
+
metadata?: string;
|
|
9
|
+
name: string;
|
|
10
|
+
slug?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CreateOrganizationRequest {
|
|
13
|
+
keepCurrentActiveOrganization?: boolean;
|
|
14
|
+
logo?: string;
|
|
15
|
+
metadata?: string;
|
|
16
|
+
name: string;
|
|
17
|
+
slug: string;
|
|
18
|
+
userId?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface UpdateOrganizationRequest {
|
|
21
|
+
data: Partial<Pick<Organization, "name" | "slug" | "logo" | "metadata">>;
|
|
22
|
+
organizationId?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface DeleteOrganizationRequest {
|
|
25
|
+
organizationId: string;
|
|
26
|
+
}
|
|
27
|
+
export interface SetActiveOrganizationRequest {
|
|
28
|
+
organizationId?: string;
|
|
29
|
+
organizationSlug?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface CheckSlugRequest {
|
|
32
|
+
slug: string;
|
|
33
|
+
}
|
|
34
|
+
export type MemberRole = "owner" | "admin" | "member" | "guest";
|
|
35
|
+
export interface Member {
|
|
36
|
+
createdAt: string;
|
|
37
|
+
id?: string;
|
|
38
|
+
organizationId: string;
|
|
39
|
+
role: MemberRole;
|
|
40
|
+
userId: string;
|
|
41
|
+
}
|
|
42
|
+
/** 用户 metadata(嵌入在成员中) */
|
|
43
|
+
export interface UserMetadata {
|
|
44
|
+
color?: string;
|
|
45
|
+
}
|
|
46
|
+
/** 成员关联的用户信息 */
|
|
47
|
+
export interface MemberUser {
|
|
48
|
+
createdAt: string;
|
|
49
|
+
email: string;
|
|
50
|
+
emailVerified: boolean;
|
|
51
|
+
id: string;
|
|
52
|
+
image?: string;
|
|
53
|
+
metadata?: UserMetadata;
|
|
54
|
+
name: string;
|
|
55
|
+
updatedAt: string;
|
|
56
|
+
}
|
|
57
|
+
/** 包含用户信息的成员 */
|
|
58
|
+
export interface MemberWithUser extends Member {
|
|
59
|
+
user: MemberUser;
|
|
60
|
+
}
|
|
61
|
+
/** 完整组织信息(含成员和邀请列表) */
|
|
62
|
+
export interface FullOrganization extends Organization {
|
|
63
|
+
invitations?: Invitation[];
|
|
64
|
+
members: MemberWithUser[];
|
|
65
|
+
}
|
|
66
|
+
export interface RemoveMemberRequest {
|
|
67
|
+
memberIdOrEmail: string;
|
|
68
|
+
organizationId?: string;
|
|
69
|
+
}
|
|
70
|
+
export interface UpdateMemberRoleRequest {
|
|
71
|
+
memberId: string;
|
|
72
|
+
organizationId?: string;
|
|
73
|
+
role: MemberRole;
|
|
74
|
+
}
|
|
75
|
+
export type InvitationStatus = "pending" | "accepted" | "rejected" | "canceled";
|
|
76
|
+
export interface Invitation {
|
|
77
|
+
email: string;
|
|
78
|
+
expiresAt: string;
|
|
79
|
+
id?: string;
|
|
80
|
+
inviterId: string;
|
|
81
|
+
organizationId: string;
|
|
82
|
+
role?: MemberRole;
|
|
83
|
+
status: InvitationStatus;
|
|
84
|
+
teamId?: string;
|
|
85
|
+
}
|
|
86
|
+
export interface InvitationDetail extends Invitation {
|
|
87
|
+
inviterEmail: string;
|
|
88
|
+
organizationName: string;
|
|
89
|
+
organizationSlug: string;
|
|
90
|
+
}
|
|
91
|
+
export interface InviteMemberRequest {
|
|
92
|
+
email: string;
|
|
93
|
+
organizationId?: string;
|
|
94
|
+
resend?: boolean;
|
|
95
|
+
role: MemberRole;
|
|
96
|
+
teamId?: string;
|
|
97
|
+
}
|
|
98
|
+
export interface CancelInvitationRequest {
|
|
99
|
+
invitationId: string;
|
|
100
|
+
}
|
|
101
|
+
export interface AcceptInvitationRequest {
|
|
102
|
+
invitationId: string;
|
|
103
|
+
}
|
|
104
|
+
export interface RejectInvitationRequest {
|
|
105
|
+
invitationId: string;
|
|
106
|
+
}
|
|
107
|
+
export interface InvitationResponse {
|
|
108
|
+
invitation: Invitation;
|
|
109
|
+
member: Member | null;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=organization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization.d.ts","sourceRoot":"","sources":["../../src/types/organization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 团队相关类型定义
|
|
3
|
+
*/
|
|
4
|
+
export interface TeamMetadata {
|
|
5
|
+
color?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
image?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface Team {
|
|
10
|
+
createdAt: string;
|
|
11
|
+
id: string;
|
|
12
|
+
metadata?: TeamMetadata;
|
|
13
|
+
name: string;
|
|
14
|
+
organizationId: string;
|
|
15
|
+
updatedAt?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface CreateTeamRequest {
|
|
18
|
+
name: string;
|
|
19
|
+
organizationId?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface UpdateTeamRequest {
|
|
22
|
+
data: {
|
|
23
|
+
metadata?: TeamMetadata;
|
|
24
|
+
name?: string;
|
|
25
|
+
};
|
|
26
|
+
teamId: string;
|
|
27
|
+
}
|
|
28
|
+
export interface DeleteTeamRequest {
|
|
29
|
+
organizationId?: string;
|
|
30
|
+
teamId: string;
|
|
31
|
+
}
|
|
32
|
+
export interface SetActiveTeamRequest {
|
|
33
|
+
teamId: string;
|
|
34
|
+
}
|
|
35
|
+
export interface TeamMember {
|
|
36
|
+
createdAt: string;
|
|
37
|
+
id: string;
|
|
38
|
+
teamId: string;
|
|
39
|
+
userId: string;
|
|
40
|
+
}
|
|
41
|
+
export interface AddTeamMemberRequest {
|
|
42
|
+
teamId: string;
|
|
43
|
+
userId: string;
|
|
44
|
+
}
|
|
45
|
+
export interface RemoveTeamMemberRequest {
|
|
46
|
+
teamId: string;
|
|
47
|
+
userId: string;
|
|
48
|
+
}
|
|
49
|
+
export interface ListTeamMembersRequest {
|
|
50
|
+
teamId: string;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=team.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/types/team.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,IAAI;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE;QACJ,QAAQ,CAAC,EAAE,YAAY,CAAA;QACvB,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAMD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;CACf"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 用户和会话类型定义
|
|
3
|
+
*/
|
|
4
|
+
/** 用户 metadata */
|
|
5
|
+
export interface SessionUserMetadata {
|
|
6
|
+
color?: string;
|
|
7
|
+
}
|
|
8
|
+
/** 会话用户信息 */
|
|
9
|
+
export interface SessionUser {
|
|
10
|
+
activeOrganizationId?: string;
|
|
11
|
+
activeTeamId?: string;
|
|
12
|
+
banExpires?: string;
|
|
13
|
+
banReason?: string;
|
|
14
|
+
banned?: boolean;
|
|
15
|
+
createdAt: string;
|
|
16
|
+
email: string;
|
|
17
|
+
emailVerified: boolean;
|
|
18
|
+
id: string;
|
|
19
|
+
image?: string;
|
|
20
|
+
/** 伴生组织 ID(固定不变) */
|
|
21
|
+
inherentOrganizationId?: string;
|
|
22
|
+
/** 伴生团队 ID(固定不变) */
|
|
23
|
+
inherentTeamId?: string;
|
|
24
|
+
lastLoginAt?: string;
|
|
25
|
+
metadata?: SessionUserMetadata;
|
|
26
|
+
name: string;
|
|
27
|
+
role?: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
}
|
|
30
|
+
/** Better Auth Session */
|
|
31
|
+
export interface Session {
|
|
32
|
+
activeOrganizationId?: string;
|
|
33
|
+
activeTeamId?: string;
|
|
34
|
+
createdAt: string;
|
|
35
|
+
expiresAt: string;
|
|
36
|
+
id: string;
|
|
37
|
+
ipAddress?: string;
|
|
38
|
+
token: string;
|
|
39
|
+
updatedAt: string;
|
|
40
|
+
user: SessionUser;
|
|
41
|
+
userAgent?: string;
|
|
42
|
+
userId: string;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kBAAkB;AAClB,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,aAAa;AACb,MAAM,WAAW,WAAW;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,OAAO,CAAA;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,0BAA0B;AAC1B,MAAM,WAAW,OAAO;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,WAAW,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG/E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 日期工具函数
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* 将日期转换为 ISO 字符串
|
|
6
|
+
* @param date - 日期字符串或 Date 对象
|
|
7
|
+
* @returns ISO 格式的日期字符串,如果输入为空则返回 undefined
|
|
8
|
+
*/
|
|
9
|
+
export function toISOString(date) {
|
|
10
|
+
if (!date)
|
|
11
|
+
return undefined;
|
|
12
|
+
return typeof date === "string" ? date : new Date(date).toISOString();
|
|
13
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 环境变量工具函数
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* 检查是否为开发环境
|
|
6
|
+
*/
|
|
7
|
+
export declare const isDev: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* 安全获取环境变量
|
|
10
|
+
* @param key - 环境变量名
|
|
11
|
+
* @returns 环境变量值,不存在则返回 undefined
|
|
12
|
+
*/
|
|
13
|
+
export declare function getEnvVar(key: string): string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* 获取 OneAuth API 基础 URL
|
|
16
|
+
* @param fallback - 默认值
|
|
17
|
+
* @returns OneAuth API 基础 URL
|
|
18
|
+
*/
|
|
19
|
+
export declare function getAuthBaseUrl(fallback?: string): string;
|
|
20
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,KAAK,SAAiE,CAAA;AAEnF;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAkC,GAAG,MAAM,CAEjF"}
|