antarctic 0.5.0 → 0.7.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 +252 -0
- package/dist/auth.d.ts +19 -11
- package/dist/auth.js +16 -23
- package/dist/index.d.ts +1 -1
- package/dist/providers/42.d.ts +4 -4
- package/dist/providers/42.js +9 -8
- package/dist/providers/amazon-cognito.d.ts +4 -4
- package/dist/providers/amazon-cognito.js +9 -8
- package/dist/providers/anilist.d.ts +4 -4
- package/dist/providers/anilist.js +10 -9
- package/dist/providers/apple.d.ts +3 -3
- package/dist/providers/apple.js +8 -7
- package/dist/providers/atlassian.d.ts +4 -4
- package/dist/providers/atlassian.js +9 -8
- package/dist/providers/auth0.d.ts +4 -4
- package/dist/providers/auth0.js +9 -8
- package/dist/providers/authentik.d.ts +4 -4
- package/dist/providers/authentik.js +9 -8
- package/dist/providers/autodesk.d.ts +4 -4
- package/dist/providers/autodesk.js +9 -8
- package/dist/providers/battlenet.d.ts +4 -4
- package/dist/providers/battlenet.js +9 -8
- package/dist/providers/bitbucket.d.ts +4 -4
- package/dist/providers/bitbucket.js +10 -9
- package/dist/providers/box.d.ts +4 -4
- package/dist/providers/box.js +9 -8
- package/dist/providers/bungie.d.ts +4 -4
- package/dist/providers/bungie.js +9 -8
- package/dist/providers/coinbase.d.ts +4 -4
- package/dist/providers/coinbase.js +9 -8
- package/dist/providers/discord.d.ts +4 -4
- package/dist/providers/discord.js +9 -8
- package/dist/providers/donation-alerts.d.ts +4 -4
- package/dist/providers/donation-alerts.js +9 -8
- package/dist/providers/dribbble.d.ts +4 -4
- package/dist/providers/dribbble.js +9 -8
- package/dist/providers/dropbox.d.ts +4 -4
- package/dist/providers/dropbox.js +9 -8
- package/dist/providers/epicgames.d.ts +4 -4
- package/dist/providers/epicgames.js +9 -8
- package/dist/providers/etsy.d.ts +4 -4
- package/dist/providers/etsy.js +8 -7
- package/dist/providers/facebook.d.ts +4 -4
- package/dist/providers/facebook.js +9 -8
- package/dist/providers/figma.d.ts +4 -4
- package/dist/providers/figma.js +9 -8
- package/dist/providers/gitea.d.ts +4 -4
- package/dist/providers/gitea.js +9 -8
- package/dist/providers/github.d.ts +4 -4
- package/dist/providers/github.js +9 -8
- package/dist/providers/gitlab.d.ts +4 -4
- package/dist/providers/gitlab.js +9 -8
- package/dist/providers/google.d.ts +4 -4
- package/dist/providers/google.js +9 -8
- package/dist/providers/intuit.d.ts +4 -4
- package/dist/providers/intuit.js +9 -8
- package/dist/providers/kakao.d.ts +4 -4
- package/dist/providers/kakao.js +9 -8
- package/dist/providers/keycloak.d.ts +4 -4
- package/dist/providers/keycloak.js +9 -8
- package/dist/providers/kick.d.ts +4 -4
- package/dist/providers/kick.js +9 -8
- package/dist/providers/lichess.d.ts +4 -4
- package/dist/providers/lichess.js +9 -8
- package/dist/providers/line.d.ts +4 -4
- package/dist/providers/line.js +9 -8
- package/dist/providers/linear.d.ts +4 -4
- package/dist/providers/linear.js +9 -8
- package/dist/providers/linkedin.d.ts +4 -4
- package/dist/providers/linkedin.js +9 -8
- package/dist/providers/mastodon.d.ts +4 -4
- package/dist/providers/mastodon.js +9 -8
- package/dist/providers/mercadolibre.d.ts +4 -4
- package/dist/providers/mercadolibre.js +10 -9
- package/dist/providers/mercadopago.d.ts +4 -4
- package/dist/providers/mercadopago.js +10 -9
- package/dist/providers/microsoft-entra-id.d.ts +4 -4
- package/dist/providers/microsoft-entra-id.js +9 -8
- package/dist/providers/myanimelist.d.ts +4 -4
- package/dist/providers/myanimelist.js +10 -9
- package/dist/providers/naver.d.ts +4 -4
- package/dist/providers/naver.js +10 -9
- package/dist/providers/notion.d.ts +4 -4
- package/dist/providers/notion.js +10 -9
- package/dist/providers/okta.d.ts +4 -4
- package/dist/providers/okta.js +9 -8
- package/dist/providers/osu.d.ts +4 -4
- package/dist/providers/osu.js +9 -8
- package/dist/providers/patreon.d.ts +4 -4
- package/dist/providers/patreon.js +9 -8
- package/dist/providers/polar.d.ts +4 -4
- package/dist/providers/polar.js +9 -8
- package/dist/providers/reddit.d.ts +4 -4
- package/dist/providers/reddit.js +9 -8
- package/dist/providers/roblox.d.ts +4 -4
- package/dist/providers/roblox.js +9 -8
- package/dist/providers/salesforce.d.ts +4 -4
- package/dist/providers/salesforce.js +9 -8
- package/dist/providers/shikimori.d.ts +4 -4
- package/dist/providers/shikimori.js +10 -9
- package/dist/providers/slack.d.ts +4 -4
- package/dist/providers/slack.js +9 -8
- package/dist/providers/spotify.d.ts +4 -4
- package/dist/providers/spotify.js +9 -8
- package/dist/providers/startgg.d.ts +4 -4
- package/dist/providers/startgg.js +8 -7
- package/dist/providers/strava.d.ts +4 -4
- package/dist/providers/strava.js +9 -8
- package/dist/providers/tiktok.d.ts +4 -4
- package/dist/providers/tiktok.js +9 -8
- package/dist/providers/tiltify.d.ts +4 -4
- package/dist/providers/tiltify.js +9 -8
- package/dist/providers/tumblr.d.ts +4 -4
- package/dist/providers/tumblr.js +9 -8
- package/dist/providers/twitch.d.ts +4 -4
- package/dist/providers/twitch.js +9 -8
- package/dist/providers/twitter.d.ts +4 -4
- package/dist/providers/twitter.js +9 -8
- package/dist/providers/vk.d.ts +4 -4
- package/dist/providers/vk.js +9 -8
- package/dist/providers/withings.d.ts +4 -4
- package/dist/providers/withings.js +9 -8
- package/dist/providers/workos.d.ts +4 -4
- package/dist/providers/workos.js +10 -9
- package/dist/providers/yahoo.d.ts +4 -4
- package/dist/providers/yahoo.js +9 -8
- package/dist/providers/yandex.d.ts +4 -4
- package/dist/providers/yandex.js +9 -8
- package/dist/providers/zoom.d.ts +4 -4
- package/dist/providers/zoom.js +9 -8
- package/package.json +2 -1
- package/readme.md +0 -155
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createOAuth2Request, sendTokenRequest } from "../request.js";
|
|
2
|
-
import {
|
|
2
|
+
import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
|
|
3
3
|
const authorizationEndpoint = "https://auth.atlassian.com/authorize";
|
|
4
4
|
const tokenEndpoint = "https://auth.atlassian.com/oauth/token";
|
|
5
5
|
const userEndpoint = "https://api.atlassian.com/me";
|
|
@@ -10,7 +10,7 @@ export class Atlassian {
|
|
|
10
10
|
clientSecret;
|
|
11
11
|
redirectURI;
|
|
12
12
|
auth = null;
|
|
13
|
-
constructor(clientIdOrOptions, clientSecret, redirectURI) {
|
|
13
|
+
constructor(clientIdOrOptions = {}, clientSecret, redirectURI) {
|
|
14
14
|
if (typeof clientIdOrOptions === "object") {
|
|
15
15
|
this.auth = resolveAuthConfig(envPrefix, clientIdOrOptions, {
|
|
16
16
|
clientSecret: true,
|
|
@@ -64,13 +64,13 @@ export class Atlassian {
|
|
|
64
64
|
const auth = requireAuthConfig(this.auth);
|
|
65
65
|
const state = generateOAuthState();
|
|
66
66
|
const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
|
|
67
|
-
|
|
68
|
-
return url;
|
|
67
|
+
const payload = {};
|
|
68
|
+
return { url, state, payload };
|
|
69
69
|
}
|
|
70
|
-
async getUser(query) {
|
|
71
|
-
|
|
70
|
+
async getUser(query, saved) {
|
|
71
|
+
requireAuthConfig(this.auth);
|
|
72
72
|
const { code, state } = parseCallbackQuery(query);
|
|
73
|
-
|
|
73
|
+
resolveOAuthState(state, saved);
|
|
74
74
|
const tokens = await this.validateAuthorizationCode(code);
|
|
75
75
|
const profile = await fetchUserProfile(userEndpoint, tokens.accessToken());
|
|
76
76
|
return {
|
|
@@ -78,7 +78,8 @@ export class Atlassian {
|
|
|
78
78
|
name: profileString(profile.name) ?? profileString(profile.nickname),
|
|
79
79
|
email: profileString(profile.email),
|
|
80
80
|
image: profileString(profile.picture),
|
|
81
|
-
raw: profile
|
|
81
|
+
raw: profile,
|
|
82
|
+
...extractOAuthTokens(tokens)
|
|
82
83
|
};
|
|
83
84
|
}
|
|
84
85
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OAuth2Tokens } from "../oauth2.js";
|
|
2
|
-
import type { OAuthCallbackQuery, OAuthUser, ProviderOptions } from "../auth.js";
|
|
2
|
+
import type { AuthorizationRequest, OAuthCallbackQuery, OAuthUser, ProviderOptions, SavedOAuthState } from "../auth.js";
|
|
3
3
|
export interface Auth0Options extends ProviderOptions {
|
|
4
4
|
domain?: string;
|
|
5
5
|
}
|
|
@@ -10,12 +10,12 @@ export declare class Auth0 {
|
|
|
10
10
|
private userinfoEndpoint;
|
|
11
11
|
private client;
|
|
12
12
|
private auth;
|
|
13
|
-
constructor(options
|
|
13
|
+
constructor(options?: Auth0Options);
|
|
14
14
|
constructor(domain: string, clientId: string, clientSecret: string | null, redirectURI: string);
|
|
15
15
|
createAuthorizationURL(state: string, codeVerifier: string | null, scopes: string[]): Promise<URL>;
|
|
16
16
|
validateAuthorizationCode(code: string, codeVerifier: string | null): Promise<OAuth2Tokens>;
|
|
17
17
|
refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
|
|
18
18
|
revokeToken(token: string): Promise<void>;
|
|
19
|
-
getAuthorizationURL(scopes?: string[]): Promise<
|
|
20
|
-
getUser(query: OAuthCallbackQuery): Promise<OAuthUser>;
|
|
19
|
+
getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
|
|
20
|
+
getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
|
|
21
21
|
}
|
package/dist/providers/auth0.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CodeChallengeMethod, OAuth2Client } from "../client.js";
|
|
2
2
|
import { decodeIdToken } from "../oidc.js";
|
|
3
|
-
import {
|
|
3
|
+
import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, requireProviderOption, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
|
|
4
4
|
const envPrefix = "AUTH0";
|
|
5
5
|
const defaultScopes = ["openid", "profile", "email"];
|
|
6
6
|
export class Auth0 {
|
|
@@ -10,7 +10,7 @@ export class Auth0 {
|
|
|
10
10
|
userinfoEndpoint;
|
|
11
11
|
client;
|
|
12
12
|
auth = null;
|
|
13
|
-
constructor(domainOrOptions, clientId, clientSecret, redirectURI) {
|
|
13
|
+
constructor(domainOrOptions = {}, clientId, clientSecret, redirectURI) {
|
|
14
14
|
let domain;
|
|
15
15
|
if (typeof domainOrOptions === "object") {
|
|
16
16
|
this.auth = resolveAuthConfig(envPrefix, domainOrOptions, { redirectURI: true });
|
|
@@ -52,13 +52,13 @@ export class Auth0 {
|
|
|
52
52
|
const state = generateOAuthState();
|
|
53
53
|
const codeVerifier = generateOAuthCodeVerifier();
|
|
54
54
|
const url = await this.createAuthorizationURL(state, codeVerifier, resolveScopes(scopes, auth, defaultScopes));
|
|
55
|
-
|
|
56
|
-
return url;
|
|
55
|
+
const payload = { codeVerifier };
|
|
56
|
+
return { url, state, payload };
|
|
57
57
|
}
|
|
58
|
-
async getUser(query) {
|
|
59
|
-
|
|
58
|
+
async getUser(query, saved) {
|
|
59
|
+
requireAuthConfig(this.auth);
|
|
60
60
|
const { code, state } = parseCallbackQuery(query);
|
|
61
|
-
const stored =
|
|
61
|
+
const stored = resolveOAuthState(state, saved);
|
|
62
62
|
if (typeof stored.codeVerifier !== "string") {
|
|
63
63
|
throw new InvalidOAuthCallbackError("Missing PKCE code verifier for OAuth state");
|
|
64
64
|
}
|
|
@@ -75,7 +75,8 @@ export class Auth0 {
|
|
|
75
75
|
name: profileString(claims.name) ?? profileString(claims.nickname),
|
|
76
76
|
email: profileString(claims.email),
|
|
77
77
|
image: profileString(claims.picture),
|
|
78
|
-
raw: claims
|
|
78
|
+
raw: claims,
|
|
79
|
+
...extractOAuthTokens(tokens)
|
|
79
80
|
};
|
|
80
81
|
}
|
|
81
82
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OAuth2Tokens } from "../oauth2.js";
|
|
2
|
-
import type { OAuthCallbackQuery, OAuthUser, ProviderOptions } from "../auth.js";
|
|
2
|
+
import type { AuthorizationRequest, OAuthCallbackQuery, OAuthUser, ProviderOptions, SavedOAuthState } from "../auth.js";
|
|
3
3
|
export interface AuthentikOptions extends ProviderOptions {
|
|
4
4
|
baseURL?: string;
|
|
5
5
|
}
|
|
@@ -10,12 +10,12 @@ export declare class Authentik {
|
|
|
10
10
|
private userinfoEndpoint;
|
|
11
11
|
private client;
|
|
12
12
|
private auth;
|
|
13
|
-
constructor(options
|
|
13
|
+
constructor(options?: AuthentikOptions);
|
|
14
14
|
constructor(baseURL: string, clientId: string, clientSecret: string | null, redirectURI: string);
|
|
15
15
|
createAuthorizationURL(state: string, codeVerifier: string, scopes: string[]): Promise<URL>;
|
|
16
16
|
validateAuthorizationCode(code: string, codeVerifier: string): Promise<OAuth2Tokens>;
|
|
17
17
|
refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
|
|
18
18
|
revokeToken(token: string): Promise<void>;
|
|
19
|
-
getAuthorizationURL(scopes?: string[]): Promise<
|
|
20
|
-
getUser(query: OAuthCallbackQuery): Promise<OAuthUser>;
|
|
19
|
+
getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
|
|
20
|
+
getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
|
|
21
21
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CodeChallengeMethod, OAuth2Client } from "../client.js";
|
|
2
2
|
import { joinURIAndPath } from "../request.js";
|
|
3
3
|
import { decodeIdToken } from "../oidc.js";
|
|
4
|
-
import {
|
|
4
|
+
import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, requireProviderOption, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
|
|
5
5
|
const envPrefix = "AUTHENTIK";
|
|
6
6
|
const defaultScopes = ["openid", "profile", "email"];
|
|
7
7
|
export class Authentik {
|
|
@@ -11,7 +11,7 @@ export class Authentik {
|
|
|
11
11
|
userinfoEndpoint;
|
|
12
12
|
client;
|
|
13
13
|
auth = null;
|
|
14
|
-
constructor(baseURLOrOptions, clientId, clientSecret, redirectURI) {
|
|
14
|
+
constructor(baseURLOrOptions = {}, clientId, clientSecret, redirectURI) {
|
|
15
15
|
let baseURL;
|
|
16
16
|
if (typeof baseURLOrOptions === "object") {
|
|
17
17
|
this.auth = resolveAuthConfig(envPrefix, baseURLOrOptions, { redirectURI: true });
|
|
@@ -47,13 +47,13 @@ export class Authentik {
|
|
|
47
47
|
const state = generateOAuthState();
|
|
48
48
|
const codeVerifier = generateOAuthCodeVerifier();
|
|
49
49
|
const url = await this.createAuthorizationURL(state, codeVerifier, resolveScopes(scopes, auth, defaultScopes));
|
|
50
|
-
|
|
51
|
-
return url;
|
|
50
|
+
const payload = { codeVerifier };
|
|
51
|
+
return { url, state, payload };
|
|
52
52
|
}
|
|
53
|
-
async getUser(query) {
|
|
54
|
-
|
|
53
|
+
async getUser(query, saved) {
|
|
54
|
+
requireAuthConfig(this.auth);
|
|
55
55
|
const { code, state } = parseCallbackQuery(query);
|
|
56
|
-
const stored =
|
|
56
|
+
const stored = resolveOAuthState(state, saved);
|
|
57
57
|
if (typeof stored.codeVerifier !== "string") {
|
|
58
58
|
throw new InvalidOAuthCallbackError("Missing PKCE code verifier for OAuth state");
|
|
59
59
|
}
|
|
@@ -70,7 +70,8 @@ export class Authentik {
|
|
|
70
70
|
name: profileString(claims.name) ?? profileString(claims.preferred_username),
|
|
71
71
|
email: profileString(claims.email),
|
|
72
72
|
image: profileString(claims.picture),
|
|
73
|
-
raw: claims
|
|
73
|
+
raw: claims,
|
|
74
|
+
...extractOAuthTokens(tokens)
|
|
74
75
|
};
|
|
75
76
|
}
|
|
76
77
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { OAuth2Tokens } from "../oauth2.js";
|
|
2
|
-
import type { OAuthCallbackQuery, OAuthUser, ProviderOptions } from "../auth.js";
|
|
2
|
+
import type { AuthorizationRequest, OAuthCallbackQuery, OAuthUser, ProviderOptions, SavedOAuthState } from "../auth.js";
|
|
3
3
|
export interface AutodeskOptions extends ProviderOptions {
|
|
4
4
|
}
|
|
5
5
|
export declare class Autodesk {
|
|
6
6
|
private client;
|
|
7
7
|
private auth;
|
|
8
|
-
constructor(options
|
|
8
|
+
constructor(options?: AutodeskOptions);
|
|
9
9
|
constructor(clientId: string, clientSecret: string | null, redirectURI: string);
|
|
10
10
|
createAuthorizationURL(state: string, codeVerifier: string, scopes: string[]): Promise<URL>;
|
|
11
11
|
validateAuthorizationCode(code: string, codeVerifier: string): Promise<OAuth2Tokens>;
|
|
12
12
|
refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
|
|
13
13
|
revokeToken(token: string): Promise<void>;
|
|
14
|
-
getAuthorizationURL(scopes?: string[]): Promise<
|
|
15
|
-
getUser(query: OAuthCallbackQuery): Promise<OAuthUser>;
|
|
14
|
+
getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
|
|
15
|
+
getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
|
|
16
16
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CodeChallengeMethod, OAuth2Client } from "../client.js";
|
|
2
|
-
import {
|
|
2
|
+
import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
|
|
3
3
|
const authorizationEndpoint = "https://developer.api.autodesk.com/authentication/v2/authorize";
|
|
4
4
|
const tokenEndpoint = "https://developer.api.autodesk.com/authentication/v2/token";
|
|
5
5
|
const tokenRevocationEndpoint = "https://developer.api.autodesk.com/authentication/v2/revoke";
|
|
@@ -9,7 +9,7 @@ const defaultScopes = ["openid", "user-profile:read"];
|
|
|
9
9
|
export class Autodesk {
|
|
10
10
|
client;
|
|
11
11
|
auth = null;
|
|
12
|
-
constructor(clientIdOrOptions, clientSecret, redirectURI) {
|
|
12
|
+
constructor(clientIdOrOptions = {}, clientSecret, redirectURI) {
|
|
13
13
|
if (typeof clientIdOrOptions === "object") {
|
|
14
14
|
this.auth = resolveAuthConfig(envPrefix, clientIdOrOptions, { redirectURI: true });
|
|
15
15
|
this.client = new OAuth2Client(this.auth.clientId, this.auth.clientSecret, this.auth.redirectURI);
|
|
@@ -38,13 +38,13 @@ export class Autodesk {
|
|
|
38
38
|
const state = generateOAuthState();
|
|
39
39
|
const codeVerifier = generateOAuthCodeVerifier();
|
|
40
40
|
const url = await this.createAuthorizationURL(state, codeVerifier, resolveScopes(scopes, auth, defaultScopes));
|
|
41
|
-
|
|
42
|
-
return url;
|
|
41
|
+
const payload = { codeVerifier };
|
|
42
|
+
return { url, state, payload };
|
|
43
43
|
}
|
|
44
|
-
async getUser(query) {
|
|
45
|
-
|
|
44
|
+
async getUser(query, saved) {
|
|
45
|
+
requireAuthConfig(this.auth);
|
|
46
46
|
const { code, state } = parseCallbackQuery(query);
|
|
47
|
-
const stored =
|
|
47
|
+
const stored = resolveOAuthState(state, saved);
|
|
48
48
|
if (typeof stored.codeVerifier !== "string") {
|
|
49
49
|
throw new InvalidOAuthCallbackError("Missing PKCE code verifier for OAuth state");
|
|
50
50
|
}
|
|
@@ -55,7 +55,8 @@ export class Autodesk {
|
|
|
55
55
|
name: profileString(claims.name) ?? profileString(claims.preferred_username),
|
|
56
56
|
email: profileString(claims.email),
|
|
57
57
|
image: profileString(claims.picture),
|
|
58
|
-
raw: claims
|
|
58
|
+
raw: claims,
|
|
59
|
+
...extractOAuthTokens(tokens)
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
62
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OAuth2Tokens } from "../oauth2.js";
|
|
2
|
-
import type { OAuthCallbackQuery, OAuthUser, ProviderOptions } from "../auth.js";
|
|
2
|
+
import type { AuthorizationRequest, OAuthCallbackQuery, OAuthUser, ProviderOptions, SavedOAuthState } from "../auth.js";
|
|
3
3
|
export interface BattleNetOptions extends ProviderOptions {
|
|
4
4
|
}
|
|
5
5
|
export declare class BattleNet {
|
|
@@ -7,10 +7,10 @@ export declare class BattleNet {
|
|
|
7
7
|
private clientSecret;
|
|
8
8
|
private redirectURI;
|
|
9
9
|
private auth;
|
|
10
|
-
constructor(options
|
|
10
|
+
constructor(options?: BattleNetOptions);
|
|
11
11
|
constructor(clientId: string, clientSecret: string, redirectURI: string);
|
|
12
12
|
createAuthorizationURL(state: string, scopes: string[]): URL;
|
|
13
13
|
validateAuthorizationCode(code: string): Promise<OAuth2Tokens>;
|
|
14
|
-
getAuthorizationURL(scopes?: string[]): Promise<
|
|
15
|
-
getUser(query: OAuthCallbackQuery): Promise<OAuthUser>;
|
|
14
|
+
getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
|
|
15
|
+
getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
|
|
16
16
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createOAuth2Request, sendTokenRequest } from "../request.js";
|
|
2
|
-
import {
|
|
2
|
+
import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
|
|
3
3
|
const authorizationEndpoint = "https://oauth.battle.net/authorize";
|
|
4
4
|
const tokenEndpoint = "https://oauth.battle.net/token";
|
|
5
5
|
const userinfoEndpoint = "https://oauth.battle.net/userinfo";
|
|
@@ -10,7 +10,7 @@ export class BattleNet {
|
|
|
10
10
|
clientSecret;
|
|
11
11
|
redirectURI;
|
|
12
12
|
auth = null;
|
|
13
|
-
constructor(clientIdOrOptions, clientSecret, redirectURI) {
|
|
13
|
+
constructor(clientIdOrOptions = {}, clientSecret, redirectURI) {
|
|
14
14
|
if (typeof clientIdOrOptions === "object") {
|
|
15
15
|
this.auth = resolveAuthConfig(envPrefix, clientIdOrOptions, {
|
|
16
16
|
clientSecret: true,
|
|
@@ -50,13 +50,13 @@ export class BattleNet {
|
|
|
50
50
|
const auth = requireAuthConfig(this.auth);
|
|
51
51
|
const state = generateOAuthState();
|
|
52
52
|
const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
|
|
53
|
-
|
|
54
|
-
return url;
|
|
53
|
+
const payload = {};
|
|
54
|
+
return { url, state, payload };
|
|
55
55
|
}
|
|
56
|
-
async getUser(query) {
|
|
57
|
-
|
|
56
|
+
async getUser(query, saved) {
|
|
57
|
+
requireAuthConfig(this.auth);
|
|
58
58
|
const { code, state } = parseCallbackQuery(query);
|
|
59
|
-
|
|
59
|
+
resolveOAuthState(state, saved);
|
|
60
60
|
const tokens = await this.validateAuthorizationCode(code);
|
|
61
61
|
const profile = await fetchUserProfile(userinfoEndpoint, tokens.accessToken());
|
|
62
62
|
return {
|
|
@@ -64,7 +64,8 @@ export class BattleNet {
|
|
|
64
64
|
name: profileString(profile.battletag),
|
|
65
65
|
email: null,
|
|
66
66
|
image: null,
|
|
67
|
-
raw: profile
|
|
67
|
+
raw: profile,
|
|
68
|
+
...extractOAuthTokens(tokens)
|
|
68
69
|
};
|
|
69
70
|
}
|
|
70
71
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { OAuth2Tokens } from "../oauth2.js";
|
|
2
|
-
import type { OAuthCallbackQuery, OAuthUser, ProviderOptions } from "../auth.js";
|
|
2
|
+
import type { AuthorizationRequest, OAuthCallbackQuery, OAuthUser, ProviderOptions, SavedOAuthState } from "../auth.js";
|
|
3
3
|
export interface BitbucketOptions extends ProviderOptions {
|
|
4
4
|
}
|
|
5
5
|
export declare class Bitbucket {
|
|
6
6
|
private client;
|
|
7
7
|
private auth;
|
|
8
|
-
constructor(options
|
|
8
|
+
constructor(options?: BitbucketOptions);
|
|
9
9
|
constructor(clientId: string, clientSecret: string, redirectURI: string);
|
|
10
10
|
createAuthorizationURL(state: string): URL;
|
|
11
11
|
validateAuthorizationCode(code: string): Promise<OAuth2Tokens>;
|
|
12
12
|
refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
|
|
13
|
-
getAuthorizationURL(): Promise<
|
|
14
|
-
getUser(query: OAuthCallbackQuery): Promise<OAuthUser>;
|
|
13
|
+
getAuthorizationURL(): Promise<AuthorizationRequest>;
|
|
14
|
+
getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
|
|
15
15
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OAuth2Client } from "../client.js";
|
|
2
|
-
import {
|
|
2
|
+
import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState } from "../auth.js";
|
|
3
3
|
const authorizationEndpoint = "https://bitbucket.org/site/oauth2/authorize";
|
|
4
4
|
const tokenEndpoint = "https://bitbucket.org/site/oauth2/access_token";
|
|
5
5
|
const userEndpoint = "https://api.bitbucket.org/2.0/user";
|
|
@@ -8,7 +8,7 @@ const envPrefix = "BITBUCKET";
|
|
|
8
8
|
export class Bitbucket {
|
|
9
9
|
client;
|
|
10
10
|
auth = null;
|
|
11
|
-
constructor(clientIdOrOptions, clientSecret, redirectURI) {
|
|
11
|
+
constructor(clientIdOrOptions = {}, clientSecret, redirectURI) {
|
|
12
12
|
if (typeof clientIdOrOptions === "object") {
|
|
13
13
|
this.auth = resolveAuthConfig(envPrefix, clientIdOrOptions, {
|
|
14
14
|
clientSecret: true,
|
|
@@ -33,16 +33,16 @@ export class Bitbucket {
|
|
|
33
33
|
return tokens;
|
|
34
34
|
}
|
|
35
35
|
async getAuthorizationURL() {
|
|
36
|
-
|
|
36
|
+
requireAuthConfig(this.auth);
|
|
37
37
|
const state = generateOAuthState();
|
|
38
38
|
const url = this.createAuthorizationURL(state);
|
|
39
|
-
|
|
40
|
-
return url;
|
|
39
|
+
const payload = {};
|
|
40
|
+
return { url, state, payload };
|
|
41
41
|
}
|
|
42
|
-
async getUser(query) {
|
|
43
|
-
|
|
42
|
+
async getUser(query, saved) {
|
|
43
|
+
requireAuthConfig(this.auth);
|
|
44
44
|
const { code, state } = parseCallbackQuery(query);
|
|
45
|
-
|
|
45
|
+
resolveOAuthState(state, saved);
|
|
46
46
|
const tokens = await this.validateAuthorizationCode(code);
|
|
47
47
|
const accessToken = tokens.accessToken();
|
|
48
48
|
const profile = await fetchUserProfile(userEndpoint, accessToken);
|
|
@@ -58,7 +58,8 @@ export class Bitbucket {
|
|
|
58
58
|
name: profileString(profile.display_name) ?? profileString(profile.username),
|
|
59
59
|
email: await fetchPrimaryEmail(accessToken),
|
|
60
60
|
image,
|
|
61
|
-
raw: profile
|
|
61
|
+
raw: profile,
|
|
62
|
+
...extractOAuthTokens(tokens)
|
|
62
63
|
};
|
|
63
64
|
}
|
|
64
65
|
}
|
package/dist/providers/box.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OAuth2Tokens } from "../oauth2.js";
|
|
2
|
-
import type { OAuthCallbackQuery, OAuthUser, ProviderOptions } from "../auth.js";
|
|
2
|
+
import type { AuthorizationRequest, OAuthCallbackQuery, OAuthUser, ProviderOptions, SavedOAuthState } from "../auth.js";
|
|
3
3
|
export interface BoxOptions extends ProviderOptions {
|
|
4
4
|
}
|
|
5
5
|
export declare class Box {
|
|
@@ -7,12 +7,12 @@ export declare class Box {
|
|
|
7
7
|
private clientSecret;
|
|
8
8
|
private redirectURI;
|
|
9
9
|
private auth;
|
|
10
|
-
constructor(options
|
|
10
|
+
constructor(options?: BoxOptions);
|
|
11
11
|
constructor(clientId: string, clientSecret: string, redirectURI: string);
|
|
12
12
|
createAuthorizationURL(state: string, scopes: string[]): URL;
|
|
13
13
|
validateAuthorizationCode(code: string): Promise<OAuth2Tokens>;
|
|
14
14
|
refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
|
|
15
15
|
revokeToken(token: string): Promise<void>;
|
|
16
|
-
getAuthorizationURL(scopes?: string[]): Promise<
|
|
17
|
-
getUser(query: OAuthCallbackQuery): Promise<OAuthUser>;
|
|
16
|
+
getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
|
|
17
|
+
getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
|
|
18
18
|
}
|
package/dist/providers/box.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createOAuth2Request, sendTokenRequest, sendTokenRevocationRequest } from "../request.js";
|
|
2
|
-
import {
|
|
2
|
+
import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
|
|
3
3
|
const authorizationEndpoint = "https://account.box.com/api/oauth2/authorize";
|
|
4
4
|
const tokenEndpoint = "https://api.box.com/oauth2/token";
|
|
5
5
|
const tokenRevocationEndpoint = "https://api.box.com/oauth2/revoke";
|
|
@@ -11,7 +11,7 @@ export class Box {
|
|
|
11
11
|
clientSecret;
|
|
12
12
|
redirectURI;
|
|
13
13
|
auth = null;
|
|
14
|
-
constructor(clientIdOrOptions, clientSecret, redirectURI) {
|
|
14
|
+
constructor(clientIdOrOptions = {}, clientSecret, redirectURI) {
|
|
15
15
|
if (typeof clientIdOrOptions === "object") {
|
|
16
16
|
this.auth = resolveAuthConfig(envPrefix, clientIdOrOptions, {
|
|
17
17
|
clientSecret: true,
|
|
@@ -71,13 +71,13 @@ export class Box {
|
|
|
71
71
|
const auth = requireAuthConfig(this.auth);
|
|
72
72
|
const state = generateOAuthState();
|
|
73
73
|
const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
|
|
74
|
-
|
|
75
|
-
return url;
|
|
74
|
+
const payload = {};
|
|
75
|
+
return { url, state, payload };
|
|
76
76
|
}
|
|
77
|
-
async getUser(query) {
|
|
78
|
-
|
|
77
|
+
async getUser(query, saved) {
|
|
78
|
+
requireAuthConfig(this.auth);
|
|
79
79
|
const { code, state } = parseCallbackQuery(query);
|
|
80
|
-
|
|
80
|
+
resolveOAuthState(state, saved);
|
|
81
81
|
const tokens = await this.validateAuthorizationCode(code);
|
|
82
82
|
const profile = await fetchUserProfile(userEndpoint, tokens.accessToken());
|
|
83
83
|
return {
|
|
@@ -85,7 +85,8 @@ export class Box {
|
|
|
85
85
|
name: profileString(profile.name),
|
|
86
86
|
email: profileString(profile.login),
|
|
87
87
|
image: profileString(profile.avatar_url),
|
|
88
|
-
raw: profile
|
|
88
|
+
raw: profile,
|
|
89
|
+
...extractOAuthTokens(tokens)
|
|
89
90
|
};
|
|
90
91
|
}
|
|
91
92
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OAuth2Tokens } from "../oauth2.js";
|
|
2
|
-
import type { OAuthCallbackQuery, OAuthUser, ProviderOptions } from "../auth.js";
|
|
2
|
+
import type { AuthorizationRequest, OAuthCallbackQuery, OAuthUser, ProviderOptions, SavedOAuthState } from "../auth.js";
|
|
3
3
|
export interface BungieOptions extends ProviderOptions {
|
|
4
4
|
apiKey?: string;
|
|
5
5
|
}
|
|
@@ -7,11 +7,11 @@ export declare class Bungie {
|
|
|
7
7
|
private client;
|
|
8
8
|
private apiKey;
|
|
9
9
|
private auth;
|
|
10
|
-
constructor(options
|
|
10
|
+
constructor(options?: BungieOptions);
|
|
11
11
|
constructor(clientId: string, clientSecret: string | null, redirectURI: string);
|
|
12
12
|
createAuthorizationURL(state: string, scopes: string[]): URL;
|
|
13
13
|
validateAuthorizationCode(code: string): Promise<OAuth2Tokens>;
|
|
14
14
|
refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
|
|
15
|
-
getAuthorizationURL(scopes?: string[]): Promise<
|
|
16
|
-
getUser(query: OAuthCallbackQuery): Promise<OAuthUser>;
|
|
15
|
+
getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
|
|
16
|
+
getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
|
|
17
17
|
}
|
package/dist/providers/bungie.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OAuth2Client } from "../client.js";
|
|
2
|
-
import {
|
|
2
|
+
import { extractOAuthTokens, fetchUserProfile, generateOAuthState, OAuthConfigurationError, OAuthProviderError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveProviderOption, resolveScopes } from "../auth.js";
|
|
3
3
|
const authorizationEndpoint = "https://www.bungie.net/en/oauth/authorize";
|
|
4
4
|
const tokenEndpoint = "https://www.bungie.net/platform/app/oauth/token";
|
|
5
5
|
const userEndpoint = "https://www.bungie.net/platform/User/GetCurrentBungieNetUser/";
|
|
@@ -10,7 +10,7 @@ export class Bungie {
|
|
|
10
10
|
client;
|
|
11
11
|
apiKey = null;
|
|
12
12
|
auth = null;
|
|
13
|
-
constructor(clientIdOrOptions, clientSecret, redirectURI) {
|
|
13
|
+
constructor(clientIdOrOptions = {}, clientSecret, redirectURI) {
|
|
14
14
|
if (typeof clientIdOrOptions === "object") {
|
|
15
15
|
this.auth = resolveAuthConfig(envPrefix, clientIdOrOptions, { redirectURI: true });
|
|
16
16
|
this.apiKey = resolveProviderOption(clientIdOrOptions.apiKey, envPrefix, "API_KEY");
|
|
@@ -36,16 +36,16 @@ export class Bungie {
|
|
|
36
36
|
const auth = requireAuthConfig(this.auth);
|
|
37
37
|
const state = generateOAuthState();
|
|
38
38
|
const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
|
|
39
|
-
|
|
40
|
-
return url;
|
|
39
|
+
const payload = {};
|
|
40
|
+
return { url, state, payload };
|
|
41
41
|
}
|
|
42
|
-
async getUser(query) {
|
|
43
|
-
|
|
42
|
+
async getUser(query, saved) {
|
|
43
|
+
requireAuthConfig(this.auth);
|
|
44
44
|
if (this.apiKey === null) {
|
|
45
45
|
throw new OAuthConfigurationError("Missing 'apiKey': pass it in the constructor options or set BUNGIE_API_KEY");
|
|
46
46
|
}
|
|
47
47
|
const { code, state } = parseCallbackQuery(query);
|
|
48
|
-
|
|
48
|
+
resolveOAuthState(state, saved);
|
|
49
49
|
const tokens = await this.validateAuthorizationCode(code);
|
|
50
50
|
const body = await fetchUserProfile(userEndpoint, tokens.accessToken(), {
|
|
51
51
|
"X-API-Key": this.apiKey
|
|
@@ -67,7 +67,8 @@ export class Bungie {
|
|
|
67
67
|
name: profileString(user.cachedBungieGlobalDisplayName) ?? profileString(user.displayName),
|
|
68
68
|
email: null,
|
|
69
69
|
image,
|
|
70
|
-
raw: user
|
|
70
|
+
raw: user,
|
|
71
|
+
...extractOAuthTokens(tokens)
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
74
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OAuth2Tokens } from "../oauth2.js";
|
|
2
|
-
import type { OAuthCallbackQuery, OAuthUser, ProviderOptions } from "../auth.js";
|
|
2
|
+
import type { AuthorizationRequest, OAuthCallbackQuery, OAuthUser, ProviderOptions, SavedOAuthState } from "../auth.js";
|
|
3
3
|
export interface CoinbaseOptions extends ProviderOptions {
|
|
4
4
|
}
|
|
5
5
|
export declare class Coinbase {
|
|
@@ -7,12 +7,12 @@ export declare class Coinbase {
|
|
|
7
7
|
private clientSecret;
|
|
8
8
|
private redirectURI;
|
|
9
9
|
private auth;
|
|
10
|
-
constructor(options
|
|
10
|
+
constructor(options?: CoinbaseOptions);
|
|
11
11
|
constructor(clientId: string, clientSecret: string, redirectURI: string);
|
|
12
12
|
createAuthorizationURL(state: string, scopes: string[]): URL;
|
|
13
13
|
validateAuthorizationCode(code: string): Promise<OAuth2Tokens>;
|
|
14
14
|
refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
|
|
15
15
|
revokeToken(token: string): Promise<void>;
|
|
16
|
-
getAuthorizationURL(scopes?: string[]): Promise<
|
|
17
|
-
getUser(query: OAuthCallbackQuery): Promise<OAuthUser>;
|
|
16
|
+
getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
|
|
17
|
+
getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
|
|
18
18
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createOAuth2Request, sendTokenRequest, sendTokenRevocationRequest } from "../request.js";
|
|
2
|
-
import {
|
|
2
|
+
import { extractOAuthTokens, fetchUserProfile, generateOAuthState, OAuthProviderError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
|
|
3
3
|
const authorizationEndpoint = "https://www.coinbase.com/oauth/authorize";
|
|
4
4
|
const tokenEndpoint = "https://www.coinbase.com/oauth/token";
|
|
5
5
|
const tokenRevocationEndpoint = "https://api.coinbase.com/oauth/revoke";
|
|
@@ -11,7 +11,7 @@ export class Coinbase {
|
|
|
11
11
|
clientSecret;
|
|
12
12
|
redirectURI;
|
|
13
13
|
auth = null;
|
|
14
|
-
constructor(clientIdOrOptions, clientSecret, redirectURI) {
|
|
14
|
+
constructor(clientIdOrOptions = {}, clientSecret, redirectURI) {
|
|
15
15
|
if (typeof clientIdOrOptions === "object") {
|
|
16
16
|
this.auth = resolveAuthConfig(envPrefix, clientIdOrOptions, {
|
|
17
17
|
clientSecret: true,
|
|
@@ -71,13 +71,13 @@ export class Coinbase {
|
|
|
71
71
|
const auth = requireAuthConfig(this.auth);
|
|
72
72
|
const state = generateOAuthState();
|
|
73
73
|
const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
|
|
74
|
-
|
|
75
|
-
return url;
|
|
74
|
+
const payload = {};
|
|
75
|
+
return { url, state, payload };
|
|
76
76
|
}
|
|
77
|
-
async getUser(query) {
|
|
78
|
-
|
|
77
|
+
async getUser(query, saved) {
|
|
78
|
+
requireAuthConfig(this.auth);
|
|
79
79
|
const { code, state } = parseCallbackQuery(query);
|
|
80
|
-
|
|
80
|
+
resolveOAuthState(state, saved);
|
|
81
81
|
const tokens = await this.validateAuthorizationCode(code);
|
|
82
82
|
const body = await fetchUserProfile(userEndpoint, tokens.accessToken());
|
|
83
83
|
const profile = body.data;
|
|
@@ -90,7 +90,8 @@ export class Coinbase {
|
|
|
90
90
|
name: profileString(user.name) ?? profileString(user.username),
|
|
91
91
|
email: profileString(user.email),
|
|
92
92
|
image: profileString(user.avatar_url),
|
|
93
|
-
raw: user
|
|
93
|
+
raw: user,
|
|
94
|
+
...extractOAuthTokens(tokens)
|
|
94
95
|
};
|
|
95
96
|
}
|
|
96
97
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { OAuth2Tokens } from "../oauth2.js";
|
|
2
|
-
import type { OAuthCallbackQuery, OAuthUser, ProviderOptions } from "../auth.js";
|
|
2
|
+
import type { AuthorizationRequest, OAuthCallbackQuery, OAuthUser, ProviderOptions, SavedOAuthState } from "../auth.js";
|
|
3
3
|
export interface DiscordOptions extends ProviderOptions {
|
|
4
4
|
}
|
|
5
5
|
export declare class Discord {
|
|
6
6
|
private client;
|
|
7
7
|
private auth;
|
|
8
|
-
constructor(options
|
|
8
|
+
constructor(options?: DiscordOptions);
|
|
9
9
|
constructor(clientId: string, clientSecret: string | null, redirectURI: string);
|
|
10
10
|
createAuthorizationURL(state: string, codeVerifier: string | null, scopes: string[]): Promise<URL>;
|
|
11
11
|
validateAuthorizationCode(code: string, codeVerifier: string | null): Promise<OAuth2Tokens>;
|
|
12
12
|
refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
|
|
13
13
|
revokeToken(token: string): Promise<void>;
|
|
14
|
-
getAuthorizationURL(scopes?: string[]): Promise<
|
|
15
|
-
getUser(query: OAuthCallbackQuery): Promise<OAuthUser>;
|
|
14
|
+
getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
|
|
15
|
+
getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
|
|
16
16
|
}
|