From a2be1611767d672b8ad8237991e5b285cca2612f Mon Sep 17 00:00:00 2001 From: mrfoxpro Date: Mon, 16 Sep 2024 03:48:35 +0500 Subject: [PATCH] fix wrapping object with null prototype --- packages/solid/store/src/mutable.ts | 1 + packages/solid/store/test/mutable.spec.ts | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/packages/solid/store/src/mutable.ts b/packages/solid/store/src/mutable.ts index f88c85010..03afb2e35 100644 --- a/packages/solid/store/src/mutable.ts +++ b/packages/solid/store/src/mutable.ts @@ -97,6 +97,7 @@ function wrap(value: T): T { const proto = Object.getPrototypeOf(value); const isClass = + proto !== null && value !== null && typeof value === "object" && !Array.isArray(value) && diff --git a/packages/solid/store/test/mutable.spec.ts b/packages/solid/store/test/mutable.spec.ts index b8946dee7..e3409d145 100644 --- a/packages/solid/store/test/mutable.spec.ts +++ b/packages/solid/store/test/mutable.spec.ts @@ -2,7 +2,13 @@ import { createRoot, createSignal, createMemo, batch, createEffect } from "../.. import { Accessor, Setter } from "../../types"; import { createMutable, unwrap, $RAW } from "../src"; +test("Object.create(null) is allowed", () => { + const user = createMutable(Object.assign(Object.create(null), { name: "John" })); + expect(user.name).toBe("John"); +}); + describe("State Mutability", () => { + test("Setting a property", () => { const user = createMutable({ name: "John" }); expect(user.name).toBe("John");