Skip to content

Commit 706b73d

Browse files
committed
allow setting of auth token in the constructor
1 parent 9800286 commit 706b73d

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/OAuth2User.ts

+10-8
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ export interface OAuth2UserOptions {
3737
scopes: OAuth2Scopes[];
3838
/** Overwrite request options for all endpoints */
3939
request_options?: Partial<RequestOptions>;
40+
/** Set the auth token */
41+
token?: Token;
4042
}
4143

4244
export type GenerateAuthUrlOptions =
@@ -88,17 +90,17 @@ interface GetTokenResponse {
8890
scope?: string;
8991
}
9092

91-
interface Token extends Omit<GetTokenResponse, 'expires_in'> {
93+
interface Token extends Omit<GetTokenResponse, "expires_in"> {
9294
/** Date that the access_token will expire at. */
93-
expires_at?: Date;
95+
expires_at?: number;
9496
}
9597

9698
function processTokenResponse(token: GetTokenResponse): Token {
9799
const { expires_in, ...rest } = token;
98100
return {
99101
...rest,
100102
...(!!expires_in && {
101-
expires_at: new Date(Date.now() + expires_in * 1000),
103+
expires_at: Date.now() + expires_in * 1000,
102104
}),
103105
};
104106
}
@@ -112,7 +114,9 @@ export class OAuth2User implements AuthClient {
112114
#code_verifier?: string;
113115
#code_challenge?: string;
114116
constructor(options: OAuth2UserOptions) {
115-
this.#options = options;
117+
const { token, ...defaultOptions } = options;
118+
this.#options = defaultOptions;
119+
this.token = token;
116120
}
117121

118122
/**
@@ -155,10 +159,8 @@ export class OAuth2User implements AuthClient {
155159
isAccessTokenExpired(): boolean {
156160
const refresh_token = this.token?.refresh_token;
157161
const expires_at = this.token?.expires_at;
158-
return (
159-
!!refresh_token &&
160-
(!expires_at || expires_at <= new Date(Date.now() + 1000))
161-
);
162+
if (!expires_at) return true;
163+
return !!refresh_token && expires_at <= Date.now() + 1000;
162164
}
163165

164166
/**

0 commit comments

Comments
 (0)