From eb200e87ae3ec253e652b790a545ea4c997c1fc1 Mon Sep 17 00:00:00 2001 From: tsushanth <78000697+tsushanth@users.noreply.github.com> Date: Wed, 24 Jun 2026 17:02:05 -0700 Subject: [PATCH] fix: use Object.prototype.hasOwnProperty.call for null-prototype store objects --- .changeset/fix-null-proto-hasownproperty.md | 5 +++++ packages/solid/store/src/mutable.ts | 2 +- packages/solid/store/src/store.ts | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/fix-null-proto-hasownproperty.md diff --git a/.changeset/fix-null-proto-hasownproperty.md b/.changeset/fix-null-proto-hasownproperty.md new file mode 100644 index 000000000..8ee745c4f --- /dev/null +++ b/.changeset/fix-null-proto-hasownproperty.md @@ -0,0 +1,5 @@ +--- +"solid-js": patch +--- + +Use Object.prototype.hasOwnProperty.call() to support null-prototype objects in store proxies diff --git a/packages/solid/store/src/mutable.ts b/packages/solid/store/src/mutable.ts index 9d2eb45d1..3427702d3 100644 --- a/packages/solid/store/src/mutable.ts +++ b/packages/solid/store/src/mutable.ts @@ -50,7 +50,7 @@ const proxyTraps: ProxyHandler = { if (!tracked) { const desc = Object.getOwnPropertyDescriptor(target, property); const isFunction = typeof value === "function"; - if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) + if (getListener() && (!isFunction || Object.prototype.hasOwnProperty.call(target, property)) && !(desc && desc.get)) value = getNode(nodes, property, value)(); else if (value != null && isFunction && value === Array.prototype[property as any]) { return (...args: unknown[]) => diff --git a/packages/solid/store/src/store.ts b/packages/solid/store/src/store.ts index 49030f886..135821eae 100644 --- a/packages/solid/store/src/store.ts +++ b/packages/solid/store/src/store.ts @@ -188,7 +188,7 @@ const proxyTraps: ProxyHandler = { const desc = Object.getOwnPropertyDescriptor(target, property); if ( getListener() && - (typeof value !== "function" || target.hasOwnProperty(property)) && + (typeof value !== "function" || Object.prototype.hasOwnProperty.call(target, property)) && !(desc && desc.get) ) value = getNode(nodes, property, value)();