aboutsummaryrefslogtreecommitdiff
path: root/src/domains/page.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/domains/page.ts')
-rw-r--r--src/domains/page.ts18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/domains/page.ts b/src/domains/page.ts
index c202ef1..909963f 100644
--- a/src/domains/page.ts
+++ b/src/domains/page.ts
@@ -2,9 +2,25 @@ import { Type } from "typebox";
import { type Result, err, ok } from "../util/result";
import { defineBrowserTool, type ToolErr, type ToolOk } from "../util/tool";
import { evalJs } from "./cdp-call";
-import { sleep } from "../util/time";
import { safeJs } from "../util/js-template";
+const sleep = (ms: number, signal?: AbortSignal): Promise<void> =>
+ new Promise((resolve, reject) => {
+ if (signal?.aborted) {
+ reject(signal.reason ?? new Error("aborted"));
+ return;
+ }
+ const onAbort = (): void => {
+ clearTimeout(timer);
+ reject(signal?.reason ?? new Error("aborted"));
+ };
+ const timer = setTimeout(() => {
+ signal?.removeEventListener("abort", onAbort);
+ resolve();
+ }, ms);
+ signal?.addEventListener("abort", onAbort, { once: true });
+ });
+
export const pageInfoTool = defineBrowserTool({
name: "browser_page_info",
label: "Browser Page Info",