packages/okam-core/src/extend/data/observable/base.js
function makeComputedObservable(ctx) {
    let computedInfo = ctx.$rawComputed || {};
    if (typeof computedInfo === 'function') {
        ctx.$rawComputed = computedInfo = computedInfo();
    }

    let observer = new ComputedObserver(ctx, computedInfo);
    let ctxProps = {};
    Object.keys(computedInfo).forEach(k => {
        ctxProps[k] = {
            get: observer.getGetter(k),
            set: observer.getSetter(k),
            enumerable: true
        };
    });
    Object.defineProperties(ctx, ctxProps);
    return observer;
}
function makeComputedObservable(ctx) {
    let computedInfo = ctx.$rawComputed || {};
    if (typeof computedInfo === 'function') {
        ctx.$rawComputed = computedInfo = computedInfo();
    }

    let observer = new ComputedObserver(ctx, computedInfo);
    let ctxProps = {};
    Object.keys(computedInfo).forEach(k => {
        ctxProps[k] = {
            get: observer.getGetter(k),
            set: observer.getSetter(k),
            enumerable: true
        };
    });
    Object.defineProperties(ctx, ctxProps);
    return observer;
}
function makeComputedObservable ( ctx ) { let computedInfo = ctx . $rawComputed || { } ; if ( typeof computedInfo === 'function' ) { ctx . $rawComputed = computedInfo = computedInfo ( ) ; } let observer = new ComputedObserver ( ctx , computedInfo ) ; let ctxProps = { } ; Object . keys ( computedInfo ) . forEach ( k => { ctxProps [ k ] = { get : observer . getGetter ( k ) , set : observer . getSetter ( k ) , enumerable : true } ; } ) ; Object . defineProperties ( ctx , ctxProps ) ; return observer ; }
Make computed props observable

@inner
@param {Object} ctx the component instance context
@return {Observer} the observer
Make computed props observable