antarctic 0.6.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.
Files changed (132) hide show
  1. package/README.md +252 -0
  2. package/dist/auth.d.ts +1 -12
  3. package/dist/auth.js +7 -34
  4. package/dist/index.d.ts +1 -1
  5. package/dist/providers/42.d.ts +2 -2
  6. package/dist/providers/42.js +4 -5
  7. package/dist/providers/amazon-cognito.d.ts +2 -2
  8. package/dist/providers/amazon-cognito.js +4 -5
  9. package/dist/providers/anilist.d.ts +2 -2
  10. package/dist/providers/anilist.js +5 -6
  11. package/dist/providers/apple.d.ts +1 -1
  12. package/dist/providers/apple.js +3 -4
  13. package/dist/providers/atlassian.d.ts +2 -2
  14. package/dist/providers/atlassian.js +4 -5
  15. package/dist/providers/auth0.d.ts +2 -2
  16. package/dist/providers/auth0.js +4 -5
  17. package/dist/providers/authentik.d.ts +2 -2
  18. package/dist/providers/authentik.js +4 -5
  19. package/dist/providers/autodesk.d.ts +2 -2
  20. package/dist/providers/autodesk.js +4 -5
  21. package/dist/providers/battlenet.d.ts +2 -2
  22. package/dist/providers/battlenet.js +4 -5
  23. package/dist/providers/bitbucket.d.ts +2 -2
  24. package/dist/providers/bitbucket.js +5 -6
  25. package/dist/providers/box.d.ts +2 -2
  26. package/dist/providers/box.js +4 -5
  27. package/dist/providers/bungie.d.ts +2 -2
  28. package/dist/providers/bungie.js +4 -5
  29. package/dist/providers/coinbase.d.ts +2 -2
  30. package/dist/providers/coinbase.js +4 -5
  31. package/dist/providers/discord.d.ts +2 -2
  32. package/dist/providers/discord.js +4 -5
  33. package/dist/providers/donation-alerts.d.ts +2 -2
  34. package/dist/providers/donation-alerts.js +4 -5
  35. package/dist/providers/dribbble.d.ts +2 -2
  36. package/dist/providers/dribbble.js +4 -5
  37. package/dist/providers/dropbox.d.ts +2 -2
  38. package/dist/providers/dropbox.js +4 -5
  39. package/dist/providers/epicgames.d.ts +2 -2
  40. package/dist/providers/epicgames.js +4 -5
  41. package/dist/providers/etsy.d.ts +2 -2
  42. package/dist/providers/etsy.js +3 -4
  43. package/dist/providers/facebook.d.ts +2 -2
  44. package/dist/providers/facebook.js +4 -5
  45. package/dist/providers/figma.d.ts +2 -2
  46. package/dist/providers/figma.js +4 -5
  47. package/dist/providers/gitea.d.ts +2 -2
  48. package/dist/providers/gitea.js +4 -5
  49. package/dist/providers/github.d.ts +2 -2
  50. package/dist/providers/github.js +4 -5
  51. package/dist/providers/gitlab.d.ts +2 -2
  52. package/dist/providers/gitlab.js +4 -5
  53. package/dist/providers/google.d.ts +2 -2
  54. package/dist/providers/google.js +4 -5
  55. package/dist/providers/intuit.d.ts +2 -2
  56. package/dist/providers/intuit.js +4 -5
  57. package/dist/providers/kakao.d.ts +2 -2
  58. package/dist/providers/kakao.js +4 -5
  59. package/dist/providers/keycloak.d.ts +2 -2
  60. package/dist/providers/keycloak.js +4 -5
  61. package/dist/providers/kick.d.ts +2 -2
  62. package/dist/providers/kick.js +4 -5
  63. package/dist/providers/lichess.d.ts +2 -2
  64. package/dist/providers/lichess.js +4 -5
  65. package/dist/providers/line.d.ts +2 -2
  66. package/dist/providers/line.js +4 -5
  67. package/dist/providers/linear.d.ts +2 -2
  68. package/dist/providers/linear.js +4 -5
  69. package/dist/providers/linkedin.d.ts +2 -2
  70. package/dist/providers/linkedin.js +4 -5
  71. package/dist/providers/mastodon.d.ts +2 -2
  72. package/dist/providers/mastodon.js +4 -5
  73. package/dist/providers/mercadolibre.d.ts +2 -2
  74. package/dist/providers/mercadolibre.js +5 -6
  75. package/dist/providers/mercadopago.d.ts +2 -2
  76. package/dist/providers/mercadopago.js +5 -6
  77. package/dist/providers/microsoft-entra-id.d.ts +2 -2
  78. package/dist/providers/microsoft-entra-id.js +4 -5
  79. package/dist/providers/myanimelist.d.ts +2 -2
  80. package/dist/providers/myanimelist.js +5 -6
  81. package/dist/providers/naver.d.ts +2 -2
  82. package/dist/providers/naver.js +5 -6
  83. package/dist/providers/notion.d.ts +2 -2
  84. package/dist/providers/notion.js +5 -6
  85. package/dist/providers/okta.d.ts +2 -2
  86. package/dist/providers/okta.js +4 -5
  87. package/dist/providers/osu.d.ts +2 -2
  88. package/dist/providers/osu.js +4 -5
  89. package/dist/providers/patreon.d.ts +2 -2
  90. package/dist/providers/patreon.js +4 -5
  91. package/dist/providers/polar.d.ts +2 -2
  92. package/dist/providers/polar.js +4 -5
  93. package/dist/providers/reddit.d.ts +2 -2
  94. package/dist/providers/reddit.js +4 -5
  95. package/dist/providers/roblox.d.ts +2 -2
  96. package/dist/providers/roblox.js +4 -5
  97. package/dist/providers/salesforce.d.ts +2 -2
  98. package/dist/providers/salesforce.js +4 -5
  99. package/dist/providers/shikimori.d.ts +2 -2
  100. package/dist/providers/shikimori.js +5 -6
  101. package/dist/providers/slack.d.ts +2 -2
  102. package/dist/providers/slack.js +4 -5
  103. package/dist/providers/spotify.d.ts +2 -2
  104. package/dist/providers/spotify.js +4 -5
  105. package/dist/providers/startgg.d.ts +2 -2
  106. package/dist/providers/startgg.js +3 -4
  107. package/dist/providers/strava.d.ts +2 -2
  108. package/dist/providers/strava.js +4 -5
  109. package/dist/providers/tiktok.d.ts +2 -2
  110. package/dist/providers/tiktok.js +4 -5
  111. package/dist/providers/tiltify.d.ts +2 -2
  112. package/dist/providers/tiltify.js +4 -5
  113. package/dist/providers/tumblr.d.ts +2 -2
  114. package/dist/providers/tumblr.js +4 -5
  115. package/dist/providers/twitch.d.ts +2 -2
  116. package/dist/providers/twitch.js +4 -5
  117. package/dist/providers/twitter.d.ts +2 -2
  118. package/dist/providers/twitter.js +4 -5
  119. package/dist/providers/vk.d.ts +2 -2
  120. package/dist/providers/vk.js +4 -5
  121. package/dist/providers/withings.d.ts +2 -2
  122. package/dist/providers/withings.js +4 -5
  123. package/dist/providers/workos.d.ts +2 -2
  124. package/dist/providers/workos.js +5 -6
  125. package/dist/providers/yahoo.d.ts +2 -2
  126. package/dist/providers/yahoo.js +4 -5
  127. package/dist/providers/yandex.d.ts +2 -2
  128. package/dist/providers/yandex.js +4 -5
  129. package/dist/providers/zoom.d.ts +2 -2
  130. package/dist/providers/zoom.js +4 -5
  131. package/package.json +2 -1
  132. package/readme.md +0 -165
