@better-auth/core 1.7.0-rc.1 → 1.7.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.d.mts +28 -28
- package/dist/async_hooks/index.d.mts +0 -1
- package/dist/async_hooks/pure.index.d.mts +0 -1
- package/dist/context/endpoint-context.d.mts +1 -1
- package/dist/context/global.d.mts +0 -1
- package/dist/context/global.mjs +1 -1
- package/dist/context/request-state.d.mts +0 -1
- package/dist/context/request-state.mjs +8 -5
- package/dist/context/transaction.d.mts +8 -3
- package/dist/context/transaction.mjs +27 -10
- package/dist/db/adapter/factory.d.mts +3 -5
- package/dist/db/adapter/factory.mjs +7 -5
- package/dist/db/adapter/get-default-field-name.d.mts +2 -9
- package/dist/db/adapter/get-default-model-name.d.mts +1 -5
- package/dist/db/adapter/get-default-model-name.mjs +6 -5
- package/dist/db/adapter/get-field-attributes.d.mts +4 -11
- package/dist/db/adapter/get-field-name.d.mts +2 -9
- package/dist/db/adapter/get-id-field.d.mts +4 -12
- package/dist/db/adapter/get-model-name.d.mts +1 -5
- package/dist/db/adapter/index.d.mts +7 -32
- package/dist/db/adapter/types.d.mts +5 -17
- package/dist/db/adapter/utils.d.mts +0 -1
- package/dist/db/database-index.d.mts +44 -0
- package/dist/db/database-index.mjs +168 -0
- package/dist/db/get-tables.d.mts +7 -1
- package/dist/db/get-tables.mjs +47 -6
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +2 -2
- package/dist/db/internal.d.mts +3 -0
- package/dist/db/internal.mjs +3 -0
- package/dist/db/plugin.d.mts +4 -3
- package/dist/db/schema/account.d.mts +16 -3
- package/dist/db/schema/account.mjs +35 -2
- package/dist/db/schema/rate-limit.d.mts +1 -1
- package/dist/db/schema/rate-limit.mjs +9 -0
- package/dist/db/schema/session.d.mts +1 -1
- package/dist/db/schema/shared.d.mts +0 -1
- package/dist/db/schema/user.d.mts +1 -1
- package/dist/db/schema/verification.d.mts +1 -1
- package/dist/db/type.d.mts +17 -9
- package/dist/env/logger.d.mts +25 -25
- package/dist/error/codes.d.mts +0 -1
- package/dist/error/index.d.mts +0 -1
- package/dist/index.d.mts +1 -1
- package/dist/instrumentation/attributes.d.mts +0 -1
- package/dist/instrumentation/pure.index.d.mts +0 -1
- package/dist/instrumentation/tracer.mjs +1 -1
- package/dist/oauth2/authorization-params.d.mts +0 -1
- package/dist/oauth2/client-assertion.d.mts +3 -13
- package/dist/oauth2/client-credentials-token.d.mts +3 -17
- package/dist/oauth2/client-credentials-token.mjs +1 -4
- package/dist/oauth2/create-authorization-url.d.mts +3 -21
- package/dist/oauth2/dpop.d.mts +2 -23
- package/dist/oauth2/dpop.mjs +1 -1
- package/dist/oauth2/index.d.mts +3 -3
- package/dist/oauth2/index.mjs +2 -2
- package/dist/oauth2/oauth-provider.d.mts +94 -36
- package/dist/oauth2/refresh-access-token.d.mts +3 -19
- package/dist/oauth2/refresh-access-token.mjs +3 -9
- package/dist/oauth2/reject-redirects.mjs +1 -1
- package/dist/oauth2/token-endpoint-auth.d.mts +0 -1
- package/dist/oauth2/utils.d.mts +0 -1
- package/dist/oauth2/utils.mjs +2 -3
- package/dist/oauth2/validate-authorization-code.d.mts +5 -29
- package/dist/oauth2/verify-id-token.d.mts +3 -2
- package/dist/oauth2/verify-id-token.mjs +3 -3
- package/dist/oauth2/verify.d.mts +18 -9
- package/dist/oauth2/verify.mjs +68 -5
- package/dist/social-providers/apple.d.mts +9 -24
- package/dist/social-providers/apple.mjs +2 -1
- package/dist/social-providers/atlassian.d.mts +18 -19
- package/dist/social-providers/atlassian.mjs +1 -1
- package/dist/social-providers/cognito.d.mts +33 -22
- package/dist/social-providers/cognito.mjs +2 -2
- package/dist/social-providers/discord.d.mts +7 -20
- package/dist/social-providers/discord.mjs +1 -1
- package/dist/social-providers/dropbox.d.mts +7 -22
- package/dist/social-providers/dropbox.mjs +1 -1
- package/dist/social-providers/facebook.d.mts +19 -27
- package/dist/social-providers/facebook.mjs +6 -17
- package/dist/social-providers/figma.d.mts +7 -22
- package/dist/social-providers/figma.mjs +1 -1
- package/dist/social-providers/github.d.mts +7 -23
- package/dist/social-providers/github.mjs +1 -1
- package/dist/social-providers/gitlab.d.mts +6 -43
- package/dist/social-providers/gitlab.mjs +1 -1
- package/dist/social-providers/google.d.mts +10 -32
- package/dist/social-providers/google.mjs +2 -1
- package/dist/social-providers/huggingface.d.mts +7 -22
- package/dist/social-providers/huggingface.mjs +1 -1
- package/dist/social-providers/index.d.mts +229 -787
- package/dist/social-providers/kakao.d.mts +8 -33
- package/dist/social-providers/kakao.mjs +1 -1
- package/dist/social-providers/kick.d.mts +7 -22
- package/dist/social-providers/kick.mjs +1 -1
- package/dist/social-providers/line.d.mts +8 -44
- package/dist/social-providers/line.mjs +4 -6
- package/dist/social-providers/linear.d.mts +7 -21
- package/dist/social-providers/linear.mjs +1 -1
- package/dist/social-providers/linkedin.d.mts +7 -21
- package/dist/social-providers/linkedin.mjs +1 -1
- package/dist/social-providers/microsoft-entra-id.d.mts +8 -18
- package/dist/social-providers/microsoft-entra-id.mjs +24 -4
- package/dist/social-providers/naver.d.mts +27 -42
- package/dist/social-providers/naver.mjs +1 -1
- package/dist/social-providers/notion.d.mts +7 -21
- package/dist/social-providers/notion.mjs +1 -1
- package/dist/social-providers/paybin.d.mts +8 -23
- package/dist/social-providers/paybin.mjs +2 -1
- package/dist/social-providers/paypal.d.mts +8 -33
- package/dist/social-providers/paypal.mjs +1 -1
- package/dist/social-providers/polar.d.mts +7 -22
- package/dist/social-providers/polar.mjs +1 -1
- package/dist/social-providers/railway.d.mts +7 -22
- package/dist/social-providers/railway.mjs +1 -1
- package/dist/social-providers/reddit.d.mts +7 -20
- package/dist/social-providers/reddit.mjs +1 -1
- package/dist/social-providers/roblox.d.mts +7 -20
- package/dist/social-providers/roblox.mjs +1 -1
- package/dist/social-providers/salesforce.d.mts +7 -22
- package/dist/social-providers/salesforce.mjs +1 -1
- package/dist/social-providers/slack.d.mts +7 -20
- package/dist/social-providers/slack.mjs +1 -1
- package/dist/social-providers/spotify.d.mts +7 -22
- package/dist/social-providers/spotify.mjs +1 -1
- package/dist/social-providers/tiktok.d.mts +10 -22
- package/dist/social-providers/tiktok.mjs +1 -1
- package/dist/social-providers/twitch.d.mts +7 -20
- package/dist/social-providers/twitch.mjs +1 -1
- package/dist/social-providers/twitter.d.mts +29 -26
- package/dist/social-providers/twitter.mjs +1 -1
- package/dist/social-providers/vercel.d.mts +7 -22
- package/dist/social-providers/vercel.mjs +1 -1
- package/dist/social-providers/vk.d.mts +8 -24
- package/dist/social-providers/vk.mjs +5 -6
- package/dist/social-providers/wechat.d.mts +7 -19
- package/dist/social-providers/wechat.mjs +1 -1
- package/dist/social-providers/zoom.d.mts +9 -25
- package/dist/social-providers/zoom.mjs +1 -1
- package/dist/types/context.d.mts +16 -9
- package/dist/types/cookie.d.mts +0 -1
- package/dist/types/helper.d.mts +1 -1
- package/dist/types/index.d.mts +1 -1
- package/dist/types/init-options.d.mts +37 -26
- package/dist/types/plugin-client.d.mts +1 -3
- package/dist/types/plugin.d.mts +2 -2
- package/dist/utils/async.d.mts +0 -1
- package/dist/utils/db.d.mts +1 -0
- package/dist/utils/deprecate.d.mts +0 -1
- package/dist/utils/error-codes.d.mts +2 -2
- package/dist/utils/host.d.mts +27 -1
- package/dist/utils/host.mjs +1 -1
- package/dist/utils/ip.d.mts +1 -0
- package/dist/utils/ip.mjs +1 -1
- package/dist/utils/is-api-error.d.mts +0 -1
- package/dist/utils/redirect-uri.d.mts +6 -2
- package/dist/utils/redirect-uri.mjs +11 -1
- package/package.json +10 -2
- package/src/context/request-state.ts +26 -6
- package/src/context/transaction.ts +37 -18
- package/src/db/adapter/factory.ts +34 -28
- package/src/db/adapter/get-default-model-name.ts +23 -14
- package/src/db/database-index.ts +351 -0
- package/src/db/get-tables.ts +89 -9
- package/src/db/index.ts +4 -0
- package/src/db/internal.ts +12 -0
- package/src/db/plugin.ts +3 -1
- package/src/db/schema/account.ts +27 -1
- package/src/db/schema/user.ts +1 -1
- package/src/db/type.ts +12 -0
- package/src/error/codes.ts +1 -0
- package/src/oauth2/index.ts +5 -0
- package/src/oauth2/oauth-provider.ts +105 -36
- package/src/oauth2/verify-id-token.ts +4 -2
- package/src/oauth2/verify.ts +121 -12
- package/src/social-providers/apple.ts +2 -1
- package/src/social-providers/atlassian.ts +1 -1
- package/src/social-providers/cognito.ts +2 -2
- package/src/social-providers/discord.ts +1 -1
- package/src/social-providers/dropbox.ts +1 -1
- package/src/social-providers/facebook.ts +21 -28
- package/src/social-providers/figma.ts +1 -1
- package/src/social-providers/github.ts +1 -1
- package/src/social-providers/gitlab.ts +1 -1
- package/src/social-providers/google.ts +2 -1
- package/src/social-providers/huggingface.ts +1 -1
- package/src/social-providers/kakao.ts +1 -1
- package/src/social-providers/kick.ts +1 -1
- package/src/social-providers/line.ts +7 -12
- package/src/social-providers/linear.ts +1 -1
- package/src/social-providers/linkedin.ts +1 -1
- package/src/social-providers/microsoft-entra-id.ts +36 -27
- package/src/social-providers/naver.ts +1 -1
- package/src/social-providers/notion.ts +1 -1
- package/src/social-providers/paybin.ts +2 -1
- package/src/social-providers/paypal.ts +1 -1
- package/src/social-providers/polar.ts +1 -1
- package/src/social-providers/railway.ts +1 -1
- package/src/social-providers/reddit.ts +1 -1
- package/src/social-providers/roblox.ts +1 -1
- package/src/social-providers/salesforce.ts +1 -1
- package/src/social-providers/slack.ts +1 -1
- package/src/social-providers/spotify.ts +1 -1
- package/src/social-providers/tiktok.ts +2 -2
- package/src/social-providers/twitch.ts +1 -1
- package/src/social-providers/twitter.ts +1 -1
- package/src/social-providers/vercel.ts +1 -1
- package/src/social-providers/vk.ts +2 -2
- package/src/social-providers/wechat.ts +1 -1
- package/src/social-providers/zoom.ts +1 -1
- package/src/types/context.ts +21 -14
- package/src/types/init-options.ts +15 -14
- package/src/utils/redirect-uri.ts +20 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { OAuth2Tokens, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
1
|
+
import { OAuth2Tokens, OAuth2UserInfo, OAuthAccountKeyContext, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
2
|
+
import "../oauth2/index.mjs";
|
|
2
3
|
//#region src/social-providers/dropbox.d.ts
|
|
3
4
|
interface DropboxProfile {
|
|
4
5
|
account_id: string;
|
|
@@ -20,13 +21,8 @@ interface DropboxOptions extends ProviderOptions<DropboxProfile> {
|
|
|
20
21
|
declare const dropbox: (options: DropboxOptions) => {
|
|
21
22
|
id: "dropbox";
|
|
22
23
|
name: string;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
scopes,
|
|
26
|
-
codeVerifier,
|
|
27
|
-
redirectURI,
|
|
28
|
-
additionalParams
|
|
29
|
-
}: {
|
|
24
|
+
accountSubject: ({ profile }: OAuthAccountKeyContext<DropboxProfile>) => string;
|
|
25
|
+
createAuthorizationURL: ({ state, scopes, codeVerifier, redirectURI, additionalParams }: {
|
|
30
26
|
state: string;
|
|
31
27
|
codeVerifier: string;
|
|
32
28
|
scopes?: string[] | undefined;
|
|
@@ -36,11 +32,7 @@ declare const dropbox: (options: DropboxOptions) => {
|
|
|
36
32
|
idTokenNonce?: string | undefined;
|
|
37
33
|
additionalParams?: Record<string, string> | undefined;
|
|
38
34
|
}) => Promise<URL>;
|
|
39
|
-
validateAuthorizationCode: ({
|
|
40
|
-
code,
|
|
41
|
-
codeVerifier,
|
|
42
|
-
redirectURI
|
|
43
|
-
}: {
|
|
35
|
+
validateAuthorizationCode: ({ code, codeVerifier, redirectURI }: {
|
|
44
36
|
code: string;
|
|
45
37
|
redirectURI: string;
|
|
46
38
|
codeVerifier?: string | undefined;
|
|
@@ -57,15 +49,8 @@ declare const dropbox: (options: DropboxOptions) => {
|
|
|
57
49
|
email?: string;
|
|
58
50
|
} | undefined;
|
|
59
51
|
}): Promise<{
|
|
60
|
-
user:
|
|
61
|
-
|
|
62
|
-
name?: string;
|
|
63
|
-
email?: string | null;
|
|
64
|
-
image?: string;
|
|
65
|
-
emailVerified: boolean;
|
|
66
|
-
[key: string]: any;
|
|
67
|
-
};
|
|
68
|
-
data: any;
|
|
52
|
+
user: OAuth2UserInfo & Record<string, unknown>;
|
|
53
|
+
data: DropboxProfile;
|
|
69
54
|
} | null>;
|
|
70
55
|
options: DropboxOptions;
|
|
71
56
|
};
|
|
@@ -8,6 +8,7 @@ const dropbox = (options) => {
|
|
|
8
8
|
return {
|
|
9
9
|
id: "dropbox",
|
|
10
10
|
name: "Dropbox",
|
|
11
|
+
accountSubject: ({ profile }) => profile.account_id,
|
|
11
12
|
createAuthorizationURL: async ({ state, scopes, codeVerifier, redirectURI, additionalParams }) => {
|
|
12
13
|
const _scopes = options.disableDefaultScope ? [] : ["account_info.read"];
|
|
13
14
|
if (options.scope) _scopes.push(...options.scope);
|
|
@@ -56,7 +57,6 @@ const dropbox = (options) => {
|
|
|
56
57
|
const userMap = await options.mapProfileToUser?.(profile);
|
|
57
58
|
return {
|
|
58
59
|
user: {
|
|
59
|
-
id: profile.account_id,
|
|
60
60
|
name: profile.name?.display_name,
|
|
61
61
|
email: profile.email,
|
|
62
62
|
emailVerified: profile.email_verified || false,
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { OAuth2Tokens, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { OAuth2Tokens, OAuth2UserInfo, OAuthAccountKeyContext, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
2
|
+
import "../oauth2/index.mjs";
|
|
4
3
|
//#region src/social-providers/facebook.d.ts
|
|
5
|
-
interface
|
|
4
|
+
interface FacebookGraphProfile {
|
|
6
5
|
id: string;
|
|
7
6
|
name: string;
|
|
8
7
|
email?: string;
|
|
@@ -16,6 +15,13 @@ interface FacebookProfile {
|
|
|
16
15
|
};
|
|
17
16
|
};
|
|
18
17
|
}
|
|
18
|
+
interface FacebookLimitedLoginProfile {
|
|
19
|
+
sub: string;
|
|
20
|
+
email: string;
|
|
21
|
+
name: string;
|
|
22
|
+
picture: string;
|
|
23
|
+
}
|
|
24
|
+
type FacebookProfile = FacebookGraphProfile | FacebookLimitedLoginProfile;
|
|
19
25
|
interface FacebookOptions extends ProviderOptions<FacebookProfile> {
|
|
20
26
|
clientId: string | string[];
|
|
21
27
|
/**
|
|
@@ -32,13 +38,9 @@ interface FacebookOptions extends ProviderOptions<FacebookProfile> {
|
|
|
32
38
|
declare const facebook: (options: FacebookOptions) => {
|
|
33
39
|
id: "facebook";
|
|
34
40
|
name: string;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
redirectURI,
|
|
39
|
-
loginHint,
|
|
40
|
-
additionalParams
|
|
41
|
-
}: {
|
|
41
|
+
accountSubject: ({ profile }: OAuthAccountKeyContext<FacebookProfile>) => string;
|
|
42
|
+
accountIssuer: string;
|
|
43
|
+
createAuthorizationURL({ state, scopes, redirectURI, loginHint, additionalParams }: {
|
|
42
44
|
state: string;
|
|
43
45
|
codeVerifier: string;
|
|
44
46
|
scopes?: string[] | undefined;
|
|
@@ -48,10 +50,7 @@ declare const facebook: (options: FacebookOptions) => {
|
|
|
48
50
|
idTokenNonce?: string | undefined;
|
|
49
51
|
additionalParams?: Record<string, string> | undefined;
|
|
50
52
|
}): Promise<URL>;
|
|
51
|
-
validateAuthorizationCode: ({
|
|
52
|
-
code,
|
|
53
|
-
redirectURI
|
|
54
|
-
}: {
|
|
53
|
+
validateAuthorizationCode: ({ code, redirectURI }: {
|
|
55
54
|
code: string;
|
|
56
55
|
redirectURI: string;
|
|
57
56
|
codeVerifier?: string | undefined;
|
|
@@ -59,12 +58,12 @@ declare const facebook: (options: FacebookOptions) => {
|
|
|
59
58
|
}) => Promise<OAuth2Tokens>;
|
|
60
59
|
idToken: {
|
|
61
60
|
jwks: {
|
|
62
|
-
(protectedHeader?: jose.JWSHeaderParameters, token?: jose.FlattenedJWSInput): Promise<jose.CryptoKey>;
|
|
61
|
+
(protectedHeader?: import("jose").JWSHeaderParameters, token?: import("jose").FlattenedJWSInput): Promise<import("jose").CryptoKey>;
|
|
63
62
|
coolingDown: boolean;
|
|
64
63
|
fresh: boolean;
|
|
65
64
|
reloading: boolean;
|
|
66
65
|
reload: () => Promise<void>;
|
|
67
|
-
jwks: () => jose.JSONWebKeySet | undefined;
|
|
66
|
+
jwks: () => import("jose").JSONWebKeySet | undefined;
|
|
68
67
|
};
|
|
69
68
|
issuer: string;
|
|
70
69
|
audience: string | string[];
|
|
@@ -82,17 +81,10 @@ declare const facebook: (options: FacebookOptions) => {
|
|
|
82
81
|
email?: string;
|
|
83
82
|
} | undefined;
|
|
84
83
|
}): Promise<{
|
|
85
|
-
user:
|
|
86
|
-
|
|
87
|
-
name?: string;
|
|
88
|
-
email?: string | null;
|
|
89
|
-
image?: string;
|
|
90
|
-
emailVerified: boolean;
|
|
91
|
-
[key: string]: any;
|
|
92
|
-
};
|
|
93
|
-
data: any;
|
|
84
|
+
user: OAuth2UserInfo & Record<string, unknown>;
|
|
85
|
+
data: FacebookProfile;
|
|
94
86
|
} | null>;
|
|
95
87
|
options: FacebookOptions;
|
|
96
88
|
};
|
|
97
89
|
//#endregion
|
|
98
|
-
export { FacebookOptions, FacebookProfile, facebook };
|
|
90
|
+
export { FacebookGraphProfile, FacebookLimitedLoginProfile, FacebookOptions, FacebookProfile, facebook };
|
|
@@ -39,6 +39,8 @@ const facebook = (options) => {
|
|
|
39
39
|
return {
|
|
40
40
|
id: "facebook",
|
|
41
41
|
name: "Facebook",
|
|
42
|
+
accountSubject: ({ profile }) => "sub" in profile ? profile.sub : profile.id,
|
|
43
|
+
accountIssuer: "https://www.facebook.com",
|
|
42
44
|
async createAuthorizationURL({ state, scopes, redirectURI, loginHint, additionalParams }) {
|
|
43
45
|
if (!getPrimaryClientId(options.clientId) || !options.clientSecret) {
|
|
44
46
|
logger.error("Client ID and client secret are required for Facebook. Make sure to provide them in the options.");
|
|
@@ -91,24 +93,12 @@ const facebook = (options) => {
|
|
|
91
93
|
if (options.getUserInfo) return options.getUserInfo(token);
|
|
92
94
|
if (token.idToken && token.idToken.split(".").length === 3) {
|
|
93
95
|
const profile = decodeJwt(token.idToken);
|
|
94
|
-
const
|
|
95
|
-
id: profile.sub,
|
|
96
|
-
name: profile.name,
|
|
97
|
-
email: profile.email,
|
|
98
|
-
picture: { data: {
|
|
99
|
-
url: profile.picture,
|
|
100
|
-
height: 100,
|
|
101
|
-
width: 100,
|
|
102
|
-
is_silhouette: false
|
|
103
|
-
} }
|
|
104
|
-
};
|
|
105
|
-
const userMap = await options.mapProfileToUser?.({
|
|
106
|
-
...user,
|
|
107
|
-
email_verified: false
|
|
108
|
-
});
|
|
96
|
+
const userMap = await options.mapProfileToUser?.(profile);
|
|
109
97
|
return {
|
|
110
98
|
user: {
|
|
111
|
-
|
|
99
|
+
name: profile.name,
|
|
100
|
+
email: profile.email,
|
|
101
|
+
image: profile.picture,
|
|
112
102
|
emailVerified: false,
|
|
113
103
|
...userMap
|
|
114
104
|
},
|
|
@@ -134,7 +124,6 @@ const facebook = (options) => {
|
|
|
134
124
|
const userMap = await options.mapProfileToUser?.(profile);
|
|
135
125
|
return {
|
|
136
126
|
user: {
|
|
137
|
-
id: profile.id,
|
|
138
127
|
name: profile.name,
|
|
139
128
|
email: profile.email,
|
|
140
129
|
image: profile.picture.data.url,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { OAuth2Tokens, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
1
|
+
import { OAuth2Tokens, OAuth2UserInfo, OAuthAccountKeyContext, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
2
|
+
import "../oauth2/index.mjs";
|
|
2
3
|
//#region src/social-providers/figma.d.ts
|
|
3
4
|
interface FigmaProfile {
|
|
4
5
|
id: string;
|
|
@@ -12,13 +13,8 @@ interface FigmaOptions extends ProviderOptions<FigmaProfile> {
|
|
|
12
13
|
declare const figma: (options: FigmaOptions) => {
|
|
13
14
|
id: "figma";
|
|
14
15
|
name: string;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
scopes,
|
|
18
|
-
codeVerifier,
|
|
19
|
-
redirectURI,
|
|
20
|
-
additionalParams
|
|
21
|
-
}: {
|
|
16
|
+
accountSubject: ({ profile }: OAuthAccountKeyContext<FigmaProfile>) => string;
|
|
17
|
+
createAuthorizationURL({ state, scopes, codeVerifier, redirectURI, additionalParams }: {
|
|
22
18
|
state: string;
|
|
23
19
|
codeVerifier: string;
|
|
24
20
|
scopes?: string[] | undefined;
|
|
@@ -28,11 +24,7 @@ declare const figma: (options: FigmaOptions) => {
|
|
|
28
24
|
idTokenNonce?: string | undefined;
|
|
29
25
|
additionalParams?: Record<string, string> | undefined;
|
|
30
26
|
}): Promise<URL>;
|
|
31
|
-
validateAuthorizationCode: ({
|
|
32
|
-
code,
|
|
33
|
-
codeVerifier,
|
|
34
|
-
redirectURI
|
|
35
|
-
}: {
|
|
27
|
+
validateAuthorizationCode: ({ code, codeVerifier, redirectURI }: {
|
|
36
28
|
code: string;
|
|
37
29
|
redirectURI: string;
|
|
38
30
|
codeVerifier?: string | undefined;
|
|
@@ -49,15 +41,8 @@ declare const figma: (options: FigmaOptions) => {
|
|
|
49
41
|
email?: string;
|
|
50
42
|
} | undefined;
|
|
51
43
|
}): Promise<{
|
|
52
|
-
user:
|
|
53
|
-
|
|
54
|
-
name?: string;
|
|
55
|
-
email?: string | null;
|
|
56
|
-
image?: string;
|
|
57
|
-
emailVerified: boolean;
|
|
58
|
-
[key: string]: any;
|
|
59
|
-
};
|
|
60
|
-
data: any;
|
|
44
|
+
user: OAuth2UserInfo & Record<string, unknown>;
|
|
45
|
+
data: FigmaProfile;
|
|
61
46
|
} | null>;
|
|
62
47
|
options: FigmaOptions;
|
|
63
48
|
};
|
|
@@ -10,6 +10,7 @@ const figma = (options) => {
|
|
|
10
10
|
return {
|
|
11
11
|
id: "figma",
|
|
12
12
|
name: "Figma",
|
|
13
|
+
accountSubject: ({ profile }) => profile.id,
|
|
13
14
|
async createAuthorizationURL({ state, scopes, codeVerifier, redirectURI, additionalParams }) {
|
|
14
15
|
if (!options.clientId || !options.clientSecret) {
|
|
15
16
|
logger.error("Client Id and Client Secret are required for Figma. Make sure to provide them in the options.");
|
|
@@ -63,7 +64,6 @@ const figma = (options) => {
|
|
|
63
64
|
const userMap = await options.mapProfileToUser?.(profile);
|
|
64
65
|
return {
|
|
65
66
|
user: {
|
|
66
|
-
id: profile.id,
|
|
67
67
|
name: profile.handle,
|
|
68
68
|
email: profile.email,
|
|
69
69
|
image: profile.img_url,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { OAuth2Tokens, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
1
|
+
import { OAuth2Tokens, OAuth2UserInfo, OAuthAccountKeyContext, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
2
|
+
import "../oauth2/index.mjs";
|
|
2
3
|
//#region src/social-providers/github.d.ts
|
|
3
4
|
interface GithubProfile {
|
|
4
5
|
login: string;
|
|
@@ -52,14 +53,8 @@ interface GithubOptions extends ProviderOptions<GithubProfile> {
|
|
|
52
53
|
declare const github: (options: GithubOptions) => {
|
|
53
54
|
id: "github";
|
|
54
55
|
name: string;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
scopes,
|
|
58
|
-
loginHint,
|
|
59
|
-
codeVerifier,
|
|
60
|
-
redirectURI,
|
|
61
|
-
additionalParams
|
|
62
|
-
}: {
|
|
56
|
+
accountSubject: ({ profile }: OAuthAccountKeyContext<GithubProfile>) => string;
|
|
57
|
+
createAuthorizationURL({ state, scopes, loginHint, codeVerifier, redirectURI, additionalParams }: {
|
|
63
58
|
state: string;
|
|
64
59
|
codeVerifier: string;
|
|
65
60
|
scopes?: string[] | undefined;
|
|
@@ -69,11 +64,7 @@ declare const github: (options: GithubOptions) => {
|
|
|
69
64
|
idTokenNonce?: string | undefined;
|
|
70
65
|
additionalParams?: Record<string, string> | undefined;
|
|
71
66
|
}): Promise<URL>;
|
|
72
|
-
validateAuthorizationCode: ({
|
|
73
|
-
code,
|
|
74
|
-
codeVerifier,
|
|
75
|
-
redirectURI
|
|
76
|
-
}: {
|
|
67
|
+
validateAuthorizationCode: ({ code, codeVerifier, redirectURI }: {
|
|
77
68
|
code: string;
|
|
78
69
|
redirectURI: string;
|
|
79
70
|
codeVerifier?: string | undefined;
|
|
@@ -90,15 +81,8 @@ declare const github: (options: GithubOptions) => {
|
|
|
90
81
|
email?: string;
|
|
91
82
|
} | undefined;
|
|
92
83
|
}): Promise<{
|
|
93
|
-
user:
|
|
94
|
-
|
|
95
|
-
name?: string;
|
|
96
|
-
email?: string | null;
|
|
97
|
-
image?: string;
|
|
98
|
-
emailVerified: boolean;
|
|
99
|
-
[key: string]: any;
|
|
100
|
-
};
|
|
101
|
-
data: any;
|
|
84
|
+
user: OAuth2UserInfo & Record<string, unknown>;
|
|
85
|
+
data: GithubProfile;
|
|
102
86
|
} | null>;
|
|
103
87
|
options: GithubOptions;
|
|
104
88
|
};
|
|
@@ -10,6 +10,7 @@ const github = (options) => {
|
|
|
10
10
|
return {
|
|
11
11
|
id: "github",
|
|
12
12
|
name: "GitHub",
|
|
13
|
+
accountSubject: ({ profile }) => profile.id,
|
|
13
14
|
createAuthorizationURL({ state, scopes, loginHint, codeVerifier, redirectURI, additionalParams }) {
|
|
14
15
|
const _scopes = options.disableDefaultScope ? [] : ["read:user", "user:email"];
|
|
15
16
|
if (options.scope) _scopes.push(...options.scope);
|
|
@@ -76,7 +77,6 @@ const github = (options) => {
|
|
|
76
77
|
const userMap = await options.mapProfileToUser?.(profile);
|
|
77
78
|
return {
|
|
78
79
|
user: {
|
|
79
|
-
id: profile.id,
|
|
80
80
|
name: profile.name || profile.login || "",
|
|
81
81
|
email: profile.email,
|
|
82
82
|
image: profile.avatar_url,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { OAuth2Tokens, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
1
|
+
import { OAuth2Tokens, OAuth2UserInfo, OAuthAccountKeyContext, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
2
|
+
import "../oauth2/index.mjs";
|
|
2
3
|
//#region src/social-providers/gitlab.d.ts
|
|
3
4
|
interface GitlabProfile extends Record<string, any> {
|
|
4
5
|
id: number;
|
|
@@ -52,14 +53,8 @@ interface GitlabOptions extends ProviderOptions<GitlabProfile> {
|
|
|
52
53
|
declare const gitlab: (options: GitlabOptions) => {
|
|
53
54
|
id: "gitlab";
|
|
54
55
|
name: string;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
scopes,
|
|
58
|
-
codeVerifier,
|
|
59
|
-
loginHint,
|
|
60
|
-
redirectURI,
|
|
61
|
-
additionalParams
|
|
62
|
-
}: {
|
|
56
|
+
accountSubject: ({ profile }: OAuthAccountKeyContext<GitlabProfile>) => number;
|
|
57
|
+
createAuthorizationURL: ({ state, scopes, codeVerifier, loginHint, redirectURI, additionalParams }: {
|
|
63
58
|
state: string;
|
|
64
59
|
codeVerifier: string;
|
|
65
60
|
scopes?: string[] | undefined;
|
|
@@ -69,11 +64,7 @@ declare const gitlab: (options: GitlabOptions) => {
|
|
|
69
64
|
idTokenNonce?: string | undefined;
|
|
70
65
|
additionalParams?: Record<string, string> | undefined;
|
|
71
66
|
}) => Promise<URL>;
|
|
72
|
-
validateAuthorizationCode: ({
|
|
73
|
-
code,
|
|
74
|
-
redirectURI,
|
|
75
|
-
codeVerifier
|
|
76
|
-
}: {
|
|
67
|
+
validateAuthorizationCode: ({ code, redirectURI, codeVerifier }: {
|
|
77
68
|
code: string;
|
|
78
69
|
redirectURI: string;
|
|
79
70
|
codeVerifier?: string | undefined;
|
|
@@ -90,35 +81,7 @@ declare const gitlab: (options: GitlabOptions) => {
|
|
|
90
81
|
email?: string;
|
|
91
82
|
} | undefined;
|
|
92
83
|
}): Promise<{
|
|
93
|
-
user:
|
|
94
|
-
id: string;
|
|
95
|
-
name?: string;
|
|
96
|
-
email?: string | null;
|
|
97
|
-
image?: string;
|
|
98
|
-
emailVerified: boolean;
|
|
99
|
-
[key: string]: any;
|
|
100
|
-
};
|
|
101
|
-
data: any;
|
|
102
|
-
} | {
|
|
103
|
-
user: {
|
|
104
|
-
id: number;
|
|
105
|
-
name: string;
|
|
106
|
-
email: string;
|
|
107
|
-
image: string;
|
|
108
|
-
emailVerified: boolean;
|
|
109
|
-
} | {
|
|
110
|
-
id: string | number;
|
|
111
|
-
name: string;
|
|
112
|
-
email: string | null;
|
|
113
|
-
image: string;
|
|
114
|
-
emailVerified: boolean;
|
|
115
|
-
} | {
|
|
116
|
-
id: string | number;
|
|
117
|
-
name: string;
|
|
118
|
-
email: string | null;
|
|
119
|
-
image: string;
|
|
120
|
-
emailVerified: boolean;
|
|
121
|
-
};
|
|
84
|
+
user: OAuth2UserInfo & Record<string, unknown>;
|
|
122
85
|
data: GitlabProfile;
|
|
123
86
|
} | null>;
|
|
124
87
|
options: GitlabOptions;
|
|
@@ -20,6 +20,7 @@ const gitlab = (options) => {
|
|
|
20
20
|
return {
|
|
21
21
|
id: issuerId,
|
|
22
22
|
name: "Gitlab",
|
|
23
|
+
accountSubject: ({ profile }) => profile.id,
|
|
23
24
|
createAuthorizationURL: async ({ state, scopes, codeVerifier, loginHint, redirectURI, additionalParams }) => {
|
|
24
25
|
const _scopes = options.disableDefaultScope ? [] : ["read_user"];
|
|
25
26
|
if (options.scope) _scopes.push(...options.scope);
|
|
@@ -63,7 +64,6 @@ const gitlab = (options) => {
|
|
|
63
64
|
const userMap = await options.mapProfileToUser?.(profile);
|
|
64
65
|
return {
|
|
65
66
|
user: {
|
|
66
|
-
id: profile.id,
|
|
67
67
|
name: profile.name ?? profile.username ?? "",
|
|
68
68
|
email: profile.email,
|
|
69
69
|
image: profile.avatar_url,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { OAuth2Tokens, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
2
|
-
import
|
|
1
|
+
import { OAuth2Tokens, OAuth2UserInfo, OAuthAccountKeyContext, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
2
|
+
import "../oauth2/index.mjs";
|
|
3
3
|
import { JWTPayload } from "jose";
|
|
4
|
-
|
|
5
4
|
//#region src/social-providers/google.d.ts
|
|
6
5
|
interface GoogleProfile {
|
|
7
6
|
aud: string;
|
|
@@ -69,11 +68,7 @@ interface VerifyGoogleIdTokenOptions {
|
|
|
69
68
|
* Verifies a Google ID token against Google's issuer, audience, signature,
|
|
70
69
|
* expiry, and maximum token age.
|
|
71
70
|
*/
|
|
72
|
-
declare const verifyGoogleIdToken: ({
|
|
73
|
-
token,
|
|
74
|
-
audience,
|
|
75
|
-
nonce
|
|
76
|
-
}: VerifyGoogleIdTokenOptions) => Promise<JWTPayload | null>;
|
|
71
|
+
declare const verifyGoogleIdToken: ({ token, audience, nonce }: VerifyGoogleIdTokenOptions) => Promise<JWTPayload | null>;
|
|
77
72
|
/**
|
|
78
73
|
* Checks whether Google's verified `hd` claim satisfies the configured hosted
|
|
79
74
|
* domain restriction. `hd: "*"` accepts any Google Workspace hosted domain.
|
|
@@ -82,15 +77,9 @@ declare const isGoogleHostedDomainAllowed: (configuredHostedDomain: string | und
|
|
|
82
77
|
declare const google: (options: GoogleOptions) => {
|
|
83
78
|
id: "google";
|
|
84
79
|
name: string;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
codeVerifier,
|
|
89
|
-
redirectURI,
|
|
90
|
-
loginHint,
|
|
91
|
-
display,
|
|
92
|
-
additionalParams
|
|
93
|
-
}: {
|
|
80
|
+
accountSubject: ({ profile }: OAuthAccountKeyContext<GoogleProfile>) => string;
|
|
81
|
+
accountIssuer: string;
|
|
82
|
+
createAuthorizationURL({ state, scopes, codeVerifier, redirectURI, loginHint, display, additionalParams }: {
|
|
94
83
|
state: string;
|
|
95
84
|
codeVerifier: string;
|
|
96
85
|
scopes?: string[] | undefined;
|
|
@@ -100,11 +89,7 @@ declare const google: (options: GoogleOptions) => {
|
|
|
100
89
|
idTokenNonce?: string | undefined;
|
|
101
90
|
additionalParams?: Record<string, string> | undefined;
|
|
102
91
|
}): Promise<URL>;
|
|
103
|
-
validateAuthorizationCode: ({
|
|
104
|
-
code,
|
|
105
|
-
codeVerifier,
|
|
106
|
-
redirectURI
|
|
107
|
-
}: {
|
|
92
|
+
validateAuthorizationCode: ({ code, codeVerifier, redirectURI }: {
|
|
108
93
|
code: string;
|
|
109
94
|
redirectURI: string;
|
|
110
95
|
codeVerifier?: string | undefined;
|
|
@@ -112,7 +97,7 @@ declare const google: (options: GoogleOptions) => {
|
|
|
112
97
|
}) => Promise<OAuth2Tokens>;
|
|
113
98
|
refreshAccessToken: (refreshToken: string) => Promise<OAuth2Tokens>;
|
|
114
99
|
idToken: {
|
|
115
|
-
jwks: (header: jose.JWTHeaderParameters) => Promise<Uint8Array<ArrayBufferLike> | CryptoKey>;
|
|
100
|
+
jwks: (header: import("jose").JWTHeaderParameters) => Promise<Uint8Array<ArrayBufferLike> | CryptoKey>;
|
|
116
101
|
issuer: string[];
|
|
117
102
|
audience: string | string[];
|
|
118
103
|
maxTokenAge: string;
|
|
@@ -128,15 +113,8 @@ declare const google: (options: GoogleOptions) => {
|
|
|
128
113
|
email?: string;
|
|
129
114
|
} | undefined;
|
|
130
115
|
}): Promise<{
|
|
131
|
-
user:
|
|
132
|
-
|
|
133
|
-
name?: string;
|
|
134
|
-
email?: string | null;
|
|
135
|
-
image?: string;
|
|
136
|
-
emailVerified: boolean;
|
|
137
|
-
[key: string]: any;
|
|
138
|
-
};
|
|
139
|
-
data: any;
|
|
116
|
+
user: OAuth2UserInfo & Record<string, unknown>;
|
|
117
|
+
data: GoogleProfile;
|
|
140
118
|
} | null>;
|
|
141
119
|
options: GoogleOptions;
|
|
142
120
|
};
|
|
@@ -53,6 +53,8 @@ const google = (options) => {
|
|
|
53
53
|
return {
|
|
54
54
|
id: "google",
|
|
55
55
|
name: "Google",
|
|
56
|
+
accountSubject: ({ profile }) => profile.sub,
|
|
57
|
+
accountIssuer: "https://accounts.google.com",
|
|
56
58
|
async createAuthorizationURL({ state, scopes, codeVerifier, redirectURI, loginHint, display, additionalParams }) {
|
|
57
59
|
if (!getPrimaryClientId(options.clientId) || !options.clientSecret) {
|
|
58
60
|
logger.error("Client Id and Client Secret is required for Google. Make sure to provide them in the options.");
|
|
@@ -123,7 +125,6 @@ const google = (options) => {
|
|
|
123
125
|
const userMap = await options.mapProfileToUser?.(user);
|
|
124
126
|
return {
|
|
125
127
|
user: {
|
|
126
|
-
id: user.sub,
|
|
127
128
|
name: user.name,
|
|
128
129
|
email: user.email,
|
|
129
130
|
image: user.picture,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { OAuth2Tokens, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
1
|
+
import { OAuth2Tokens, OAuth2UserInfo, OAuthAccountKeyContext, ProviderOptions } from "../oauth2/oauth-provider.mjs";
|
|
2
|
+
import "../oauth2/index.mjs";
|
|
2
3
|
//#region src/social-providers/huggingface.d.ts
|
|
3
4
|
interface HuggingFaceProfile {
|
|
4
5
|
sub: string;
|
|
@@ -34,13 +35,8 @@ interface HuggingFaceOptions extends ProviderOptions<HuggingFaceProfile> {
|
|
|
34
35
|
declare const huggingface: (options: HuggingFaceOptions) => {
|
|
35
36
|
id: "huggingface";
|
|
36
37
|
name: string;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
scopes,
|
|
40
|
-
codeVerifier,
|
|
41
|
-
redirectURI,
|
|
42
|
-
additionalParams
|
|
43
|
-
}: {
|
|
38
|
+
accountSubject: ({ profile }: OAuthAccountKeyContext<HuggingFaceProfile>) => string;
|
|
39
|
+
createAuthorizationURL({ state, scopes, codeVerifier, redirectURI, additionalParams }: {
|
|
44
40
|
state: string;
|
|
45
41
|
codeVerifier: string;
|
|
46
42
|
scopes?: string[] | undefined;
|
|
@@ -50,11 +46,7 @@ declare const huggingface: (options: HuggingFaceOptions) => {
|
|
|
50
46
|
idTokenNonce?: string | undefined;
|
|
51
47
|
additionalParams?: Record<string, string> | undefined;
|
|
52
48
|
}): Promise<URL>;
|
|
53
|
-
validateAuthorizationCode: ({
|
|
54
|
-
code,
|
|
55
|
-
codeVerifier,
|
|
56
|
-
redirectURI
|
|
57
|
-
}: {
|
|
49
|
+
validateAuthorizationCode: ({ code, codeVerifier, redirectURI }: {
|
|
58
50
|
code: string;
|
|
59
51
|
redirectURI: string;
|
|
60
52
|
codeVerifier?: string | undefined;
|
|
@@ -71,15 +63,8 @@ declare const huggingface: (options: HuggingFaceOptions) => {
|
|
|
71
63
|
email?: string;
|
|
72
64
|
} | undefined;
|
|
73
65
|
}): Promise<{
|
|
74
|
-
user:
|
|
75
|
-
|
|
76
|
-
name?: string;
|
|
77
|
-
email?: string | null;
|
|
78
|
-
image?: string;
|
|
79
|
-
emailVerified: boolean;
|
|
80
|
-
[key: string]: any;
|
|
81
|
-
};
|
|
82
|
-
data: any;
|
|
66
|
+
user: OAuth2UserInfo & Record<string, unknown>;
|
|
67
|
+
data: HuggingFaceProfile;
|
|
83
68
|
} | null>;
|
|
84
69
|
options: HuggingFaceOptions;
|
|
85
70
|
};
|
|
@@ -8,6 +8,7 @@ const huggingface = (options) => {
|
|
|
8
8
|
return {
|
|
9
9
|
id: "huggingface",
|
|
10
10
|
name: "Hugging Face",
|
|
11
|
+
accountSubject: ({ profile }) => profile.sub,
|
|
11
12
|
createAuthorizationURL({ state, scopes, codeVerifier, redirectURI, additionalParams }) {
|
|
12
13
|
const _scopes = options.disableDefaultScope ? [] : [
|
|
13
14
|
"openid",
|
|
@@ -57,7 +58,6 @@ const huggingface = (options) => {
|
|
|
57
58
|
const userMap = await options.mapProfileToUser?.(profile);
|
|
58
59
|
return {
|
|
59
60
|
user: {
|
|
60
|
-
id: profile.sub,
|
|
61
61
|
name: profile.name || profile.preferred_username || "",
|
|
62
62
|
email: profile.email,
|
|
63
63
|
image: profile.picture,
|