import { logger } from "@utils/logger"; import { ApiClient } from "./core/ApiClient"; import { ApiClientConfig } from "@utils/types"; logger.setEnabled(true); async function testApiManager() { logger.log("--- NEXLI API MANAGER TEST STARTING ---"); const config: Partial = { baseUrl: "https://jsonplaceholder.typicode.com", retry: { maxAttempts: 2, delayMs: 500, statusCodes: [500], }, rateLimit: { maxRequests: 3, perMilliseconds: 5000, }, queue: { concurrency: 2, }, offline: { enabled: false, storageKey: "test_offline_requests", limit: 10, }, }; const client = new ApiClient(config); logger.log("\n--- 1. Rate Limit and Concurrency Test (5 requests sent) ---"); for (let i = 1; i <= 5; i++) { client .get(`/posts/${i}`, undefined, { priority: i * 2 }) .then((res) => logger.log(`[REQ ${i} SUCCESS] Status: ${res.status}`)) .catch((err) => logger.error(`[REQ ${i} FAILED]`, err.message)); } await new Promise((resolve) => setTimeout(resolve, 6000)); logger.log("\n--- 2. POST Test ---"); client .post( "/posts", { title: "nexli test", body: "api manager" }, { priority: 1 } ) .then((res) => logger.log(`[POST SUCCESS] Created ID: ${res.data.id}`)) .catch((err) => logger.error(`[POST FAILED]`, err.message)); await new Promise((resolve) => setTimeout(resolve, 1000)); } testApiManager();