All files / src/utils lazyDefine.ts

90% Statements 9/10
100% Branches 0/0
75% Functions 3/4
88.89% Lines 8/9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  15x   8270x 8270x       1x 1x 1x           8270x   15x  
 
export default function lazyDefine( obj, prop, fn ) {
  const define = value => Object.defineProperty( obj, prop, { value, enumerable: true, writable: true } );
 
  Object.defineProperty( obj, prop, {
    configurable: true,
    enumerable: true,
    get() {
      const ret = fn();
      define( ret );
      return ret;
    },
    set( val ) {
      define( val );
    }
  } );
 
  return obj;
}