All files / src/utils lazyDefine.js

0% Statements 0/9
100% Branches 0/0
0% Functions 0/2
0% Lines 0/8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20                                       
'use strict';
module.exports = ( 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;
};