UNPKG

@remcostoeten/fync

Version:

A unified TypeScript library for easy access to popular APIs (GitHub, Spotify, GitLab, etc.)

117 lines (116 loc) • 3.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.demoErrorHandling = demoErrorHandling; var _exports = require("./exports"); /** * Demo function showing how the error handling system works */ async function demoErrorHandling() { console.log("šŸš€ Initializing Error Handling System..."); // Initialize the error handling system (0, _exports.initializeErrorHandling)(); // Create an HTTP error handler const errorHandler = new _exports.HttpErrorHandler(); console.log("\nšŸ“ Testing different error scenarios:\n"); // Test 1: Network error console.log("1ļøāƒ£ Testing network error..."); try { await errorHandler.execute(async () => { throw new Error("fetch failed - network error"); }, { service: "spotify", endpoint: "/me", method: "GET" }); } catch (error) { if (error instanceof _exports.BaseError) { console.log("āœ… Network error handled:", { code: error.info.code, category: error.info.category, userMessage: error.info.userMessage, isRetryable: error.info.isRetryable }); } } // Test 2: HTTP 401 error console.log("\n2ļøāƒ£ Testing authentication error..."); try { await errorHandler.execute(async () => { throw new Error("HTTP 401: Unauthorized - Invalid token"); }, { service: "spotify", endpoint: "/me/playlists", method: "GET" }); } catch (error) { if (error instanceof _exports.BaseError) { console.log("āœ… Auth error handled:", { code: error.info.code, category: error.info.category, userMessage: error.info.userMessage, suggestedAction: error.info.suggestedAction, isRetryable: error.info.isRetryable }); } } // Test 3: Rate limiting console.log("\n3ļøāƒ£ Testing rate limit error..."); try { await errorHandler.execute(async () => { throw new Error("HTTP 429: Too Many Requests - Rate limit exceeded"); }, { service: "spotify", endpoint: "/search", method: "GET" }); } catch (error) { if (error instanceof _exports.BaseError) { console.log("āœ… Rate limit error handled:", { code: error.info.code, category: error.info.category, userMessage: error.info.userMessage, isRetryable: error.info.isRetryable, retryCount: error.info.context.retryCount }); } } // Test 4: Spotify-specific error console.log("\n4ļøāƒ£ Testing Spotify premium error..."); try { await errorHandler.execute(async () => { throw new Error("Player command failed: Premium required"); }, { service: "spotify", endpoint: "/me/player/play", method: "PUT" }); } catch (error) { if (error instanceof _exports.BaseError) { console.log("āœ… Spotify premium error handled:", { code: error.info.code, category: error.info.category, userMessage: error.info.userMessage, suggestedAction: error.info.suggestedAction, documentation: error.info.documentation }); } } // Test 5: Successful request (no error) console.log("\n5ļøāƒ£ Testing successful request..."); const result = await errorHandler.execute(async () => { return { message: "Success!", data: { user: "test" } }; }, { service: "spotify", endpoint: "/me", method: "GET" }); console.log("āœ… Successful request:", result); console.log("\nšŸŽ‰ Error handling system demo completed!"); }