@rc-tool/unified-auth-hosted-service 0.2.10 → 0.3.0
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 +109 -114
- package/dist/cli/config-file.d.ts +7 -0
- package/dist/cli/config-file.d.ts.map +1 -0
- package/dist/cli/config-file.js +77 -0
- package/dist/cli/config-file.js.map +1 -0
- package/dist/cli/config.d.ts +21 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +174 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/database.d.ts +33 -0
- package/dist/cli/database.d.ts.map +1 -0
- package/dist/cli/database.js +346 -0
- package/dist/cli/database.js.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +44 -79
- package/dist/cli/index.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +32 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -0
- package/dist/hosted-service/applications.d.ts +0 -6
- package/dist/hosted-service/applications.d.ts.map +1 -1
- package/dist/hosted-service/applications.js +50 -8
- package/dist/hosted-service/applications.js.map +1 -1
- package/dist/hosted-service/better-auth.d.ts +10 -0
- package/dist/hosted-service/better-auth.d.ts.map +1 -0
- package/dist/hosted-service/better-auth.js +213 -0
- package/dist/hosted-service/better-auth.js.map +1 -0
- package/dist/hosted-service/constants.d.ts +0 -4
- package/dist/hosted-service/constants.d.ts.map +1 -1
- package/dist/hosted-service/constants.js +0 -4
- package/dist/hosted-service/constants.js.map +1 -1
- package/dist/hosted-service/http.d.ts.map +1 -1
- package/dist/hosted-service/http.js +6 -8
- package/dist/hosted-service/http.js.map +1 -1
- package/dist/hosted-service/login-page/components.d.ts +0 -1
- package/dist/hosted-service/login-page/components.d.ts.map +1 -1
- package/dist/hosted-service/login-page/components.js +0 -6
- package/dist/hosted-service/login-page/components.js.map +1 -1
- package/dist/hosted-service/login-page/index.d.ts.map +1 -1
- package/dist/hosted-service/login-page/index.js +2 -18
- package/dist/hosted-service/login-page/index.js.map +1 -1
- package/dist/hosted-service/login-page/links.d.ts.map +1 -1
- package/dist/hosted-service/login-page/links.js +1 -12
- package/dist/hosted-service/login-page/links.js.map +1 -1
- package/dist/hosted-service/login-page/styles.d.ts +1 -1
- package/dist/hosted-service/login-page/styles.d.ts.map +1 -1
- package/dist/hosted-service/login-page/styles.js +0 -2
- package/dist/hosted-service/login-page/styles.js.map +1 -1
- package/dist/hosted-service/login-page/types.d.ts +2 -8
- package/dist/hosted-service/login-page/types.d.ts.map +1 -1
- package/dist/hosted-service/routes.d.ts.map +1 -1
- package/dist/hosted-service/routes.js +3 -12
- package/dist/hosted-service/routes.js.map +1 -1
- package/dist/hosted-service/service.d.ts +5 -8
- package/dist/hosted-service/service.d.ts.map +1 -1
- package/dist/hosted-service/service.js +56 -168
- package/dist/hosted-service/service.js.map +1 -1
- package/dist/hosted-service/types.d.ts +36 -46
- package/dist/hosted-service/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/package.json +8 -4
- package/dist/cli/env.d.ts +0 -40
- package/dist/cli/env.d.ts.map +0 -1
- package/dist/cli/env.js +0 -353
- package/dist/cli/env.js.map +0 -1
- package/dist/hosted-service/cookies.d.ts +0 -17
- package/dist/hosted-service/cookies.d.ts.map +0 -1
- package/dist/hosted-service/cookies.js +0 -56
- package/dist/hosted-service/cookies.js.map +0 -1
- package/dist/hosted-service/crypto.d.ts +0 -3
- package/dist/hosted-service/crypto.d.ts.map +0 -1
- package/dist/hosted-service/crypto.js +0 -39
- package/dist/hosted-service/crypto.js.map +0 -1
- package/dist/hosted-service/oauth.d.ts +0 -11
- package/dist/hosted-service/oauth.d.ts.map +0 -1
- package/dist/hosted-service/oauth.js +0 -37
- package/dist/hosted-service/oauth.js.map +0 -1
- package/dist/hosted-service/providers/feishu.d.ts +0 -4
- package/dist/hosted-service/providers/feishu.d.ts.map +0 -1
- package/dist/hosted-service/providers/feishu.js +0 -72
- package/dist/hosted-service/providers/feishu.js.map +0 -1
- package/dist/hosted-service/providers/github.d.ts +0 -4
- package/dist/hosted-service/providers/github.d.ts.map +0 -1
- package/dist/hosted-service/providers/github.js +0 -73
- package/dist/hosted-service/providers/github.js.map +0 -1
- package/dist/hosted-service/providers/google.d.ts +0 -4
- package/dist/hosted-service/providers/google.d.ts.map +0 -1
- package/dist/hosted-service/providers/google.js +0 -54
- package/dist/hosted-service/providers/google.js.map +0 -1
- package/dist/hosted-service/session.d.ts +0 -11
- package/dist/hosted-service/session.d.ts.map +0 -1
- package/dist/hosted-service/session.js +0 -54
- package/dist/hosted-service/session.js.map +0 -1
- package/dist/hosted-service/store/file.d.ts +0 -6
- package/dist/hosted-service/store/file.d.ts.map +0 -1
- package/dist/hosted-service/store/file.js +0 -63
- package/dist/hosted-service/store/file.js.map +0 -1
- package/dist/hosted-service/store/index.d.ts +0 -6
- package/dist/hosted-service/store/index.d.ts.map +0 -1
- package/dist/hosted-service/store/index.js +0 -3
- package/dist/hosted-service/store/index.js.map +0 -1
- package/dist/hosted-service/store/memory.d.ts +0 -6
- package/dist/hosted-service/store/memory.d.ts.map +0 -1
- package/dist/hosted-service/store/memory.js +0 -19
- package/dist/hosted-service/store/memory.js.map +0 -1
- package/dist/hosted-service/store/state.d.ts +0 -9
- package/dist/hosted-service/store/state.d.ts.map +0 -1
- package/dist/hosted-service/store/state.js +0 -156
- package/dist/hosted-service/store/state.js.map +0 -1
- package/dist/hosted-service/store/types.d.ts +0 -56
- package/dist/hosted-service/store/types.d.ts.map +0 -1
- package/dist/hosted-service/store/types.js +0 -2
- package/dist/hosted-service/store/types.js.map +0 -1
- package/dist/hosted-service-cli.d.ts +0 -2
- package/dist/hosted-service-cli.d.ts.map +0 -1
- package/dist/hosted-service-cli.js +0 -85
- package/dist/hosted-service-cli.js.map +0 -1
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { HostedAuthApplication, HostedAuthServiceOptions, StatePayload } from "./types.js";
|
|
2
|
-
export declare function createOAuthState(app: HostedAuthApplication, redirectURI: string): {
|
|
3
|
-
payload: StatePayload;
|
|
4
|
-
state: string;
|
|
5
|
-
};
|
|
6
|
-
export declare function createOAuthStateCookie(request: Request, options: HostedAuthServiceOptions, payload: StatePayload): string;
|
|
7
|
-
export declare function readOAuthCallbackState(request: Request, options: HostedAuthServiceOptions): {
|
|
8
|
-
code: string;
|
|
9
|
-
savedState: StatePayload;
|
|
10
|
-
} | null;
|
|
11
|
-
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/hosted-service/oauth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhG,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM;;;EAU/E;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,YAAY,UAStB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB;;;SAczF"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { randomBytes } from "node:crypto";
|
|
2
|
-
import { AUTH_SERVICE_STATE_COOKIE, STATE_MAX_AGE_SECONDS } from "./constants.js";
|
|
3
|
-
import { getCookie, serializeCookie, shouldUseSecureCookie } from "./cookies.js";
|
|
4
|
-
import { createSignedToken, parseSignedToken } from "./crypto.js";
|
|
5
|
-
export function createOAuthState(app, redirectURI) {
|
|
6
|
-
const state = randomBytes(24).toString("base64url");
|
|
7
|
-
const payload = {
|
|
8
|
-
clientId: app.clientId,
|
|
9
|
-
exp: Math.floor(Date.now() / 1000) + STATE_MAX_AGE_SECONDS,
|
|
10
|
-
redirectURI,
|
|
11
|
-
state,
|
|
12
|
-
};
|
|
13
|
-
return { payload, state };
|
|
14
|
-
}
|
|
15
|
-
export function createOAuthStateCookie(request, options, payload) {
|
|
16
|
-
return serializeCookie({
|
|
17
|
-
domain: options.cookieDomain,
|
|
18
|
-
maxAge: STATE_MAX_AGE_SECONDS,
|
|
19
|
-
name: AUTH_SERVICE_STATE_COOKIE,
|
|
20
|
-
secure: shouldUseSecureCookie(request),
|
|
21
|
-
value: createSignedToken(payload, options.sessionSecret),
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
export function readOAuthCallbackState(request, options) {
|
|
25
|
-
const url = new URL(request.url);
|
|
26
|
-
const code = url.searchParams.get("code");
|
|
27
|
-
const state = url.searchParams.get("state");
|
|
28
|
-
const savedState = parseSignedToken(getCookie(request, AUTH_SERVICE_STATE_COOKIE), options.sessionSecret);
|
|
29
|
-
if (!code || !state || !savedState || savedState.state !== state || isExpired(savedState)) {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
return { code, savedState };
|
|
33
|
-
}
|
|
34
|
-
function isExpired(savedState) {
|
|
35
|
-
return savedState.exp < Math.floor(Date.now() / 1000);
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=oauth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/hosted-service/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGlE,MAAM,UAAU,gBAAgB,CAAC,GAA0B,EAAE,WAAmB;IAC9E,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,OAAO,GAAiB;QAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,qBAAqB;QAC1D,WAAW;QACX,KAAK;KACN,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,OAAiC,EACjC,OAAqB;IAErB,OAAO,eAAe,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC,YAAY;QAC5B,MAAM,EAAE,qBAAqB;QAC7B,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC;QACtC,KAAK,EAAE,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC;KACzD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,OAAiC;IACxF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,gBAAgB,CACjC,SAAS,CAAC,OAAO,EAAE,yBAAyB,CAAC,EAC7C,OAAO,CAAC,aAAa,CACtB,CAAC;IAEF,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,UAAwB;IACzC,OAAO,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { AuthUser } from "@rc-tool/unified-auth-sdk/service-client";
|
|
2
|
-
import type { HostedAuthServiceOptions } from "../types.js";
|
|
3
|
-
export declare function createUserFromFeishuCode(options: HostedAuthServiceOptions, code: string): Promise<AuthUser>;
|
|
4
|
-
//# sourceMappingURL=feishu.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feishu.d.ts","sourceRoot":"","sources":["../../../src/hosted-service/providers/feishu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAwD5D,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,wBAAwB,EACjC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,CAmCnB"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
async function getFeishuAppAccessToken(appId, appSecret) {
|
|
2
|
-
const response = await fetch("https://open.feishu.cn/open-apis/auth/v3/app_access_token/internal", {
|
|
3
|
-
body: JSON.stringify({
|
|
4
|
-
app_id: appId,
|
|
5
|
-
app_secret: appSecret,
|
|
6
|
-
}),
|
|
7
|
-
headers: { "content-type": "application/json" },
|
|
8
|
-
method: "POST",
|
|
9
|
-
});
|
|
10
|
-
const payload = (await response.json());
|
|
11
|
-
if (!response.ok || payload.code !== 0 || !payload.app_access_token) {
|
|
12
|
-
throw new Error(payload.msg || "获取飞书 app_access_token 失败");
|
|
13
|
-
}
|
|
14
|
-
return payload.app_access_token;
|
|
15
|
-
}
|
|
16
|
-
export async function createUserFromFeishuCode(options, code) {
|
|
17
|
-
const appId = options.feishu?.appId;
|
|
18
|
-
const appSecret = options.feishu?.appSecret;
|
|
19
|
-
if (!appId || !appSecret) {
|
|
20
|
-
throw new Error("飞书登录未配置");
|
|
21
|
-
}
|
|
22
|
-
const appAccessToken = await getFeishuAppAccessToken(appId, appSecret);
|
|
23
|
-
const tokenPayload = await exchangeFeishuCode(code, appAccessToken);
|
|
24
|
-
const userInfo = await getFeishuUserInfo(tokenPayload.data.access_token);
|
|
25
|
-
const openId = userInfo?.open_id || tokenPayload.data.open_id;
|
|
26
|
-
if (!openId) {
|
|
27
|
-
throw new Error("飞书返回的用户信息缺少 open_id");
|
|
28
|
-
}
|
|
29
|
-
return {
|
|
30
|
-
avatarUrl: userInfo?.avatar_big ||
|
|
31
|
-
userInfo?.avatar_middle ||
|
|
32
|
-
userInfo?.avatar_url ||
|
|
33
|
-
tokenPayload.data.avatar_url ||
|
|
34
|
-
null,
|
|
35
|
-
email: userInfo?.email || tokenPayload.data.email || null,
|
|
36
|
-
id: openId,
|
|
37
|
-
metadata: {
|
|
38
|
-
enName: userInfo?.en_name || tokenPayload.data.en_name,
|
|
39
|
-
feishuOpenId: openId,
|
|
40
|
-
feishuUnionId: userInfo?.union_id || tokenPayload.data.union_id,
|
|
41
|
-
feishuUserId: userInfo?.user_id || tokenPayload.data.user_id,
|
|
42
|
-
provider: "feishu",
|
|
43
|
-
},
|
|
44
|
-
name: userInfo?.name || tokenPayload.data.name || "飞书用户",
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
async function exchangeFeishuCode(code, appAccessToken) {
|
|
48
|
-
const response = await fetch("https://open.feishu.cn/open-apis/authen/v1/access_token", {
|
|
49
|
-
body: JSON.stringify({
|
|
50
|
-
code,
|
|
51
|
-
grant_type: "authorization_code",
|
|
52
|
-
}),
|
|
53
|
-
headers: {
|
|
54
|
-
authorization: `Bearer ${appAccessToken}`,
|
|
55
|
-
"content-type": "application/json",
|
|
56
|
-
},
|
|
57
|
-
method: "POST",
|
|
58
|
-
});
|
|
59
|
-
const payload = (await response.json());
|
|
60
|
-
if (!response.ok || payload.code !== 0 || !payload.data?.access_token) {
|
|
61
|
-
throw new Error(payload.msg || payload.message || "飞书授权码换取 user_access_token 失败");
|
|
62
|
-
}
|
|
63
|
-
return { data: payload.data };
|
|
64
|
-
}
|
|
65
|
-
async function getFeishuUserInfo(accessToken) {
|
|
66
|
-
const response = await fetch("https://open.feishu.cn/open-apis/authen/v1/user_info", {
|
|
67
|
-
headers: { authorization: `Bearer ${accessToken}` },
|
|
68
|
-
});
|
|
69
|
-
const payload = (await response.json());
|
|
70
|
-
return payload.code === 0 ? payload.data : null;
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=feishu.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feishu.js","sourceRoot":"","sources":["../../../src/hosted-service/providers/feishu.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { AuthUser } from "@rc-tool/unified-auth-sdk/service-client";
|
|
2
|
-
import type { HostedAuthServiceOptions } from "../types.js";
|
|
3
|
-
export declare function createUserFromGitHubCode(options: HostedAuthServiceOptions, code: string, redirectURI: string): Promise<AuthUser>;
|
|
4
|
-
//# sourceMappingURL=github.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/hosted-service/providers/github.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAuB5D,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,wBAAwB,EACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC,CAqBnB"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
export async function createUserFromGitHubCode(options, code, redirectURI) {
|
|
2
|
-
const accessToken = await exchangeGitHubCode(options, code, redirectURI);
|
|
3
|
-
const apiHeaders = createGitHubApiHeaders(accessToken);
|
|
4
|
-
const userInfo = await getGitHubUserInfo(apiHeaders);
|
|
5
|
-
const primaryEmail = userInfo.email ? undefined : await getGitHubPrimaryEmail(apiHeaders);
|
|
6
|
-
const email = userInfo.email ?? primaryEmail?.email ?? null;
|
|
7
|
-
return {
|
|
8
|
-
avatarUrl: userInfo.avatar_url ?? null,
|
|
9
|
-
email,
|
|
10
|
-
id: `github:${userInfo.id}`,
|
|
11
|
-
metadata: {
|
|
12
|
-
emailVerified: primaryEmail?.verified,
|
|
13
|
-
githubDisplayName: userInfo.name,
|
|
14
|
-
githubId: userInfo.id,
|
|
15
|
-
githubLogin: userInfo.login,
|
|
16
|
-
githubUrl: userInfo.html_url,
|
|
17
|
-
provider: "github",
|
|
18
|
-
},
|
|
19
|
-
name: userInfo.login || userInfo.name || email || "GitHub 用户",
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
async function exchangeGitHubCode(options, code, redirectURI) {
|
|
23
|
-
const clientId = options.github?.clientId;
|
|
24
|
-
const clientSecret = options.github?.clientSecret;
|
|
25
|
-
if (!clientId || !clientSecret) {
|
|
26
|
-
throw new Error("GitHub 登录未配置");
|
|
27
|
-
}
|
|
28
|
-
const response = await fetch("https://github.com/login/oauth/access_token", {
|
|
29
|
-
body: new URLSearchParams({
|
|
30
|
-
client_id: clientId,
|
|
31
|
-
client_secret: clientSecret,
|
|
32
|
-
code,
|
|
33
|
-
redirect_uri: redirectURI,
|
|
34
|
-
}),
|
|
35
|
-
headers: {
|
|
36
|
-
accept: "application/json",
|
|
37
|
-
"content-type": "application/x-www-form-urlencoded",
|
|
38
|
-
},
|
|
39
|
-
method: "POST",
|
|
40
|
-
});
|
|
41
|
-
const payload = (await response.json());
|
|
42
|
-
if (!response.ok || !payload.access_token) {
|
|
43
|
-
throw new Error(payload.error_description || payload.error || "GitHub 授权码换取 access_token 失败");
|
|
44
|
-
}
|
|
45
|
-
return payload.access_token;
|
|
46
|
-
}
|
|
47
|
-
function createGitHubApiHeaders(accessToken) {
|
|
48
|
-
return {
|
|
49
|
-
accept: "application/vnd.github+json",
|
|
50
|
-
authorization: `Bearer ${accessToken}`,
|
|
51
|
-
"user-agent": "unified-auth-sdk",
|
|
52
|
-
"x-github-api-version": "2022-11-28",
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
async function getGitHubUserInfo(headers) {
|
|
56
|
-
const response = await fetch("https://api.github.com/user", { headers });
|
|
57
|
-
const userInfo = (await response.json());
|
|
58
|
-
if (!response.ok || !userInfo.id) {
|
|
59
|
-
throw new Error("GitHub 返回的用户信息缺少 id");
|
|
60
|
-
}
|
|
61
|
-
return userInfo;
|
|
62
|
-
}
|
|
63
|
-
async function getGitHubPrimaryEmail(headers) {
|
|
64
|
-
const response = await fetch("https://api.github.com/user/emails", { headers });
|
|
65
|
-
if (!response.ok) {
|
|
66
|
-
return undefined;
|
|
67
|
-
}
|
|
68
|
-
const emails = (await response.json());
|
|
69
|
-
return (emails.find((item) => item.primary && item.verified) ??
|
|
70
|
-
emails.find((item) => item.verified) ??
|
|
71
|
-
emails.find((item) => item.email));
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=github.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/hosted-service/providers/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { AuthUser } from "@rc-tool/unified-auth-sdk/service-client";
|
|
2
|
-
import type { HostedAuthServiceOptions } from "../types.js";
|
|
3
|
-
export declare function createUserFromGoogleCode(options: HostedAuthServiceOptions, code: string, redirectURI: string): Promise<AuthUser>;
|
|
4
|
-
//# sourceMappingURL=google.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/hosted-service/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAkB5D,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,wBAAwB,EACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC,CAqBnB"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
export async function createUserFromGoogleCode(options, code, redirectURI) {
|
|
2
|
-
const tokenPayload = await exchangeGoogleCode(options, code, redirectURI);
|
|
3
|
-
const userInfo = await getGoogleUserInfo(tokenPayload.access_token);
|
|
4
|
-
if (!userInfo.sub) {
|
|
5
|
-
throw new Error("Google 返回的用户信息缺少 sub");
|
|
6
|
-
}
|
|
7
|
-
return {
|
|
8
|
-
avatarUrl: userInfo.picture ?? null,
|
|
9
|
-
email: userInfo.email ?? null,
|
|
10
|
-
id: userInfo.sub,
|
|
11
|
-
metadata: {
|
|
12
|
-
emailVerified: userInfo.email_verified,
|
|
13
|
-
familyName: userInfo.family_name,
|
|
14
|
-
givenName: userInfo.given_name,
|
|
15
|
-
googleSub: userInfo.sub,
|
|
16
|
-
provider: "google",
|
|
17
|
-
},
|
|
18
|
-
name: userInfo.name || userInfo.email || "Google 用户",
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
async function exchangeGoogleCode(options, code, redirectURI) {
|
|
22
|
-
const clientId = options.google?.clientId;
|
|
23
|
-
const clientSecret = options.google?.clientSecret;
|
|
24
|
-
if (!clientId || !clientSecret) {
|
|
25
|
-
throw new Error("Google 登录未配置");
|
|
26
|
-
}
|
|
27
|
-
const response = await fetch("https://oauth2.googleapis.com/token", {
|
|
28
|
-
body: new URLSearchParams({
|
|
29
|
-
client_id: clientId,
|
|
30
|
-
client_secret: clientSecret,
|
|
31
|
-
code,
|
|
32
|
-
grant_type: "authorization_code",
|
|
33
|
-
redirect_uri: redirectURI,
|
|
34
|
-
}),
|
|
35
|
-
headers: { "content-type": "application/x-www-form-urlencoded" },
|
|
36
|
-
method: "POST",
|
|
37
|
-
});
|
|
38
|
-
const payload = (await response.json());
|
|
39
|
-
if (!response.ok || !payload.access_token) {
|
|
40
|
-
throw new Error(payload.error_description || payload.error || "Google 授权码换取 access_token 失败");
|
|
41
|
-
}
|
|
42
|
-
return { access_token: payload.access_token };
|
|
43
|
-
}
|
|
44
|
-
async function getGoogleUserInfo(accessToken) {
|
|
45
|
-
const response = await fetch("https://openidconnect.googleapis.com/v1/userinfo", {
|
|
46
|
-
headers: { authorization: `Bearer ${accessToken}` },
|
|
47
|
-
});
|
|
48
|
-
const userInfo = (await response.json());
|
|
49
|
-
if (!response.ok) {
|
|
50
|
-
throw new Error("Google 用户信息获取失败");
|
|
51
|
-
}
|
|
52
|
-
return userInfo;
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=google.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../../src/hosted-service/providers/google.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAiC,EACjC,IAAY,EACZ,WAAmB;IAEnB,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAEpE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI;QAC7B,EAAE,EAAE,QAAQ,CAAC,GAAG;QAChB,QAAQ,EAAE;YACR,aAAa,EAAE,QAAQ,CAAC,cAAc;YACtC,UAAU,EAAE,QAAQ,CAAC,WAAW;YAChC,SAAS,EAAE,QAAQ,CAAC,UAAU;YAC9B,SAAS,EAAE,QAAQ,CAAC,GAAG;YACvB,QAAQ,EAAE,QAAQ;SACnB;QACD,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,WAAW;KACrD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAiC,EAAE,IAAY,EAAE,WAAmB;IACpG,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;IAElD,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,qCAAqC,EAAE;QAClE,IAAI,EAAE,IAAI,eAAe,CAAC;YACxB,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,YAAY;YAC3B,IAAI;YACJ,UAAU,EAAE,oBAAoB;YAChC,YAAY,EAAE,WAAW;SAC1B,CAAC;QACF,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;QAChE,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwB,CAAC;IAE/D,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,KAAK,IAAI,8BAA8B,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,kDAAkD,EAAE;QAC/E,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE;KACpD,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2B,CAAC;IAEnE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { AuthContext, AuthSession } from "@rc-tool/unified-auth-sdk/service-client";
|
|
2
|
-
import type { HostedAuthSessionContext, HostedAuthSessionRecord, HostedAuthStore } from "./store/index.js";
|
|
3
|
-
import type { HostedAuthServiceOptions, SessionPayload } from "./types.js";
|
|
4
|
-
export declare function createSessionExpiresAt(): string;
|
|
5
|
-
export declare function createSessionPayload(session: HostedAuthSessionRecord): SessionPayload;
|
|
6
|
-
export declare function parseSessionPayload(request: Request, options: HostedAuthServiceOptions): SessionPayload | null;
|
|
7
|
-
export declare function getStoredSession(request: Request, options: HostedAuthServiceOptions, store: HostedAuthStore): Promise<HostedAuthSessionContext | null>;
|
|
8
|
-
export declare function deleteRequestSession(request: Request, options: HostedAuthServiceOptions, store: HostedAuthStore): Promise<void>;
|
|
9
|
-
export declare function toAuthSession(session: HostedAuthSessionRecord): AuthSession;
|
|
10
|
-
export declare function toAuthContext(stored: HostedAuthSessionContext | null): AuthContext;
|
|
11
|
-
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/hosted-service/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAIzF,OAAO,KAAK,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3E,wBAAgB,sBAAsB,WAErC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,GAAG,cAAc,CAMrF;AAGD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,yBAWtF;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,eAAe,4CAgBvB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,eAAe,iBAOvB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,WAAW,CAO3E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,wBAAwB,GAAG,IAAI,GAAG,WAAW,CAKlF"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { AUTH_SERVICE_SESSION_COOKIE, SESSION_MAX_AGE_SECONDS } from "./constants.js";
|
|
2
|
-
import { getCookie } from "./cookies.js";
|
|
3
|
-
import { parseSignedToken } from "./crypto.js";
|
|
4
|
-
export function createSessionExpiresAt() {
|
|
5
|
-
return new Date(Date.now() + SESSION_MAX_AGE_SECONDS * 1000).toISOString();
|
|
6
|
-
}
|
|
7
|
-
export function createSessionPayload(session) {
|
|
8
|
-
return {
|
|
9
|
-
clientId: session.clientId,
|
|
10
|
-
exp: Math.floor(Date.parse(session.expiresAt) / 1000),
|
|
11
|
-
sessionId: session.id,
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
// cookie 里只放签名后的 session id,不放完整用户资料;用户信息每次从 store 解析。
|
|
15
|
-
export function parseSessionPayload(request, options) {
|
|
16
|
-
const payload = parseSignedToken(getCookie(request, options.cookieName ?? AUTH_SERVICE_SESSION_COOKIE), options.sessionSecret);
|
|
17
|
-
if (!payload || payload.exp < Math.floor(Date.now() / 1000)) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
return payload;
|
|
21
|
-
}
|
|
22
|
-
export async function getStoredSession(request, options, store) {
|
|
23
|
-
const payload = parseSessionPayload(request, options);
|
|
24
|
-
if (!payload) {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
const stored = await store.getSession(payload.sessionId);
|
|
28
|
-
// 同一个浏览器可能登录多个业务应用,clientId 必须匹配当前应用。
|
|
29
|
-
if (!stored || stored.session.clientId !== payload.clientId) {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
return stored;
|
|
33
|
-
}
|
|
34
|
-
export async function deleteRequestSession(request, options, store) {
|
|
35
|
-
const payload = parseSessionPayload(request, options);
|
|
36
|
-
if (payload) {
|
|
37
|
-
await store.deleteSession(payload.sessionId);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export function toAuthSession(session) {
|
|
41
|
-
return {
|
|
42
|
-
clientId: session.clientId,
|
|
43
|
-
expiresAt: session.expiresAt,
|
|
44
|
-
id: session.id,
|
|
45
|
-
userId: session.userId,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
export function toAuthContext(stored) {
|
|
49
|
-
return {
|
|
50
|
-
session: stored ? toAuthSession(stored.session) : null,
|
|
51
|
-
user: stored?.user ?? null,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/hosted-service/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI/C,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgC;IACnE,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QACrD,SAAS,EAAE,OAAO,CAAC,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,OAAiC;IACrF,MAAM,OAAO,GAAG,gBAAgB,CAC9B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,IAAI,2BAA2B,CAAC,EACrE,OAAO,CAAC,aAAa,CACtB,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgB,EAChB,OAAiC,EACjC,KAAsB;IAEtB,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEzD,sCAAsC;IACtC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAgB,EAChB,OAAiC,EACjC,KAAsB;IAEtB,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgC;IAC5D,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAuC;IACnE,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;QACtD,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;KAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/hosted-service/store/file.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAGV,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,eAAe,CAwExF"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
2
|
-
import { dirname } from "node:path";
|
|
3
|
-
import { createEmptyStoreState, createSessionInState, deleteSessionInState, getSessionInState, normalizeStoreState, upsertOAuthUserInState, } from "./state.js";
|
|
4
|
-
export function createFileAuthStore(options) {
|
|
5
|
-
let state = null;
|
|
6
|
-
let queue = Promise.resolve();
|
|
7
|
-
async function readState() {
|
|
8
|
-
if (state) {
|
|
9
|
-
return state;
|
|
10
|
-
}
|
|
11
|
-
try {
|
|
12
|
-
state = normalizeStoreState(JSON.parse(await readFile(options.filePath, "utf8")));
|
|
13
|
-
}
|
|
14
|
-
catch (error) {
|
|
15
|
-
const code = error instanceof Error && "code" in error ? error.code : undefined;
|
|
16
|
-
if (code !== "ENOENT") {
|
|
17
|
-
throw error;
|
|
18
|
-
}
|
|
19
|
-
state = createEmptyStoreState();
|
|
20
|
-
}
|
|
21
|
-
return state;
|
|
22
|
-
}
|
|
23
|
-
async function writeState(nextState) {
|
|
24
|
-
const temporaryPath = `${options.filePath}.tmp`;
|
|
25
|
-
await mkdir(dirname(options.filePath), { recursive: true });
|
|
26
|
-
await writeFile(temporaryPath, `${JSON.stringify(nextState, null, 2)}\n`, "utf8");
|
|
27
|
-
await rename(temporaryPath, options.filePath);
|
|
28
|
-
}
|
|
29
|
-
async function withState(mutates, callback) {
|
|
30
|
-
const run = async () => {
|
|
31
|
-
const current = await readState();
|
|
32
|
-
const result = await callback(current);
|
|
33
|
-
if (mutates) {
|
|
34
|
-
await writeState(current);
|
|
35
|
-
}
|
|
36
|
-
return result;
|
|
37
|
-
};
|
|
38
|
-
if (!mutates) {
|
|
39
|
-
return queue.then(run);
|
|
40
|
-
}
|
|
41
|
-
// 文件存储用串行队列避免并发登录时互相覆盖写入结果。
|
|
42
|
-
const next = queue.then(run, run);
|
|
43
|
-
queue = next.then(() => undefined, () => undefined);
|
|
44
|
-
return next;
|
|
45
|
-
}
|
|
46
|
-
return {
|
|
47
|
-
createSession(input) {
|
|
48
|
-
return withState(true, (current) => createSessionInState(current, input));
|
|
49
|
-
},
|
|
50
|
-
deleteSession(sessionId) {
|
|
51
|
-
return withState(true, (current) => {
|
|
52
|
-
deleteSessionInState(current, sessionId);
|
|
53
|
-
});
|
|
54
|
-
},
|
|
55
|
-
getSession(sessionId) {
|
|
56
|
-
return withState(false, (current) => getSessionInState(current, sessionId));
|
|
57
|
-
},
|
|
58
|
-
upsertOAuthUser(provider, providerUser) {
|
|
59
|
-
return withState(true, (current) => upsertOAuthUserInState(current, provider, providerUser));
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=file.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/hosted-service/store/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { createFileAuthStore } from "./file.js";
|
|
2
|
-
export type { CreateFileAuthStoreOptions } from "./file.js";
|
|
3
|
-
export { createMemoryAuthStore } from "./memory.js";
|
|
4
|
-
export type { CreateMemoryAuthStoreOptions } from "./memory.js";
|
|
5
|
-
export type { CreateHostedAuthSessionInput, HostedAuthAccountRecord, HostedAuthProviderId, HostedAuthSessionContext, HostedAuthSessionRecord, HostedAuthStore, HostedAuthStoreState, HostedAuthUserRecord, } from "./types.js";
|
|
6
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hosted-service/store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAChE,YAAY,EACV,4BAA4B,EAC5B,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hosted-service/store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { HostedAuthStore, HostedAuthStoreState } from "./types.js";
|
|
2
|
-
export interface CreateMemoryAuthStoreOptions {
|
|
3
|
-
state?: Partial<HostedAuthStoreState>;
|
|
4
|
-
}
|
|
5
|
-
export declare function createMemoryAuthStore(options?: CreateMemoryAuthStoreOptions): HostedAuthStore;
|
|
6
|
-
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/hosted-service/store/memory.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAGV,eAAe,EACf,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,4BAA4B;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACvC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,eAAe,CAiBjG"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { createEmptyStoreState, createSessionInState, deleteSessionInState, getSessionInState, normalizeStoreState, upsertOAuthUserInState, } from "./state.js";
|
|
2
|
-
export function createMemoryAuthStore(options = {}) {
|
|
3
|
-
const state = options.state ? normalizeStoreState(options.state) : createEmptyStoreState();
|
|
4
|
-
return {
|
|
5
|
-
async createSession(input) {
|
|
6
|
-
return createSessionInState(state, input);
|
|
7
|
-
},
|
|
8
|
-
async deleteSession(sessionId) {
|
|
9
|
-
deleteSessionInState(state, sessionId);
|
|
10
|
-
},
|
|
11
|
-
async getSession(sessionId) {
|
|
12
|
-
return getSessionInState(state, sessionId);
|
|
13
|
-
},
|
|
14
|
-
async upsertOAuthUser(provider, providerUser) {
|
|
15
|
-
return upsertOAuthUserInState(state, provider, providerUser);
|
|
16
|
-
},
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=memory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/hosted-service/store/memory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAYpB,MAAM,UAAU,qBAAqB,CAAC,UAAwC,EAAE;IAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAE3F,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,KAAmC;YACrD,OAAO,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,CAAC,aAAa,CAAC,SAAiB;YACnC,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,SAAiB;YAChC,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,QAA8B,EAAE,YAAsB;YAC1E,OAAO,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC/D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { AuthUser } from "@rc-tool/unified-auth-sdk/service-client";
|
|
2
|
-
import type { CreateHostedAuthSessionInput, HostedAuthProviderId, HostedAuthSessionContext, HostedAuthSessionRecord, HostedAuthStoreState } from "./types.js";
|
|
3
|
-
export declare function createEmptyStoreState(): HostedAuthStoreState;
|
|
4
|
-
export declare function normalizeStoreState(value: unknown): HostedAuthStoreState;
|
|
5
|
-
export declare function upsertOAuthUserInState(state: HostedAuthStoreState, provider: HostedAuthProviderId, providerUser: AuthUser): AuthUser;
|
|
6
|
-
export declare function createSessionInState(state: HostedAuthStoreState, input: CreateHostedAuthSessionInput): HostedAuthSessionRecord;
|
|
7
|
-
export declare function getSessionInState(state: HostedAuthStoreState, sessionId: string): HostedAuthSessionContext | null;
|
|
8
|
-
export declare function deleteSessionInState(state: HostedAuthStoreState, sessionId: string): void;
|
|
9
|
-
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/hosted-service/store/state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,KAAK,EACV,4BAA4B,EAE5B,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,qBAAqB,IAAI,oBAAoB,CAM5D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAQxE;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,oBAAoB,EAC9B,YAAY,EAAE,QAAQ,GACrB,QAAQ,CAUV;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,oBAAoB,EAC3B,KAAK,EAAE,4BAA4B,GAClC,uBAAuB,CAgBzB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,oBAAoB,EAC3B,SAAS,EAAE,MAAM,GAChB,wBAAwB,GAAG,IAAI,CAmBjC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,QAElF"}
|