/** * Checks if a given value is a plain object. * * @param {object} value - The value to check. * @returns {value is Record} - True if the value is a plain object, otherwise false. * * @example * ```typescript * // ✅👇 True * * isPlainObject({ }); // ✅ * isPlainObject({ key: 'value' }); // ✅ * isPlainObject({ key: new Date() }); // ✅ * isPlainObject(new Object()); // ✅ * isPlainObject(Object.create(null)); // ✅ * isPlainObject({ nested: { key: true} }); // ✅ * isPlainObject(new Proxy({}, {})); // ✅ * isPlainObject({ [Symbol('tag')]: 'A' }); // ✅ * * // ✅👇 (cross-realms, node context, workers, ...) * const runInNewContext = await import('node:vm').then( * (mod) => mod.runInNewContext * ); * isPlainObject(runInNewContext('({})')); // ✅ * * // ❌👇 False * * class Test { }; * isPlainObject(new Test()) // ❌ * isPlainObject(10); // ❌ * isPlainObject(null); // ❌ * isPlainObject('hello'); // ❌ * isPlainObject([]); // ❌ * isPlainObject(new Date()); // ❌ * isPlainObject(new Uint8Array([1])); // ❌ * isPlainObject(Buffer.from('ABC')); // ❌ * isPlainObject(Promise.resolve({})); // ❌ * isPlainObject(Object.create({})); // ❌ * isPlainObject(new (class Cls {})); // ❌ * isPlainObject(globalThis); // ❌, * ``` */ declare function isPlainObject(value: unknown): value is Record; export { isPlainObject };