UNPKG

@lineai/bluebeam-api

Version:

Your unofficial library for Bluebeam API for human and AI developers. Provides TypeScript support, entity classes, and developer-friendly features. Perfect for AI coders, construction professionals, and document management tasks. Includes comprehensive JS

56 lines 4.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AuthInterceptor = void 0; const http_client_1 = require("./http-client"); /** * Interceptor that handles automatic token refresh on 401 errors * Implements the same interface as HttpClient for compatibility */ class AuthInterceptor { constructor(config, auth, storage, autoRefresh) { this.config = config; this.auth = auth; this.storage = storage; this.autoRefresh = autoRefresh; this.httpClient = (0, http_client_1.createHttpClient)(config); } async get(endpoint) { return this.executeWithRetry(() => this.httpClient.get(endpoint)); } async post(endpoint, data, isFormData) { return this.executeWithRetry(() => this.httpClient.post(endpoint, data, isFormData)); } async put(endpoint, data) { return this.executeWithRetry(() => this.httpClient.put(endpoint, data)); } async delete(endpoint) { return this.executeWithRetry(() => this.httpClient.delete(endpoint)); } async executeWithRetry(requestFn) { try { return await requestFn(); } catch (error) { // Only retry on 401 if autoRefresh is enabled if (!this.autoRefresh || error.status !== 401) { throw error; } try { // Refresh token await this.auth.refreshAccessToken(); // Get fresh token from storage const tokens = await this.storage.getTokens(); // Create new HTTP client with fresh token this.httpClient = (0, http_client_1.createHttpClient)(Object.assign(Object.assign({}, this.config), { access_token: tokens === null || tokens === void 0 ? void 0 : tokens.access_token })); // Retry request once return await requestFn(); } catch (refreshError) { // Refresh failed, throw original error throw error; } } } } exports.AuthInterceptor = AuthInterceptor; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYXV0aC1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSwrQ0FBMkU7QUFFM0U7OztHQUdHO0FBQ0gsTUFBYSxlQUFlO0lBRzFCLFlBQ1UsTUFBb0IsRUFDcEIsSUFBaUIsRUFDakIsT0FBcUIsRUFDckIsV0FBb0I7UUFIcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQVM7UUFFNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFBLDhCQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFJLFFBQWdCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQ1IsUUFBZ0IsRUFDaEIsSUFBYyxFQUNkLFVBQW9CO1FBRXBCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUNwRCxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQ1AsUUFBZ0IsRUFDaEIsSUFBYztRQUVkLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBSSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBSSxRQUFnQjtRQUM5QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTyxLQUFLLENBQUMsZ0JBQWdCLENBQzVCLFNBQTJCO1FBRTNCLElBQUk7WUFDRixPQUFPLE1BQU0sU0FBUyxFQUFFLENBQUM7U0FDMUI7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQiw4Q0FBOEM7WUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQzdDLE1BQU0sS0FBSyxDQUFDO2FBQ2I7WUFFRCxJQUFJO2dCQUNGLGdCQUFnQjtnQkFDaEIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBRXJDLCtCQUErQjtnQkFDL0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUU5QywwQ0FBMEM7Z0JBQzFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBQSw4QkFBZ0Isa0NBQzdCLElBQUksQ0FBQyxNQUFNLEtBQ2QsWUFBWSxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLElBQ2xDLENBQUM7Z0JBRUgscUJBQXFCO2dCQUNyQixPQUFPLE1BQU0sU0FBUyxFQUFFLENBQUM7YUFDMUI7WUFBQyxPQUFPLFlBQVksRUFBRTtnQkFDckIsdUNBQXVDO2dCQUN2QyxNQUFNLEtBQUssQ0FBQzthQUNiO1NBQ0Y7SUFDSCxDQUFDO0NBQ0Y7QUF2RUQsMENBdUVDIn0=