diff --git a/src/ArenaPool.zig b/src/ArenaPool.zig
index a48e00a7..7c931df6 100644
--- a/src/ArenaPool.zig
+++ b/src/ArenaPool.zig
@@ -18,6 +18,7 @@
const std = @import("std");
const builtin = @import("builtin");
+const log = @import("log.zig");
const Allocator = std.mem.Allocator;
const ArenaAllocator = std.heap.ArenaAllocator;
@@ -62,7 +63,7 @@ pub fn deinit(self: *ArenaPool) void {
var it = self._leak_track.iterator();
while (it.next()) |kv| {
if (kv.value_ptr.* != 0) {
- std.debug.print("ArenaPool leak detected: '{s}' count={d}\n", .{ kv.key_ptr.*, kv.value_ptr.* });
+ log.err(.bug, "ArenaPool leak", .{.name = kv.key_ptr.*, .count = kv.value_ptr.* });
has_leaks = true;
}
}
@@ -129,11 +130,11 @@ pub fn release(self: *ArenaPool, allocator: Allocator) void {
if (self._leak_track.getPtr(entry.debug)) |count| {
count.* -= 1;
if (count.* < 0) {
- std.debug.print("ArenaPool double-free detected: '{s}'\n", .{entry.debug});
+ log.err(.bug, "ArenaPool double-free", .{.name = entry.debug});
@panic("ArenaPool: double-free detected");
}
} else {
- std.debug.print("ArenaPool release of untracked arena: '{s}'\n", .{entry.debug});
+ log.err(.bug, "ArenaPool release unknown", .{.name = entry.debug});
@panic("ArenaPool: release of untracked arena");
}
}
diff --git a/src/Server.zig b/src/Server.zig
index a12dc563..e824d4e1 100644
--- a/src/Server.zig
+++ b/src/Server.zig
@@ -22,7 +22,6 @@ const net = std.net;
const posix = std.posix;
const Allocator = std.mem.Allocator;
-const ArenaAllocator = std.heap.ArenaAllocator;
const log = @import("log.zig");
const App = @import("App.zig");
diff --git a/src/browser/Browser.zig b/src/browser/Browser.zig
index 50a7c037..cecda783 100644
--- a/src/browser/Browser.zig
+++ b/src/browser/Browser.zig
@@ -19,17 +19,13 @@
const std = @import("std");
const Allocator = std.mem.Allocator;
-const ArenaAllocator = std.heap.ArenaAllocator;
const js = @import("js/js.zig");
-const log = @import("../log.zig");
const App = @import("../App.zig");
const HttpClient = @import("HttpClient.zig");
const ArenaPool = App.ArenaPool;
-const IS_DEBUG = @import("builtin").mode == .Debug;
-
const Session = @import("Session.zig");
const Notification = @import("../Notification.zig");
diff --git a/src/browser/EventManager.zig b/src/browser/EventManager.zig
index 247a298e..a5f8c475 100644
--- a/src/browser/EventManager.zig
+++ b/src/browser/EventManager.zig
@@ -425,7 +425,7 @@ fn dispatchNode(self: *EventManager, target: *Node, event: *Event, comptime opts
ls.deinit();
}
- const activation_state = ActivationState.create(event, target, page);
+ const activation_state = try ActivationState.create(event, target, page);
// Defer runs even on early return - ensures event phase is reset
// and default actions execute (unless prevented)
@@ -820,7 +820,7 @@ const ActivationState = struct {
const Input = Element.Html.Input;
- fn create(event: *const Event, target: *Node, page: *Page) ?ActivationState {
+ fn create(event: *const Event, target: *Node, page: *Page) !?ActivationState {
if (event._type_string.eql(comptime .wrap("click")) == false) {
return null;
}
diff --git a/src/browser/HttpClient.zig b/src/browser/HttpClient.zig
index 3d3b9140..62dc4396 100644
--- a/src/browser/HttpClient.zig
+++ b/src/browser/HttpClient.zig
@@ -24,12 +24,10 @@ const lp = @import("lightpanda");
const log = @import("../log.zig");
const Net = @import("../network/http.zig");
const Network = @import("../network/Runtime.zig");
-const Config = @import("../Config.zig");
const URL = @import("../browser/URL.zig");
const Notification = @import("../Notification.zig");
const CookieJar = @import("../browser/webapi/storage/Cookie.zig").Jar;
const Robots = @import("../network/Robots.zig");
-const RobotStore = Robots.RobotStore;
const WebBotAuth = @import("../network/WebBotAuth.zig");
const Allocator = std.mem.Allocator;
diff --git a/src/browser/Page.zig b/src/browser/Page.zig
index 95e07514..7e24d0c9 100644
--- a/src/browser/Page.zig
+++ b/src/browser/Page.zig
@@ -43,7 +43,6 @@ const URL = @import("URL.zig");
const Blob = @import("webapi/Blob.zig");
const Node = @import("webapi/Node.zig");
const Event = @import("webapi/Event.zig");
-const EventTarget = @import("webapi/EventTarget.zig");
const CData = @import("webapi/CData.zig");
const Element = @import("webapi/Element.zig");
const HtmlElement = @import("webapi/element/Html.zig");
@@ -59,7 +58,6 @@ const AbstractRange = @import("webapi/AbstractRange.zig");
const MutationObserver = @import("webapi/MutationObserver.zig");
const IntersectionObserver = @import("webapi/IntersectionObserver.zig");
const CustomElementDefinition = @import("webapi/CustomElementDefinition.zig");
-const storage = @import("webapi/storage/storage.zig");
const PageTransitionEvent = @import("webapi/event/PageTransitionEvent.zig");
const SubmitEvent = @import("webapi/event/SubmitEvent.zig");
const NavigationKind = @import("webapi/navigation/root.zig").NavigationKind;
@@ -67,7 +65,6 @@ const KeyboardEvent = @import("webapi/event/KeyboardEvent.zig");
const MouseEvent = @import("webapi/event/MouseEvent.zig");
const HttpClient = @import("HttpClient.zig");
-const ArenaPool = App.ArenaPool;
const timestamp = @import("../datetime.zig").timestamp;
const milliTimestamp = @import("../datetime.zig").milliTimestamp;
diff --git a/src/browser/Runner.zig b/src/browser/Runner.zig
index 7491a4f6..d3161a91 100644
--- a/src/browser/Runner.zig
+++ b/src/browser/Runner.zig
@@ -21,12 +21,9 @@ const lp = @import("lightpanda");
const builtin = @import("builtin");
const log = @import("../log.zig");
-const App = @import("../App.zig");
const Page = @import("Page.zig");
const Session = @import("Session.zig");
-const Browser = @import("Browser.zig");
-const Factory = @import("Factory.zig");
const HttpClient = @import("HttpClient.zig");
const IS_DEBUG = builtin.mode == .Debug;
diff --git a/src/browser/js/Caller.zig b/src/browser/js/Caller.zig
index 28da9f2a..cd4d25d3 100644
--- a/src/browser/js/Caller.zig
+++ b/src/browser/js/Caller.zig
@@ -128,7 +128,7 @@ fn _constructor(self: *Caller, func: anytype, info: FunctionCallbackInfo) !void
const new_this_handle = info.getThis();
var this = js.Object{ .local = local, .handle = new_this_handle };
if (@typeInfo(ReturnType) == .error_union) {
- const non_error_res = res catch |err| return err;
+ const non_error_res = try res;
this = try local.mapZigInstanceToJs(new_this_handle, non_error_res);
} else {
this = try local.mapZigInstanceToJs(new_this_handle, res);
diff --git a/src/browser/js/Context.zig b/src/browser/js/Context.zig
index 505a56f5..4b4fcead 100644
--- a/src/browser/js/Context.zig
+++ b/src/browser/js/Context.zig
@@ -22,7 +22,6 @@ const log = @import("../../log.zig");
const js = @import("js.zig");
const Env = @import("Env.zig");
-const bridge = @import("bridge.zig");
const Origin = @import("Origin.zig");
const Scheduler = @import("Scheduler.zig");
diff --git a/src/browser/js/Env.zig b/src/browser/js/Env.zig
index b284d4bc..d559928c 100644
--- a/src/browser/js/Env.zig
+++ b/src/browser/js/Env.zig
@@ -34,7 +34,6 @@ const Snapshot = @import("Snapshot.zig");
const Inspector = @import("Inspector.zig");
const Page = @import("../Page.zig");
-const Session = @import("../Session.zig");
const Window = @import("../webapi/Window.zig");
const JsApis = bridge.JsApis;
diff --git a/src/browser/js/Function.zig b/src/browser/js/Function.zig
index 4c84a08f..14cc8d14 100644
--- a/src/browser/js/Function.zig
+++ b/src/browser/js/Function.zig
@@ -21,7 +21,6 @@ const js = @import("js.zig");
const v8 = js.v8;
const log = @import("../../log.zig");
-const Session = @import("../Session.zig");
const Function = @This();
diff --git a/src/browser/js/Identity.zig b/src/browser/js/Identity.zig
index 323ae909..2e2b35f5 100644
--- a/src/browser/js/Identity.zig
+++ b/src/browser/js/Identity.zig
@@ -32,7 +32,6 @@ const js = @import("js.zig");
const Session = @import("../Session.zig");
const v8 = js.v8;
-const Allocator = std.mem.Allocator;
const Identity = @This();
diff --git a/src/browser/js/Local.zig b/src/browser/js/Local.zig
index 15c510c1..6dda5f38 100644
--- a/src/browser/js/Local.zig
+++ b/src/browser/js/Local.zig
@@ -17,7 +17,6 @@
// along with this program. If not, see .
const std = @import("std");
-const Page = @import("../Page.zig");
const Session = @import("../Session.zig");
const log = @import("../../log.zig");
const string = @import("../../string.zig");
@@ -33,7 +32,6 @@ const IS_DEBUG = @import("builtin").mode == .Debug;
const v8 = js.v8;
const CallOpts = Caller.CallOpts;
-const Allocator = std.mem.Allocator;
// Where js.Context has a lifetime tied to the page, and holds the
// v8::Global, this has a much shorter lifetime and holds a
diff --git a/src/browser/js/Promise.zig b/src/browser/js/Promise.zig
index 4e83c098..4d8d1f11 100644
--- a/src/browser/js/Promise.zig
+++ b/src/browser/js/Promise.zig
@@ -20,8 +20,6 @@ const std = @import("std");
const js = @import("js.zig");
const v8 = js.v8;
-const Session = @import("../Session.zig");
-
const Promise = @This();
local: *const js.Local,
diff --git a/src/browser/markdown.zig b/src/browser/markdown.zig
index f4a0f874..8bc3eaa8 100644
--- a/src/browser/markdown.zig
+++ b/src/browser/markdown.zig
@@ -21,7 +21,6 @@ const std = @import("std");
const Page = @import("Page.zig");
const URL = @import("URL.zig");
const TreeWalker = @import("webapi/TreeWalker.zig");
-const CData = @import("webapi/CData.zig");
const Element = @import("webapi/Element.zig");
const Node = @import("webapi/Node.zig");
const isAllWhitespace = @import("../string.zig").isAllWhitespace;
diff --git a/src/browser/webapi/CustomElementRegistry.zig b/src/browser/webapi/CustomElementRegistry.zig
index 25ed8857..6b2a7f5f 100644
--- a/src/browser/webapi/CustomElementRegistry.zig
+++ b/src/browser/webapi/CustomElementRegistry.zig
@@ -24,7 +24,6 @@ const Page = @import("../Page.zig");
const Node = @import("Node.zig");
const Element = @import("Element.zig");
-const DOMException = @import("DOMException.zig");
const Custom = @import("element/html/Custom.zig");
const CustomElementDefinition = @import("CustomElementDefinition.zig");
diff --git a/src/browser/webapi/HTMLDocument.zig b/src/browser/webapi/HTMLDocument.zig
index 76c3be40..555e9b2d 100644
--- a/src/browser/webapi/HTMLDocument.zig
+++ b/src/browser/webapi/HTMLDocument.zig
@@ -18,7 +18,6 @@
const std = @import("std");
const js = @import("../js/js.zig");
-const String = @import("../../string.zig").String;
const Page = @import("../Page.zig");
const Node = @import("Node.zig");
diff --git a/src/browser/webapi/Selection.zig b/src/browser/webapi/Selection.zig
index 7c261823..c6b84e89 100644
--- a/src/browser/webapi/Selection.zig
+++ b/src/browser/webapi/Selection.zig
@@ -17,7 +17,6 @@
// along with this program. If not, see .
const std = @import("std");
-const log = @import("../../log.zig");
const js = @import("../js/js.zig");
const Page = @import("../Page.zig");
@@ -27,7 +26,6 @@ const Range = @import("Range.zig");
const AbstractRange = @import("AbstractRange.zig");
const Node = @import("Node.zig");
const Event = @import("Event.zig");
-const Document = @import("Document.zig");
/// https://w3c.github.io/selection-api/
const Selection = @This();
diff --git a/src/browser/webapi/VisualViewport.zig b/src/browser/webapi/VisualViewport.zig
index 5bd5cd04..15adb392 100644
--- a/src/browser/webapi/VisualViewport.zig
+++ b/src/browser/webapi/VisualViewport.zig
@@ -19,7 +19,6 @@
const js = @import("../js/js.zig");
const Page = @import("../Page.zig");
const EventTarget = @import("EventTarget.zig");
-const Window = @import("Window.zig");
const VisualViewport = @This();
diff --git a/src/browser/webapi/cdata/Text.zig b/src/browser/webapi/cdata/Text.zig
index e7a338b5..c1e83ebc 100644
--- a/src/browser/webapi/cdata/Text.zig
+++ b/src/browser/webapi/cdata/Text.zig
@@ -16,7 +16,6 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
-const String = @import("../../../string.zig").String;
const js = @import("../../js/js.zig");
const Page = @import("../../Page.zig");
const CData = @import("../CData.zig");
diff --git a/src/browser/webapi/crypto/X25519.zig b/src/browser/webapi/crypto/X25519.zig
index a509a22d..eb3e9708 100644
--- a/src/browser/webapi/crypto/X25519.zig
+++ b/src/browser/webapi/crypto/X25519.zig
@@ -20,7 +20,6 @@
const std = @import("std");
const lp = @import("lightpanda");
-const log = @import("../../../log.zig");
const crypto = @import("../../../sys/libcrypto.zig");
const Page = @import("../../Page.zig");
diff --git a/src/browser/webapi/element/html/IFrame.zig b/src/browser/webapi/element/html/IFrame.zig
index 8aa24814..e596f4ac 100644
--- a/src/browser/webapi/element/html/IFrame.zig
+++ b/src/browser/webapi/element/html/IFrame.zig
@@ -16,7 +16,6 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
-const log = @import("../../../../log.zig");
const js = @import("../../../js/js.zig");
const Page = @import("../../../Page.zig");
const Window = @import("../../Window.zig");
diff --git a/src/browser/webapi/element/html/Image.zig b/src/browser/webapi/element/html/Image.zig
index ad5c17f5..b6731144 100644
--- a/src/browser/webapi/element/html/Image.zig
+++ b/src/browser/webapi/element/html/Image.zig
@@ -5,10 +5,6 @@ const URL = @import("../../../URL.zig");
const Node = @import("../../Node.zig");
const Element = @import("../../Element.zig");
const HtmlElement = @import("../Html.zig");
-const Event = @import("../../Event.zig");
-const log = @import("../../../../log.zig");
-
-const IS_DEBUG = @import("builtin").mode == .Debug;
const Image = @This();
_proto: *HtmlElement,
diff --git a/src/browser/webapi/event/CompositionEvent.zig b/src/browser/webapi/event/CompositionEvent.zig
index a761e3ba..6de4e702 100644
--- a/src/browser/webapi/event/CompositionEvent.zig
+++ b/src/browser/webapi/event/CompositionEvent.zig
@@ -22,7 +22,6 @@ const js = @import("../../js/js.zig");
const Page = @import("../../Page.zig");
const Session = @import("../../Session.zig");
const Event = @import("../Event.zig");
-const Allocator = std.mem.Allocator;
const CompositionEvent = @This();
diff --git a/src/browser/webapi/event/PromiseRejectionEvent.zig b/src/browser/webapi/event/PromiseRejectionEvent.zig
index f0a195b9..5be6d792 100644
--- a/src/browser/webapi/event/PromiseRejectionEvent.zig
+++ b/src/browser/webapi/event/PromiseRejectionEvent.zig
@@ -22,7 +22,6 @@ const js = @import("../../js/js.zig");
const Page = @import("../../Page.zig");
const Session = @import("../../Session.zig");
const Event = @import("../Event.zig");
-const Allocator = std.mem.Allocator;
const PromiseRejectionEvent = @This();
diff --git a/src/browser/webapi/navigation/Navigation.zig b/src/browser/webapi/navigation/Navigation.zig
index 6754c5da..672b1c28 100644
--- a/src/browser/webapi/navigation/Navigation.zig
+++ b/src/browser/webapi/navigation/Navigation.zig
@@ -27,8 +27,6 @@ const Page = @import("../../Page.zig");
const Event = @import("../Event.zig");
const EventTarget = @import("../EventTarget.zig");
-const IS_DEBUG = @import("builtin").mode == .Debug;
-
// https://developer.mozilla.org/en-US/docs/Web/API/Navigation
const Navigation = @This();
diff --git a/src/browser/webapi/navigation/NavigationHistoryEntry.zig b/src/browser/webapi/navigation/NavigationHistoryEntry.zig
index 6ab9b6b6..569187b1 100644
--- a/src/browser/webapi/navigation/NavigationHistoryEntry.zig
+++ b/src/browser/webapi/navigation/NavigationHistoryEntry.zig
@@ -18,7 +18,6 @@
const std = @import("std");
const URL = @import("../URL.zig");
-const EventTarget = @import("../EventTarget.zig");
const NavigationState = @import("root.zig").NavigationState;
const Page = @import("../../Page.zig");
const js = @import("../../js/js.zig");
diff --git a/src/browser/webapi/net/FormData.zig b/src/browser/webapi/net/FormData.zig
index 73a5a5c8..78baa587 100644
--- a/src/browser/webapi/net/FormData.zig
+++ b/src/browser/webapi/net/FormData.zig
@@ -22,7 +22,6 @@ const log = @import("../../../log.zig");
const js = @import("../../js/js.zig");
const Page = @import("../../Page.zig");
-const Node = @import("../Node.zig");
const Form = @import("../element/html/Form.zig");
const Element = @import("../Element.zig");
const KeyValueList = @import("../KeyValueList.zig");
diff --git a/src/cdp/CDP.zig b/src/cdp/CDP.zig
index e9c0e3eb..84ed9cfa 100644
--- a/src/cdp/CDP.zig
+++ b/src/cdp/CDP.zig
@@ -25,7 +25,6 @@ const json = std.json;
const Incrementing = @import("id.zig").Incrementing;
const log = @import("../log.zig");
-const App = @import("../App.zig");
const Notification = @import("../Notification.zig");
const Client = @import("../Server.zig").Client;
@@ -35,7 +34,6 @@ const Browser = @import("../browser/Browser.zig");
const Session = @import("../browser/Session.zig");
const Page = @import("../browser/Page.zig");
const Mime = @import("../browser/Mime.zig");
-const HttpClient = @import("../browser/HttpClient.zig");
const InterceptState = @import("domains/fetch.zig").InterceptState;
diff --git a/src/cdp/domains/lp.zig b/src/cdp/domains/lp.zig
index b11de91f..72eb6ee8 100644
--- a/src/cdp/domains/lp.zig
+++ b/src/cdp/domains/lp.zig
@@ -18,7 +18,6 @@
const std = @import("std");
const lp = @import("lightpanda");
-const log = @import("../../log.zig");
const markdown = lp.markdown;
const SemanticTree = lp.SemanticTree;
const interactive = lp.interactive;
diff --git a/src/cdp/domains/target.zig b/src/cdp/domains/target.zig
index 4755eaba..a26c8d78 100644
--- a/src/cdp/domains/target.zig
+++ b/src/cdp/domains/target.zig
@@ -24,9 +24,6 @@ const log = @import("../../log.zig");
const URL = @import("../../browser/URL.zig");
const js = @import("../../browser/js/js.zig");
-// TODO: hard coded IDs
-const LOADER_ID = "LOADERID42AA389647D702B4D805F49A";
-
pub fn processMessage(cmd: anytype) !void {
const action = std.meta.stringToEnum(enum {
getTargets,
diff --git a/src/cdp/id.zig b/src/cdp/id.zig
index 2f3fd252..82144ece 100644
--- a/src/cdp/id.zig
+++ b/src/cdp/id.zig
@@ -17,7 +17,6 @@
// along with this program. If not, see .
const std = @import("std");
-const IS_DEBUG = @import("builtin").mode == .Debug;
pub fn toPageId(comptime id_type: enum { frame_id, loader_id }, input: []const u8) !u32 {
const err = switch (comptime id_type) {
diff --git a/src/cdp/testing.zig b/src/cdp/testing.zig
index 87639a6c..a327f1bb 100644
--- a/src/cdp/testing.zig
+++ b/src/cdp/testing.zig
@@ -19,10 +19,6 @@
const std = @import("std");
const json = std.json;
const posix = std.posix;
-const Allocator = std.mem.Allocator;
-const ArenaAllocator = std.heap.ArenaAllocator;
-
-const Testing = @This();
const CDP = @import("CDP.zig");
const Server = @import("../Server.zig");
diff --git a/src/log.zig b/src/log.zig
index 8cf712ba..201e6c9f 100644
--- a/src/log.zig
+++ b/src/log.zig
@@ -49,9 +49,6 @@ const Opts = struct {
pub var opts = Opts{};
-// synchronizes writes to the output
-var out_lock: Thread.Mutex = .{};
-
// synchronizes access to last_log
var last_log_lock: Thread.Mutex = .{};
diff --git a/src/mcp/router.zig b/src/mcp/router.zig
index 38b2e206..a37c9b20 100644
--- a/src/mcp/router.zig
+++ b/src/mcp/router.zig
@@ -1,5 +1,4 @@
const std = @import("std");
-const lp = @import("lightpanda");
const protocol = @import("protocol.zig");
const resources = @import("resources.zig");
const Server = @import("Server.zig");
diff --git a/src/mcp/tools.zig b/src/mcp/tools.zig
index f4a82570..64ff29d0 100644
--- a/src/mcp/tools.zig
+++ b/src/mcp/tools.zig
@@ -4,9 +4,7 @@ const lp = @import("lightpanda");
const log = lp.log;
const js = lp.js;
-const Element = @import("../browser/webapi/Element.zig");
const DOMNode = @import("../browser/webapi/Node.zig");
-const Selector = @import("../browser/webapi/selector/Selector.zig");
const protocol = @import("protocol.zig");
const Server = @import("Server.zig");
const CDPNode = @import("../cdp/Node.zig");
diff --git a/src/network/http.zig b/src/network/http.zig
index 7916260d..aea53824 100644
--- a/src/network/http.zig
+++ b/src/network/http.zig
@@ -19,7 +19,6 @@
const std = @import("std");
const builtin = @import("builtin");
const posix = std.posix;
-const Allocator = std.mem.Allocator;
const ArenaAllocator = std.heap.ArenaAllocator;
const Config = @import("../Config.zig");
@@ -29,18 +28,12 @@ const log = @import("lightpanda").log;
const assert = @import("lightpanda").assert;
pub const ENABLE_DEBUG = false;
-const IS_DEBUG = builtin.mode == .Debug;
pub const Blob = libcurl.CurlBlob;
pub const WaitFd = libcurl.CurlWaitFd;
pub const writefunc_error = libcurl.curl_writefunc_error;
const Error = libcurl.Error;
-const ErrorMulti = libcurl.ErrorMulti;
-const errorFromCode = libcurl.errorFromCode;
-const errorMFromCode = libcurl.errorMFromCode;
-const errorCheck = libcurl.errorCheck;
-const errorMCheck = libcurl.errorMCheck;
pub fn curl_version() [*c]const u8 {
return libcurl.curl_version();
diff --git a/src/telemetry/lightpanda.zig b/src/telemetry/lightpanda.zig
index 95ac6ddf..01e320ee 100644
--- a/src/telemetry/lightpanda.zig
+++ b/src/telemetry/lightpanda.zig
@@ -9,7 +9,6 @@ const App = @import("../App.zig");
const Config = @import("../Config.zig");
const telemetry = @import("telemetry.zig");
const Runtime = @import("../network/Runtime.zig");
-const Connection = @import("../network/http.zig").Connection;
const URL = "https://telemetry.lightpanda.io";
const BUFFER_SIZE = 1024;