UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

43 lines (42 loc) 1.36 kB
"use strict"; import { arrayIsEqual } from "./ArrayUtils"; import { isBoolean, isNumber, isString, isObject } from "./Type"; import cloneDeep from "lodash-es/cloneDeep"; import clone from "lodash-es/clone"; export function getObjectMethodNames(obj) { let properties = /* @__PURE__ */ new Set(); let currentObj = obj; do { Object.getOwnPropertyNames(currentObj).map((item) => properties.add(item)); } while (currentObj = Object.getPrototypeOf(currentObj)); return [...properties.keys()].filter((item) => typeof obj[item] === "function"); } export function objectIsEqual(object0, object1) { if (isBoolean(object0) && isBoolean(object1)) { return object0 == object1; } if (isNumber(object0) && isNumber(object1)) { return object0 == object1; } if (isString(object0) && isString(object1)) { return object0 == object1; } if (isObject(object0) && isObject(object1)) { const keys0 = Object.keys(object0); const keys1 = Object.keys(object1); if (!arrayIsEqual(keys0, keys1)) { return false; } return JSON.stringify(object0) == JSON.stringify(object1); } return false; } export function objectMerge(object0, object1) { return Object.assign(object0, object1); } export function objectClone(value) { return clone(value); } export function objectCloneDeep(value) { return cloneDeep(value); }