fluidstate
Version:
Library for fine-grained reactivity state management
42 lines (41 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isObject = exports.getDescriptor = exports.getAllGetterKeys = void 0;
const isObject = value => {
return value && typeof value === "object";
};
exports.isObject = isObject;
const getDescriptor = (inertObject, p) => {
let object = inertObject;
let descriptor = object && object !== Object.prototype && Reflect.getOwnPropertyDescriptor(object, p);
while (object && object !== Object.prototype && !descriptor) {
object = Reflect.getPrototypeOf(object) ?? undefined;
descriptor = object && Reflect.getOwnPropertyDescriptor(object, p);
}
return object && object !== Object.prototype && descriptor ? {
object,
descriptor
} : {
object: undefined,
descriptor: undefined
};
};
exports.getDescriptor = getDescriptor;
const getAllGetterKeys = inertObject => {
let object = inertObject;
const getterKeys = new Set();
while (object && object !== Object.prototype) {
const keys = Reflect.ownKeys(object);
for (const key of keys) {
if (Reflect.getOwnPropertyDescriptor(object, key).get) {
getterKeys.add(key);
}
}
object = Reflect.getPrototypeOf(object);
}
return getterKeys;
};
exports.getAllGetterKeys = getAllGetterKeys;
//# sourceMappingURL=reactive-utils.js.map