fix(common): extention interceptor response meta (#4980)

This commit is contained in:
Shreyas 2025-04-10 13:28:20 +05:30 committed by GitHub
parent 3c150ec90a
commit 80b63545f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -227,6 +227,7 @@ export class ExtensionKernelInterceptorService
}
try {
const startTime = Date.now()
let requestData: any = null
if (request.content) {
@ -281,14 +282,40 @@ export class ExtensionKernelInterceptorService
wantsBinary: true,
})
const endTime = Date.now()
const headersSize = JSON.stringify(extensionResponse.headers).length
const bodySize = extensionResponse.data?.byteLength || 0
const totalSize = headersSize + bodySize
const timingMeta = extensionResponse.timeData
? {
start: extensionResponse.timeData.startTime,
end: extensionResponse.timeData.endTime,
}
: {
start: startTime,
end: endTime,
}
return E.right({
id: request.id,
status: extensionResponse.status,
statusText: extensionResponse.statusText,
version: request.version,
headers: extensionResponse.headers,
body: body.body(
extensionResponse.data,
extensionResponse.headers["content-type"]
),
meta: {
timing: timingMeta,
size: {
headers: headersSize,
body: bodySize,
total: totalSize,
},
},
})
} catch (e) {
console.error(e)
@ -296,11 +323,37 @@ export class ExtensionKernelInterceptorService
if (e instanceof Error && "response" in e) {
const response = (e as any).response
if (response) {
const headersSize = JSON.stringify(response.headers).length
const bodySize = response.data?.byteLength || 0
const totalSize = headersSize + bodySize
const timingMeta = response.timeData
? {
start: response.timeData.startTime,
end: response.timeData.endTime,
}
: {
// Fallback timing - at least show it took some time,
// this is mainly for cross compat with other interceptor settings.
start: Date.now() - 1,
end: Date.now(),
}
return E.right({
id: request.id,
status: response.status,
statusText: response.statusText,
version: request.version,
headers: response.headers,
body: body.body(response.data, response.headers["content-type"]),
meta: {
timing: timingMeta,
size: {
headers: headersSize,
body: bodySize,
total: totalSize,
},
},
})
}
}