From 09e5e5df121a57dcb838c105e7de231cc826c700 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Tue, 30 Jun 2026 12:29:25 +0800 Subject: [PATCH] webapi, idb: add IDBKeyRange Including support for IDBKeyRange based operations --- src/browser/js/Local.zig | 12 + src/browser/js/Value.zig | 4 + src/browser/tests/indexeddb.html | 325 +++++++++++++++ src/browser/webapi/storage/idb/Engine.zig | 256 +++++++++++- .../webapi/storage/idb/IDBDatabase.zig | 2 +- src/browser/webapi/storage/idb/IDBFactory.zig | 4 +- .../webapi/storage/idb/IDBKeyRange.zig | 157 ++++++++ .../webapi/storage/idb/IDBObjectStore.zig | 149 ++++++- .../webapi/storage/idb/IDBTransaction.zig | 4 +- src/browser/webapi/storage/idb/Key.zig | 371 ++++++++++++++++-- src/browser/webapi/storage/idb/idb.zig | 2 + 11 files changed, 1206 insertions(+), 80 deletions(-) create mode 100644 src/browser/webapi/storage/idb/IDBKeyRange.zig diff --git a/src/browser/js/Local.zig b/src/browser/js/Local.zig index bc4f6d7ca..ad4ab25db 100644 --- a/src/browser/js/Local.zig +++ b/src/browser/js/Local.zig @@ -82,6 +82,18 @@ pub fn newObject(self: *const Local) js.Object { }; } +pub fn newDate(self: *const Local, time_ms: f64) !js.Value { + const handle = v8.v8__Date__New(self.handle, time_ms) orelse return error.JsException; + return .{ .local = self, .handle = handle }; +} + +pub fn newNumber(self: *const Local, f: f64) !js.Value { + return .{ + .local = self, + .handle = self.isolate.initNumber(f).handle, + }; +} + pub fn newArray(self: *const Local, len: u32) js.Array { return .{ .local = self, diff --git a/src/browser/js/Value.zig b/src/browser/js/Value.zig index 3669448f6..9a2a5cb73 100644 --- a/src/browser/js/Value.zig +++ b/src/browser/js/Value.zig @@ -126,6 +126,10 @@ pub fn isArrayBuffer(self: Value) bool { return v8.v8__Value__IsArrayBuffer(self.handle); } +pub fn isDate(self: Value) bool { + return v8.v8__Value__IsDate(self.handle); +} + pub fn isUint8Array(self: Value) bool { return v8.v8__Value__IsUint8Array(self.handle); } diff --git a/src/browser/tests/indexeddb.html b/src/browser/tests/indexeddb.html index 1c818a6eb..b8d8d4cae 100644 --- a/src/browser/tests/indexeddb.html +++ b/src/browser/tests/indexeddb.html @@ -187,6 +187,89 @@ } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +