UNPKG

@girders-elements/core

Version:

Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.

51 lines (15 loc) 1.33 kB
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports. memoize=memoize;exports. time=time;exports. timeSync=timeSync;var _immutable=require('immutable');var notPresent='@@girders-elements/_notPreset';function memoize(fn){var cache=(0,_immutable.Map)();return function(arg){var res=cache.get(arg);if(res===notPresent)return undefined;if(res!=null)return res;res=fn(arg);if(res==null)res=notPresent;cache=cache.set(arg,res);return res===notPresent?undefined:res;};}function time(note,fn){var _this=this;if(process.env.GIRDERS_PROFILING!=='enable'){return fn;}return function _callee(){var start,result,end,_args=arguments;return regeneratorRuntime.async(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:start=Date.now();_context.next=3;return regeneratorRuntime.awrap(fn.apply(undefined,_args));case 3:result=_context.sent;end=Date.now();console.log(note+' took '+(end-start)+' ms');return _context.abrupt('return',result);case 7:case'end':return _context.stop();}}},null,_this);};}function timeSync(note,fn){ if(process.env.GIRDERS_PROFILING!=='enable'){ return fn; } return function(){ var start=Date.now(); var result=fn.apply(undefined,arguments); var end=Date.now(); console.log(note+' took '+(end-start)+' ms'); return result; }; }