@@ -1,5 +1,5 @@
1
1
  import { CodeChallengeMethod, OAuth2Client } from "../client.js";
2
- import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
2
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
3
3
  const authorizationEndpoint = "https://www.etsy.com/oauth/connect";
4
4
  const tokenEndpoint = "https://api.etsy.com/v3/public/oauth/token";
5
5
  const meEndpoint = "https://openapi.etsy.com/v3/application/users/me";
@@ -9,7 +9,7 @@ const defaultScopes = ["email_r"];
9
9
  export class Etsy {
10
10
  client;
11
11
  auth = null;
12
- constructor(clientIdOrOptions, redirectURI) {
12
+ constructor(clientIdOrOptions = {}, 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, null, this.auth.redirectURI);
@@ -36,13 +36,12 @@ export class Etsy {
36
36
  const codeVerifier = generateOAuthCodeVerifier();
37
37
  const url = await this.createAuthorizationURL(state, codeVerifier, resolveScopes(scopes, auth, defaultScopes));
38
38
  const payload = { codeVerifier };
39
- await saveOAuthState(auth.store, state, payload);
40
39
  return { url, state, payload };
41
40
  }
42
41
  async getUser(query, saved) {
43
42
  const auth = requireAuthConfig(this.auth);
44
43
  const { code, state } = parseCallbackQuery(query);
45
- const stored = await resolveOAuthState(auth.store, state, saved);
44
+ const stored = resolveOAuthState(state, saved);
46
45
  if (typeof stored.codeVerifier !== "string") {
47
46
  throw new InvalidOAuthCallbackError("Missing PKCE code verifier for OAuth state");
48
47
  }
@@ -7,10 +7,10 @@ export declare class Facebook {
7
7
  private clientSecret;
8
8
  private redirectURI;
9
9
  private auth;
10
- constructor(options: FacebookOptions);
10
+ constructor(options?: FacebookOptions);
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
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
15
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
15
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
16
16
  }
@@ -1,5 +1,5 @@
1
1
  import { createOAuth2Request, sendTokenRequest } from "../request.js";
2
- import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
2
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
3
3
  const authorizationEndpoint = "https://www.facebook.com/v16.0/dialog/oauth";
4
4
  const tokenEndpoint = "https://graph.facebook.com/v16.0/oauth/access_token";
5
5
  const userEndpoint = "https://graph.facebook.com/v16.0/me";
@@ -10,7 +10,7 @@ export class Facebook {
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,
@@ -53,13 +53,12 @@ export class Facebook {
53
53
  const state = generateOAuthState();
54
54
  const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
55
55
  const payload = {};
56
- await saveOAuthState(auth.store, state, payload);
57
56
  return { url, state, payload };
58
57
  }
59
58
  async getUser(query, saved) {
60
- const auth = requireAuthConfig(this.auth);
59
+ requireAuthConfig(this.auth);
61
60
  const { code, state } = parseCallbackQuery(query);
62
- await resolveOAuthState(auth.store, state, saved);
61
+ resolveOAuthState(state, saved);
63
62
  const tokens = await this.validateAuthorizationCode(code);
64
63
  const url = new URL(userEndpoint);
65
64
  url.searchParams.set("fields", "id,name,email,picture.width(256)");
@@ -5,11 +5,11 @@ export interface FigmaOptions extends ProviderOptions {
5
5
  export declare class Figma {
6
6
  private client;
7
7
  private auth;
8
- constructor(options: FigmaOptions);
8
+ constructor(options?: FigmaOptions);
9
9
  constructor(clientId: string, clientSecret: string, redirectURI: string);
10
10
  createAuthorizationURL(state: string, scopes: string[]): URL;
11
11
  validateAuthorizationCode(code: string): Promise<OAuth2Tokens>;
12
12
  refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
13
13
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
14
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
14
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
15
15
  }
@@ -1,5 +1,5 @@
1
1
  import { OAuth2Client } from "../client.js";
2
- import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
2
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
3
3
  const authorizationEndpoint = "https://www.figma.com/oauth";
4
4
  const tokenEndpoint = "https://api.figma.com/v1/oauth/token";
5
5
  const refreshEndpoint = "https://api.figma.com/v1/oauth/refresh";
@@ -9,7 +9,7 @@ const defaultScopes = ["current_user:read"];
9
9
  export class Figma {
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, {
15
15
  clientSecret: true,
@@ -38,13 +38,12 @@ export class Figma {
38
38
  const state = generateOAuthState();
39
39
  const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
40
40
  const payload = {};
41
- await saveOAuthState(auth.store, state, payload);
42
41
  return { url, state, payload };
43
42
  }
44
43
  async getUser(query, saved) {
45
- const auth = requireAuthConfig(this.auth);
44
+ requireAuthConfig(this.auth);
46
45
  const { code, state } = parseCallbackQuery(query);
47
- await resolveOAuthState(auth.store, state, saved);
46
+ resolveOAuthState(state, saved);
48
47
  const tokens = await this.validateAuthorizationCode(code);
49
48
  const profile = await fetchUserProfile(userEndpoint, tokens.accessToken());
50
49
  return {
@@ -9,11 +9,11 @@ export declare class Gitea {
9
9
  private baseURL;
10
10
  private client;
11
11
  private auth;
12
- constructor(options: GiteaOptions);
12
+ constructor(options?: GiteaOptions);
13
13
  constructor(baseURL: string, clientId: string, clientSecret: string | null, redirectURI: string);
14
14
  createAuthorizationURL(state: string, codeVerifier: string, scopes: string[]): Promise<URL>;
15
15
  validateAuthorizationCode(code: string, codeVerifier: string): Promise<OAuth2Tokens>;
16
16
  refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
17
17
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
18
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
18
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
19
19
  }
@@ -1,6 +1,6 @@
1
1
  import { CodeChallengeMethod, OAuth2Client } from "../client.js";
2
2
  import { joinURIAndPath } from "../request.js";
3
- import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, requireProviderOption, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
3
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, requireProviderOption, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
4
4
  const envPrefix = "GITEA";
5
5
  const defaultScopes = ["read:user"];
6
6
  export class Gitea {
@@ -9,7 +9,7 @@ export class Gitea {
9
9
  baseURL;
10
10
  client;
11
11
  auth = null;
12
- constructor(baseURLOrOptions, clientId, clientSecret, redirectURI) {
12
+ constructor(baseURLOrOptions = {}, clientId, clientSecret, redirectURI) {
13
13
  if (typeof baseURLOrOptions === "object") {
14
14
  this.auth = resolveAuthConfig(envPrefix, baseURLOrOptions, { redirectURI: true });
15
15
  this.baseURL = requireProviderOption(baseURLOrOptions.baseURL, envPrefix, "BASE_URL", "baseURL");
@@ -40,13 +40,12 @@ export class Gitea {
40
40
  const codeVerifier = generateOAuthCodeVerifier();
41
41
  const url = await this.createAuthorizationURL(state, codeVerifier, resolveScopes(scopes, auth, defaultScopes));
42
42
  const payload = { codeVerifier };
43
- await saveOAuthState(auth.store, state, payload);
44
43
  return { url, state, payload };
45
44
  }
46
45
  async getUser(query, saved) {
47
- const auth = requireAuthConfig(this.auth);
46
+ requireAuthConfig(this.auth);
48
47
  const { code, state } = parseCallbackQuery(query);
49
- const stored = await resolveOAuthState(auth.store, state, saved);
48
+ const stored = resolveOAuthState(state, saved);
50
49
  if (typeof stored.codeVerifier !== "string") {
51
50
  throw new InvalidOAuthCallbackError("Missing PKCE code verifier for OAuth state");
52
51
  }
@@ -7,11 +7,11 @@ export declare class GitHub {
7
7
  private clientSecret;
8
8
  private redirectURI;
9
9
  private auth;
10
- constructor(options: GitHubOptions);
10
+ constructor(options?: GitHubOptions);
11
11
  constructor(clientId: string, clientSecret: string, redirectURI: string | null);
12
12
  createAuthorizationURL(state: string, scopes: string[]): URL;
13
13
  validateAuthorizationCode(code: string): Promise<OAuth2Tokens>;
14
14
  refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
15
15
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
16
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
16
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
17
17
  }
@@ -1,6 +1,6 @@
1
1
  import { ArcticFetchError, createOAuth2Request, createOAuth2RequestError, encodeBasicCredentials, UnexpectedErrorResponseBodyError, UnexpectedResponseError } from "../request.js";
2
2
  import { OAuth2Tokens } from "../oauth2.js";
3
- import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
3
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
4
4
  const authorizationEndpoint = "https://github.com/login/oauth/authorize";
5
5
  const tokenEndpoint = "https://github.com/login/oauth/access_token";
6
6
  const userEndpoint = "https://api.github.com/user";
@@ -12,7 +12,7 @@ export class GitHub {
12
12
  clientSecret;
13
13
  redirectURI;
14
14
  auth = null;
15
- constructor(clientIdOrOptions, clientSecret, redirectURI) {
15
+ constructor(clientIdOrOptions = {}, clientSecret, redirectURI) {
16
16
  if (typeof clientIdOrOptions === "object") {
17
17
  this.auth = resolveAuthConfig(envPrefix, clientIdOrOptions, { clientSecret: true });
18
18
  this.clientId = this.auth.clientId;
@@ -66,13 +66,12 @@ export class GitHub {
66
66
  const state = generateOAuthState();
67
67
  const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
68
68
  const payload = {};
69
- await saveOAuthState(auth.store, state, payload);
70
69
  return { url, state, payload };
71
70
  }
72
71
  async getUser(query, saved) {
73
- const auth = requireAuthConfig(this.auth);
72
+ requireAuthConfig(this.auth);
74
73
  const { code, state } = parseCallbackQuery(query);
75
- await resolveOAuthState(auth.store, state, saved);
74
+ resolveOAuthState(state, saved);
76
75
  const tokens = await this.validateAuthorizationCode(code);
77
76
  const accessToken = tokens.accessToken();
78
77
  const profile = await fetchUserProfile(userEndpoint, accessToken);
@@ -10,12 +10,12 @@ export declare class GitLab {
10
10
  private baseURL;
11
11
  private client;
12
12
  private auth;
13
- constructor(options: GitLabOptions);
13
+ constructor(options?: GitLabOptions);
14
14
  constructor(baseURL: string, clientId: string, clientSecret: string | null, redirectURI: string);
15
15
  createAuthorizationURL(state: string, scopes: string[]): URL;
16
16
  validateAuthorizationCode(code: string): Promise<OAuth2Tokens>;
17
17
  refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
18
18
  revokeToken(token: string): Promise<void>;
19
19
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
20
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
20
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
21
21
  }
@@ -1,6 +1,6 @@
1
1
  import { OAuth2Client } from "../client.js";
2
2
  import { joinURIAndPath } from "../request.js";
3
- import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, requireProviderOption, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
3
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, requireProviderOption, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
4
4
  const envPrefix = "GITLAB";
5
5
  const defaultScopes = ["openid", "profile", "email"];
6
6
  export class GitLab {
@@ -10,7 +10,7 @@ export class GitLab {
10
10
  baseURL;
11
11
  client;
12
12
  auth = null;
13
- constructor(baseURLOrOptions, clientId, clientSecret, redirectURI) {
13
+ constructor(baseURLOrOptions = {}, clientId, clientSecret, redirectURI) {
14
14
  if (typeof baseURLOrOptions === "object") {
15
15
  this.auth = resolveAuthConfig(envPrefix, baseURLOrOptions, { redirectURI: true });
16
16
  this.baseURL = requireProviderOption(baseURLOrOptions.baseURL, envPrefix, "BASE_URL", "baseURL");
@@ -44,13 +44,12 @@ export class GitLab {
44
44
  const state = generateOAuthState();
45
45
  const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
46
46
  const payload = {};
47
- await saveOAuthState(auth.store, state, payload);
48
47
  return { url, state, payload };
49
48
  }
50
49
  async getUser(query, saved) {
51
- const auth = requireAuthConfig(this.auth);
50
+ requireAuthConfig(this.auth);
52
51
  const { code, state } = parseCallbackQuery(query);
53
- await resolveOAuthState(auth.store, state, saved);
52
+ resolveOAuthState(state, saved);
54
53
  const tokens = await this.validateAuthorizationCode(code);
55
54
  // GitLab id_tokens omit profile claims, so always use the OIDC userinfo endpoint.
56
55
  const userinfoEndpoint = joinURIAndPath(this.baseURL, "/oauth/userinfo");
@@ -5,12 +5,12 @@ export interface GoogleOptions extends ProviderOptions {
5
5
  export declare class Google {
6
6
  private client;
7
7
  private auth;
8
- constructor(options: GoogleOptions);
8
+ constructor(options?: GoogleOptions);
9
9
  constructor(clientId: string, clientSecret: string, 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
14
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
15
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
15
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
16
16
  }
@@ -1,6 +1,6 @@
1
1
  import { OAuth2Client, CodeChallengeMethod } from "../client.js";
2
2
  import { decodeIdToken } from "../oidc.js";
3
- import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
3
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
4
4
  const authorizationEndpoint = "https://accounts.google.com/o/oauth2/v2/auth";
5
5
  const tokenEndpoint = "https://oauth2.googleapis.com/token";
6
6
  const tokenRevocationEndpoint = "https://oauth2.googleapis.com/revoke";
@@ -10,7 +10,7 @@ const defaultScopes = ["openid", "profile", "email"];
10
10
  export class Google {
11
11
  client;
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,
@@ -43,13 +43,12 @@ export class Google {
43
43
  const codeVerifier = generateOAuthCodeVerifier();
44
44
  const url = await this.createAuthorizationURL(state, codeVerifier, resolveScopes(scopes, auth, defaultScopes));
45
45
  const payload = { codeVerifier };
46
- await saveOAuthState(auth.store, state, payload);
47
46
  return { url, state, payload };
48
47
  }
49
48
  async getUser(query, saved) {
50
- const auth = requireAuthConfig(this.auth);
49
+ requireAuthConfig(this.auth);
51
50
  const { code, state } = parseCallbackQuery(query);
52
- const stored = await resolveOAuthState(auth.store, state, saved);
51
+ const stored = resolveOAuthState(state, saved);
53
52
  if (typeof stored.codeVerifier !== "string") {
54
53
  throw new InvalidOAuthCallbackError("Missing PKCE code verifier for OAuth state");
55
54
  }
@@ -5,12 +5,12 @@ export interface IntuitOptions extends ProviderOptions {
5
5
  export declare class Intuit {
6
6
  private client;
7
7
  private auth;
8
- constructor(options: IntuitOptions);
8
+ constructor(options?: IntuitOptions);
9
9
  constructor(clientId: string, clientSecret: string, redirectURI: string);
10
10
  createAuthorizationURL(state: string, scopes: string[]): URL;
11
11
  validateAuthorizationCode(code: string): Promise<OAuth2Tokens>;
12
12
  refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
13
13
  revokeToken(token: string): Promise<void>;
14
14
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
15
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
15
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
16
16
  }
@@ -1,5 +1,5 @@
1
1
  import { OAuth2Client } from "../client.js";
2
- import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
2
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
3
3
  const authorizationEndpoint = "https://appcenter.intuit.com/connect/oauth2";
4
4
  const tokenEndpoint = "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer";
5
5
  const tokenRevocationEndpoint = "https://developer.API.intuit.com/v2/oauth2/tokens/revoke";
@@ -9,7 +9,7 @@ const defaultScopes = ["openid", "profile", "email"];
9
9
  export class Intuit {
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, {
15
15
  clientSecret: true,
@@ -41,13 +41,12 @@ export class Intuit {
41
41
  const state = generateOAuthState();
42
42
  const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
43
43
  const payload = {};
44
- await saveOAuthState(auth.store, state, payload);
45
44
  return { url, state, payload };
46
45
  }
47
46
  async getUser(query, saved) {
48
- const auth = requireAuthConfig(this.auth);
47
+ requireAuthConfig(this.auth);
49
48
  const { code, state } = parseCallbackQuery(query);
50
- await resolveOAuthState(auth.store, state, saved);
49
+ resolveOAuthState(state, saved);
51
50
  const tokens = await this.validateAuthorizationCode(code);
52
51
  // Intuit id_tokens omit profile claims, so always use the OIDC userinfo endpoint.
53
52
  const claims = await fetchUserProfile(userinfoEndpoint, tokens.accessToken());
@@ -7,11 +7,11 @@ export declare class Kakao {
7
7
  private clientSecret;
8
8
  private redirectURI;
9
9
  private auth;
10
- constructor(options: KakaoOptions);
10
+ constructor(options?: KakaoOptions);
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
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
16
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
16
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
17
17
  }
@@ -1,5 +1,5 @@
1
1
  import { createOAuth2Request, sendTokenRequest } from "../request.js";
2
- import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
2
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthState, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
3
3
  const authorizationEndpoint = "https://kauth.kakao.com/oauth/authorize";
4
4
  const tokenEndpoint = "https://kauth.kakao.com/oauth/token";
5
5
  const userEndpoint = "https://kapi.kakao.com/v2/user/me";
@@ -10,7 +10,7 @@ export class Kakao {
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,
@@ -63,13 +63,12 @@ export class Kakao {
63
63
  const state = generateOAuthState();
64
64
  const url = this.createAuthorizationURL(state, resolveScopes(scopes, auth, defaultScopes));
65
65
  const payload = {};
66
- await saveOAuthState(auth.store, state, payload);
67
66
  return { url, state, payload };
68
67
  }
69
68
  async getUser(query, saved) {
70
- const auth = requireAuthConfig(this.auth);
69
+ requireAuthConfig(this.auth);
71
70
  const { code, state } = parseCallbackQuery(query);
72
- await resolveOAuthState(auth.store, state, saved);
71
+ resolveOAuthState(state, saved);
73
72
  const tokens = await this.validateAuthorizationCode(code);
74
73
  const profile = await fetchUserProfile(userEndpoint, tokens.accessToken());
75
74
  let name = null;
@@ -10,12 +10,12 @@ export declare class KeyCloak {
10
10
  private userinfoEndpoint;
11
11
  private client;
12
12
  private auth;
13
- constructor(options: KeyCloakOptions);
13
+ constructor(options?: KeyCloakOptions);
14
14
  constructor(realmURL: 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
19
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
20
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
20
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
21
21
  }
@@ -1,6 +1,6 @@
1
1
  import { CodeChallengeMethod, OAuth2Client } from "../client.js";
2
2
  import { decodeIdToken } from "../oidc.js";
3
- import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, requireProviderOption, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
3
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, requireProviderOption, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
4
4
  const envPrefix = "KEYCLOAK";
5
5
  const defaultScopes = ["openid", "profile", "email"];
6
6
  export class KeyCloak {
@@ -10,7 +10,7 @@ export class KeyCloak {
10
10
  userinfoEndpoint;
11
11
  client;
12
12
  auth = null;
13
- constructor(realmURLOrOptions, clientId, clientSecret, redirectURI) {
13
+ constructor(realmURLOrOptions = {}, clientId, clientSecret, redirectURI) {
14
14
  let realmURL;
15
15
  if (typeof realmURLOrOptions === "object") {
16
16
  this.auth = resolveAuthConfig(envPrefix, realmURLOrOptions, { redirectURI: true });
@@ -47,13 +47,12 @@ export class KeyCloak {
47
47
  const codeVerifier = generateOAuthCodeVerifier();
48
48
  const url = await this.createAuthorizationURL(state, codeVerifier, resolveScopes(scopes, auth, defaultScopes));
49
49
  const payload = { codeVerifier };
50
- await saveOAuthState(auth.store, state, payload);
51
50
  return { url, state, payload };
52
51
  }
53
52
  async getUser(query, saved) {
54
- const auth = requireAuthConfig(this.auth);
53
+ requireAuthConfig(this.auth);
55
54
  const { code, state } = parseCallbackQuery(query);
56
- const stored = await resolveOAuthState(auth.store, state, saved);
55
+ const stored = resolveOAuthState(state, saved);
57
56
  if (typeof stored.codeVerifier !== "string") {
58
57
  throw new InvalidOAuthCallbackError("Missing PKCE code verifier for OAuth state");
59
58
  }
@@ -7,12 +7,12 @@ export declare class Kick {
7
7
  private clientSecret;
8
8
  private redirectURI;
9
9
  private auth;
10
- constructor(options: KickOptions);
10
+ constructor(options?: KickOptions);
11
11
  constructor(clientId: string, clientSecret: string, redirectURI: string);
12
12
  createAuthorizationURL(state: string, codeVerifier: string, scopes: string[]): Promise<URL>;
13
13
  validateAuthorizationCode(code: string, codeVerifier: string): Promise<OAuth2Tokens>;
14
14
  refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
15
15
  revokeToken(token: string): Promise<void>;
16
16
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
17
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
17
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
18
18
  }
@@ -1,6 +1,6 @@
1
1
  import { createOAuth2Request, sendTokenRequest, sendTokenRevocationRequest } from "../request.js";
2
2
  import { createS256CodeChallenge } from "../oauth2.js";
3
- import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, OAuthProviderError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
3
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, OAuthProviderError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
4
4
  const authorizationEndpoint = "https://id.kick.com/oauth/authorize";
5
5
  const tokenEndpoint = "https://id.kick.com/oauth/token";
6
6
  const tokenRevocationEndpoint = "https://id.kick.com/oauth/revoke";
@@ -12,7 +12,7 @@ export class Kick {
12
12
  clientSecret;
13
13
  redirectURI;
14
14
  auth = null;
15
- constructor(clientIdOrOptions, clientSecret, redirectURI) {
15
+ constructor(clientIdOrOptions = {}, clientSecret, redirectURI) {
16
16
  if (typeof clientIdOrOptions === "object") {
17
17
  this.auth = resolveAuthConfig(envPrefix, clientIdOrOptions, {
18
18
  clientSecret: true,
@@ -76,13 +76,12 @@ export class Kick {
76
76
  const codeVerifier = generateOAuthCodeVerifier();
77
77
  const url = await this.createAuthorizationURL(state, codeVerifier, resolveScopes(scopes, auth, defaultScopes));
78
78
  const payload = { codeVerifier };
79
- await saveOAuthState(auth.store, state, payload);
80
79
  return { url, state, payload };
81
80
  }
82
81
  async getUser(query, saved) {
83
- const auth = requireAuthConfig(this.auth);
82
+ requireAuthConfig(this.auth);
84
83
  const { code, state } = parseCallbackQuery(query);
85
- const stored = await resolveOAuthState(auth.store, state, saved);
84
+ const stored = resolveOAuthState(state, saved);
86
85
  if (typeof stored.codeVerifier !== "string") {
87
86
  throw new InvalidOAuthCallbackError("Missing PKCE code verifier for OAuth state");
88
87
  }
@@ -5,10 +5,10 @@ export interface LichessOptions extends ProviderOptions {
5
5
  export declare class Lichess {
6
6
  private client;
7
7
  private auth;
8
- constructor(options: LichessOptions);
8
+ constructor(options?: LichessOptions);
9
9
  constructor(clientId: string, redirectURI: string);
10
10
  createAuthorizationURL(state: string, codeVerifier: string, scopes: string[]): Promise<URL>;
11
11
  validateAuthorizationCode(code: string, codeVerifier: string): Promise<OAuth2Tokens>;
12
12
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
13
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
13
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
14
14
  }
@@ -1,5 +1,5 @@
1
1
  import { OAuth2Client, CodeChallengeMethod } from "../client.js";
2
- import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
2
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
3
3
  const authorizationEndpoint = "https://lichess.org/oauth";
4
4
  const tokenEndpoint = "https://lichess.org/api/token";
5
5
  const accountEndpoint = "https://lichess.org/api/account";
@@ -9,7 +9,7 @@ const defaultScopes = ["email:read"];
9
9
  export class Lichess {
10
10
  client;
11
11
  auth = null;
12
- constructor(clientIdOrOptions, redirectURI) {
12
+ constructor(clientIdOrOptions = {}, 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, null, this.auth.redirectURI);
@@ -32,13 +32,12 @@ export class Lichess {
32
32
  const codeVerifier = generateOAuthCodeVerifier();
33
33
  const url = await this.createAuthorizationURL(state, codeVerifier, resolveScopes(scopes, auth, defaultScopes));
34
34
  const payload = { codeVerifier };
35
- await saveOAuthState(auth.store, state, payload);
36
35
  return { url, state, payload };
37
36
  }
38
37
  async getUser(query, saved) {
39
- const auth = requireAuthConfig(this.auth);
38
+ requireAuthConfig(this.auth);
40
39
  const { code, state } = parseCallbackQuery(query);
41
- const stored = await resolveOAuthState(auth.store, state, saved);
40
+ const stored = resolveOAuthState(state, saved);
42
41
  if (typeof stored.codeVerifier !== "string") {
43
42
  throw new InvalidOAuthCallbackError("Missing PKCE code verifier for OAuth state");
44
43
  }
@@ -7,11 +7,11 @@ export declare class Line {
7
7
  private clientSecret;
8
8
  private redirectURI;
9
9
  private auth;
10
- constructor(options: LineOptions);
10
+ constructor(options?: LineOptions);
11
11
  constructor(clientId: string, clientSecret: string, redirectURI: string);
12
12
  createAuthorizationURL(state: string, codeVerifier: string, scopes: string[]): Promise<URL>;
13
13
  validateAuthorizationCode(code: string, codeVerifier: string): Promise<OAuth2Tokens>;
14
14
  refreshAccessToken(refreshToken: string): Promise<OAuth2Tokens>;
15
15
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
16
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
16
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
17
17
  }
@@ -1,7 +1,7 @@
1
1
  import { createS256CodeChallenge } from "../oauth2.js";
2
2
  import { createOAuth2Request, sendTokenRequest } from "../request.js";
3
3
  import { decodeIdToken } from "../oidc.js";
4
- import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes, saveOAuthState } from "../auth.js";
4
+ import { extractOAuthTokens, fetchUserProfile, generateOAuthCodeVerifier, generateOAuthState, InvalidOAuthCallbackError, parseCallbackQuery, profileId, profileString, requireAuthConfig, resolveAuthConfig, resolveOAuthState, resolveScopes } from "../auth.js";
5
5
  const authorizationEndpoint = "https://access.line.me/oauth2/v2.1/authorize";
6
6
  const tokenEndpoint = "https://api.line.me/oauth2/v2.1/token";
7
7
  const userinfoEndpoint = "https://api.line.me/oauth2/v2.1/userinfo";
@@ -12,7 +12,7 @@ export class Line {
12
12
  clientSecret;
13
13
  redirectURI;
14
14
  auth = null;
15
- constructor(clientIdOrOptions, clientSecret, redirectURI) {
15
+ constructor(clientIdOrOptions = {}, clientSecret, redirectURI) {
16
16
  if (typeof clientIdOrOptions === "object") {
17
17
  this.auth = resolveAuthConfig(envPrefix, clientIdOrOptions, {
18
18
  clientSecret: true,
@@ -70,13 +70,12 @@ export class Line {
70
70
  const codeVerifier = generateOAuthCodeVerifier();
71
71
  const url = await this.createAuthorizationURL(state, codeVerifier, resolveScopes(scopes, auth, defaultScopes));
72
72
  const payload = { codeVerifier };
73
- await saveOAuthState(auth.store, state, payload);
74
73
  return { url, state, payload };
75
74
  }
76
75
  async getUser(query, saved) {
77
- const auth = requireAuthConfig(this.auth);
76
+ requireAuthConfig(this.auth);
78
77
  const { code, state } = parseCallbackQuery(query);
79
- const stored = await resolveOAuthState(auth.store, state, saved);
78
+ const stored = resolveOAuthState(state, saved);
80
79
  if (typeof stored.codeVerifier !== "string") {
81
80
  throw new InvalidOAuthCallbackError("Missing PKCE code verifier for OAuth state");
82
81
  }
@@ -7,10 +7,10 @@ export declare class Linear {
7
7
  private clientSecret;
8
8
  private redirectURI;
9
9
  private auth;
10
- constructor(options: LinearOptions);
10
+ constructor(options?: LinearOptions);
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
  getAuthorizationURL(scopes?: string[]): Promise<AuthorizationRequest>;
15
- getUser(query: OAuthCallbackQuery, saved?: SavedOAuthState): Promise<OAuthUser>;
15
+ getUser(query: OAuthCallbackQuery, saved: SavedOAuthState): Promise<OAuthUser>;
16
16
  }