UNPKG

shadow-function

Version:

ioing lib - shadow Function, worker Function

43 lines (31 loc) 956 B
'use strict' import { getObjectType } from '../objectType/index' function freeze (object: object, deep = false, exclude = {}) { if (!object) return exclude = getObjectType(exclude) === 'Object' ? exclude : {} if (deep) { let propNames = Object.getOwnPropertyNames(object) // Freeze properties before freezing self for (let name of propNames) { let value = object[name] let ignore = exclude[name] if (!value) break if (isFrozen(value)) break if (ignore) break freeze(value.prototype, true, exclude) freeze(value.__proto__, true, exclude) let descriptor = Object.getOwnPropertyDescriptor(object, name) || {} if (!descriptor.writable) break object[name] = value && typeof value === 'object' ? freeze(value, true) : value } } return Object.freeze(object) } function isFrozen (obj: object) { return Object.isFrozen(obj) } export { freeze, isFrozen }