Skip to content

Commit 52a4208

Browse files
author
Dawid Ciepiela
committed
ensure content loaded
1 parent 5ca2cb3 commit 52a4208

File tree

1 file changed

+45
-20
lines changed

1 file changed

+45
-20
lines changed

pkg/api/templates/proxy.js

Lines changed: 45 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -69,31 +69,31 @@
6969
// retryCodes is an array of status codes that should be retried
7070
const retryCodes =
7171
retryConfig.retry_codes &&
72-
Array.isArray(retryConfig.retry_codes) &&
73-
retryConfig.retry_codes.length > 0 &&
74-
retryConfig.retry_codes.every(
75-
(code) =>
76-
typeof code === "number" &&
77-
Number.isInteger(code) &&
78-
validStatusCodes.has(code)
79-
)
72+
Array.isArray(retryConfig.retry_codes) &&
73+
retryConfig.retry_codes.length > 0 &&
74+
retryConfig.retry_codes.every(
75+
(code) =>
76+
typeof code === "number" &&
77+
Number.isInteger(code) &&
78+
validStatusCodes.has(code)
79+
)
8080
? retryConfig.retry_codes
8181
: [];
8282

8383
// maxRetries is the maximum number of retries for a request
8484
const maxRetries =
8585
retryConfig.max_retries &&
86-
typeof retryConfig.max_retries === "number" &&
87-
retryConfig.max_retries >= 0 &&
88-
Number.isInteger(retryConfig.max_retries)
86+
typeof retryConfig.max_retries === "number" &&
87+
retryConfig.max_retries >= 0 &&
88+
Number.isInteger(retryConfig.max_retries)
8989
? retryConfig.max_retries
9090
: 0;
9191

9292
// retryDelay is the delay between retries in milliseconds
9393
const retryDelay =
9494
retryConfig.retry_delay &&
95-
typeof retryConfig.retry_delay === "number" &&
96-
retryConfig.retry_delay >= 0
95+
typeof retryConfig.retry_delay === "number" &&
96+
retryConfig.retry_delay >= 0
9797
? retryConfig.retry_delay
9898
: 0;
9999

@@ -248,20 +248,45 @@
248248
mutation.addedNodes.forEach((node) => {
249249
if (node.nodeType === Node.ELEMENT_NODE) {
250250
processNode(node);
251-
node.querySelectorAll("*").forEach(processNode);
251+
try {
252+
const elements = node.querySelectorAll("*");
253+
elements.forEach(processNode);
254+
} catch (e) {
255+
console.debug("Error processing node children:", e);
256+
}
252257
}
253258
});
254259
});
255260
});
256261

257262
// Process existing content
258-
document.querySelectorAll("*").forEach(processNode);
263+
const processExistingContent = () => {
264+
try {
265+
const elements = document.querySelectorAll("*");
266+
elements.forEach(processNode);
267+
} catch (e) {
268+
console.debug("Error processing existing content:", e);
269+
}
270+
};
259271

260-
// Observe future changes
261-
observer.observe(document.documentElement, {
262-
childList: true,
263-
subtree: true,
264-
});
272+
// Wait for DOM to be ready
273+
if (document.readyState === "loading") {
274+
document.addEventListener("DOMContentLoaded", () => {
275+
processExistingContent();
276+
// Observe future changes
277+
observer.observe(document.documentElement, {
278+
childList: true,
279+
subtree: true,
280+
});
281+
});
282+
} else {
283+
processExistingContent();
284+
// Observe future changes
285+
observer.observe(document.documentElement, {
286+
childList: true,
287+
subtree: true,
288+
});
289+
}
265290

266291
// Handle dynamic XHR/Fetch requests
267292
const originalFetch = window.fetch;

0 commit comments

Comments
 (0)