rsnext/packages/next/shared/lib/is-plain-object.ts

23 lines
674 B
TypeScript
Raw Normal View History

export function getObjectClassLabel(value: any): string {
return Object.prototype.toString.call(value)
}
export function isPlainObject(value: any): boolean {
if (getObjectClassLabel(value) !== '[object Object]') {
return false
}
const prototype = Object.getPrototypeOf(value)
/**
* this used to be previously:
*
* `return prototype === null || prototype === Object.prototype`
*
* but Edge Runtime expose Object from vm, being that kind of type-checking wrongly fail.
*
* It was changed to the current implementation since it's resilient to serialization.
*/
return prototype === null || prototype.hasOwnProperty('isPrototypeOf')
}