The object to be made observable.
Keys to exclude from being made observable (e.g., '_raw', 'operations')
Set of already visited objects to prevent circular references
const obj = { a: 1, b: { c: 2 }, _raw: sdkObject };
const observableObj = makeEverythingObservable(obj, new Set(['_raw']));
console.log(isObservable(observableObj)); // true
console.log(isObservable(observableObj.b)); // true
console.log(isObservable(observableObj._raw)); // false (excluded)
Useful when nested properties must be observable in MobX; exclude keys like '_raw' and
'operations' that are SDK-specific and don't need reactivity.
Recursively makes all properties of an object observable.
This function traverses an object and makes every property observable, including nested objects and arrays of objects. If a property is already observable, it will not be modified.