From dc20dfa89bec6a8e96d7bf05f22db423cae2a14f Mon Sep 17 00:00:00 2001 From: Thanga Ganapathy Date: Tue, 30 Apr 2024 00:20:41 +0530 Subject: [PATCH] fix: isObj to look for prototype object of prototype --- packages/std/__tests__/types/isObj.spec.ts | 10 +++++++++- packages/std/src/types/isObj.ts | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/std/__tests__/types/isObj.spec.ts b/packages/std/__tests__/types/isObj.spec.ts index f630d27..554e8a3 100644 --- a/packages/std/__tests__/types/isObj.spec.ts +++ b/packages/std/__tests__/types/isObj.spec.ts @@ -37,7 +37,6 @@ describe('Types > isObj', () => { this.name = name; } } - expect(isObj(new Person('x'))).toBe(false); expect(isObj(new (fun as any)(1))).toBe(false); }); @@ -47,5 +46,14 @@ describe('Types > isObj', () => { expect(isObj({ a: 1 })).toBe(true); expect(isObj(new Object())).toBe(true); expect(isObj(Object.create(null))).toBe(true); + + if (globalThis.structuredClone) { + const obj = { + a: 1, + b: 'Hello world', + }; + const clone = structuredClone(obj); + expect(isObj(structuredClone(obj))).toBe(true); + } }); }); diff --git a/packages/std/src/types/isObj.ts b/packages/std/src/types/isObj.ts index df145f8..b433d6b 100644 --- a/packages/std/src/types/isObj.ts +++ b/packages/std/src/types/isObj.ts @@ -18,5 +18,5 @@ export default function isObj(val: unknown): val is object { const p = Object.getPrototypeOf(val); - return p === null || p === Object.prototype; + return p === null || Object.getPrototypeOf(p) === null; }