Visual improvements to debug mode for better information visibility
This commit is contained in:
56
dist/chromium/background.js
vendored
56
dist/chromium/background.js
vendored
@@ -19,6 +19,48 @@ function createMessageTypes() {
|
||||
});
|
||||
}
|
||||
|
||||
// Source: src/shared/debug-body.js
|
||||
function createDebugBodyPreview(text, limit) {
|
||||
if (text.length <= limit) return { value: text || "(empty response body)", truncated: false };
|
||||
try {
|
||||
const normalized = text.replace(/^\uFEFF/, "").trimStart()
|
||||
.replace(/^\)\]\}',?\s*/, "").replace(/^while\s*\(1\);\s*/, "");
|
||||
let value = JSON.parse(normalized);
|
||||
for (let depth = 0; depth < 2 && typeof value === "string" && /^\s*[\[{]/.test(value); depth += 1) {
|
||||
try { value = JSON.parse(value); } catch { break; }
|
||||
}
|
||||
// Bound retained data without cutting JSON syntax or losing sensitive field names.
|
||||
let remaining = Math.max(0, limit - 256);
|
||||
const visit = (node, depth = 0) => {
|
||||
if (remaining <= 64 || depth >= 30) return "[omitted from debug preview]";
|
||||
if (node === null || typeof node !== "object") {
|
||||
const serialized = JSON.stringify(node);
|
||||
if (serialized.length > remaining) {
|
||||
remaining = 0;
|
||||
return "[omitted from debug preview]";
|
||||
}
|
||||
remaining -= serialized.length + 1;
|
||||
return node;
|
||||
}
|
||||
const result = Array.isArray(node) ? [] : Object.create(null);
|
||||
remaining -= 2;
|
||||
for (const key of Object.keys(node)) {
|
||||
const cost = Array.isArray(node) ? 1 : JSON.stringify(key).length + 2;
|
||||
if (remaining < cost + 64) break;
|
||||
remaining -= cost;
|
||||
result[key] = visit(node[key], depth + 1);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
return {
|
||||
value: JSON.stringify({ debugNotice: "Partial response preview: remaining fields/items omitted due to the debug size limit.", preview: visit(value) }),
|
||||
truncated: true
|
||||
};
|
||||
} catch {
|
||||
return { value: `${text.slice(0, limit)}\n... truncated ${text.length - limit} characters`, truncated: true };
|
||||
}
|
||||
}
|
||||
|
||||
// Source: src/background/contracts.js
|
||||
function createBackgroundContracts() {
|
||||
const ORACLE_DOMAIN = "eeho.fa.us2.oraclecloud.com";
|
||||
@@ -742,6 +784,7 @@ function createSpaResponseShapes() {
|
||||
|
||||
// Source: src/services/http/background-json.js
|
||||
function createHttpBackgroundJson({
|
||||
previewDebugBody,
|
||||
DEBUG_BODY_LIMIT,
|
||||
environment
|
||||
}) {
|
||||
@@ -863,17 +906,7 @@ function createHttpBackgroundJson({
|
||||
}
|
||||
|
||||
function createDebugBody(text) {
|
||||
if (text.length > DEBUG_BODY_LIMIT) {
|
||||
return {
|
||||
value: `${text.slice(0, DEBUG_BODY_LIMIT)}\n... truncated ${text.length - DEBUG_BODY_LIMIT} characters`,
|
||||
truncated: true
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
value: text || "(empty response body)",
|
||||
truncated: false
|
||||
};
|
||||
return previewDebugBody(text, DEBUG_BODY_LIMIT);
|
||||
}
|
||||
|
||||
function normalizeDebugHeaders(headers) {
|
||||
@@ -1831,6 +1864,7 @@ function createBackgroundApplication(overrides = {}) {
|
||||
});
|
||||
const spaResponseShapes = createSpaResponseShapes();
|
||||
const httpBackgroundJson = createHttpBackgroundJson({
|
||||
previewDebugBody: createDebugBodyPreview,
|
||||
DEBUG_BODY_LIMIT: contracts.DEBUG_BODY_LIMIT,
|
||||
environment
|
||||
});
|
||||
|
||||
174
dist/chromium/content.js
vendored
174
dist/chromium/content.js
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user