ai-auth
Version:
Complete Auth-Agent SDK - Agent authentication for AI developers + OAuth client integration for website developers
58 lines • 1.67 kB
JavaScript
"use strict";
/**
* Token Manager for OAuth tokens with automatic refresh
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.TokenManager = void 0;
class TokenManager {
accessToken = null;
idToken = null;
refreshToken = null;
tokenType = 'Bearer';
expiresAt = null;
scopes = null;
/**
* Store tokens from OAuth response
*/
setTokens(tokenResponse) {
this.accessToken = tokenResponse.access_token;
this.idToken = tokenResponse.id_token || null;
this.refreshToken = tokenResponse.refresh_token || null;
this.tokenType = tokenResponse.token_type || 'Bearer';
this.scopes = tokenResponse.scope;
// Calculate expiry with 60s buffer
const expiresIn = tokenResponse.expires_in || 3600;
this.expiresAt = Date.now() + (expiresIn - 60) * 1000;
}
/**
* Check if access token is expired
*/
isExpired() {
if (!this.accessToken || !this.expiresAt) {
return true;
}
return Date.now() >= this.expiresAt;
}
/**
* Get current access token
* @throws Error if token is expired
*/
getAccessToken() {
if (this.isExpired()) {
throw new Error('Access token expired. Please refresh or re-authenticate.');
}
return this.accessToken;
}
/**
* Clear all stored tokens
*/
clear() {
this.accessToken = null;
this.idToken = null;
this.refreshToken = null;
this.expiresAt = null;
this.scopes = null;
}
}
exports.TokenManager = TokenManager;
//# sourceMappingURL=token-manager.js.map