From 74d80644314a69df25ff1e5823b8b92444c4e3ad Mon Sep 17 00:00:00 2001 From: Nadeem Patwekar Date: Wed, 1 Oct 2025 12:29:29 +0530 Subject: [PATCH 1/3] fix: Add logging interceptors for request and response in stack function --- src/lib/contentstack.ts | 61 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/lib/contentstack.ts b/src/lib/contentstack.ts index 057a4e8..c07f5a2 100644 --- a/src/lib/contentstack.ts +++ b/src/lib/contentstack.ts @@ -104,6 +104,67 @@ export function stack(config: StackConfig): StackClass { }); }; } + // LogHandler interceptors + if (config.debug) { + // Request interceptor for logging + client.interceptors.request.use((requestConfig: any) => { + config.logHandler!('info', { + type: 'request', + method: requestConfig.method?.toUpperCase(), + url: requestConfig.url, + headers: requestConfig.headers, + params: requestConfig.params, + timestamp: new Date().toISOString() + }); + return requestConfig; + }); + + // Response interceptor for logging + client.interceptors.response.use( + (response: any) => { + const level = getLogLevelFromStatus(response.status); + config.logHandler!(level, { + type: 'response', + status: response.status, + statusText: response.statusText, + url: response.config?.url, + method: response.config?.method?.toUpperCase(), + headers: response.headers, + data: response.data, + timestamp: new Date().toISOString() + }); + return response; + }, + (error: any) => { + const status = error.response?.status || 0; + const level = getLogLevelFromStatus(status); + config.logHandler!(level, { + type: 'response_error', + status: status, + statusText: error.response?.statusText || error.message, + url: error.config?.url, + method: error.config?.method?.toUpperCase(), + error: error.message, + timestamp: new Date().toISOString() + }); + throw error; + } + ); + } + + // Helper function to determine log level based on HTTP status code + function getLogLevelFromStatus(status: number): string { + if (status >= 200 && status < 300) { + return 'info'; + } else if (status >= 300 && status < 500) { + return 'warn'; + } else if (status >= 500) { + return 'error'; + } else { + return 'debug'; + } + } + // Retry policy handlers const errorHandler = (error: any) => { return retryResponseErrorHandler(error, config, client); From 73a36137368b56692bffb284f14ad03a0ed76c8e Mon Sep 17 00:00:00 2001 From: Nadeem Patwekar Date: Wed, 1 Oct 2025 12:31:30 +0530 Subject: [PATCH 2/3] chore: Update version to 4.10.1 and add logHandler interceptors to CHANGELOG --- CHANGELOG.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0700ef..a750e69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +### Version: 4.10.1 +#### Date: Oct-01-2025 +Enhancement: Added logHandler interceptors for request and response logging + ### Version: 4.10.0 #### Date: Sep-22-2025 Fix: Enhance retry logic to use configured retryDelay diff --git a/package.json b/package.json index 3a5e109..335a0b4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/delivery-sdk", - "version": "4.10.0", + "version": "4.10.1", "type": "module", "license": "MIT", "main": "./dist/legacy/index.cjs", From f87365330fc428276c3f42b42a6ccc652a0391a0 Mon Sep 17 00:00:00 2001 From: Nadeem Patwekar Date: Wed, 1 Oct 2025 12:37:00 +0530 Subject: [PATCH 3/3] fix: Update log level determination for HTTP status codes in getLogLevelFromStatus function --- src/lib/contentstack.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/contentstack.ts b/src/lib/contentstack.ts index c07f5a2..5a8d15f 100644 --- a/src/lib/contentstack.ts +++ b/src/lib/contentstack.ts @@ -156,9 +156,9 @@ export function stack(config: StackConfig): StackClass { function getLogLevelFromStatus(status: number): string { if (status >= 200 && status < 300) { return 'info'; - } else if (status >= 300 && status < 500) { + } else if (status >= 300 && status < 400) { return 'warn'; - } else if (status >= 500) { + } else if (status >= 400) { return 'error'; } else { return 'debug';