Sha256: 22851e1eb10e731a812bdf627957cabc535cc320e00e44170b692fc210c0aaad

Contents?: true

Size: 941 Bytes

Versions: 275

Compression:

Stored size: 941 Bytes

Contents

/** Used to detect hot functions by number of calls within a span of milliseconds. */
var HOT_COUNT = 800,
    HOT_SPAN = 16;

/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeNow = Date.now;

/**
 * Creates a function that'll short out and invoke `identity` instead
 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
 * milliseconds.
 *
 * @private
 * @param {Function} func The function to restrict.
 * @returns {Function} Returns the new shortable function.
 */
function shortOut(func) {
  var count = 0,
      lastCalled = 0;

  return function() {
    var stamp = nativeNow(),
        remaining = HOT_SPAN - (stamp - lastCalled);

    lastCalled = stamp;
    if (remaining > 0) {
      if (++count >= HOT_COUNT) {
        return arguments[0];
      }
    } else {
      count = 0;
    }
    return func.apply(undefined, arguments);
  };
}

module.exports = shortOut;

Version data entries

275 entries across 273 versions & 30 rubygems

Version Path
ela-1.1.0 node_modules/lodash/_shortOut.js
sumomo-0.8.0 data/sumomo/api_modules/node_modules/lodash/_shortOut.js
sumomo-0.7.3 data/sumomo/api_modules/node_modules/lodash/_shortOut.js
sumomo-0.7.2 data/sumomo/api_modules/node_modules/lodash/_shortOut.js
sumomo-0.7.1 data/sumomo/api_modules/node_modules/lodash/_shortOut.js
sumomo-0.6.4 data/sumomo/api_modules/node_modules/lodash/_shortOut.js
sumomo-0.6.3 data/sumomo/api_modules/node_modules/lodash/_shortOut.js
sumomo-0.6.2 data/sumomo/api_modules/node_modules/lodash/_shortOut.js
sumomo-0.6.1 data/sumomo/api_modules/node_modules/lodash/_shortOut.js
affiliator-0.2.1 node_modules/lodash/_shortOut.js
sumomo-0.6.0 data/sumomo/api_modules/node_modules/lodash/_shortOut.js
guard-sass-lint-0.1.2 node_modules/lodash/_shortOut.js
guard-sass-lint-0.1.1 node_modules/lodash/_shortOut.js
lanes-0.8.0 node_modules/globule/node_modules/lodash/_shortOut.js
lanes-0.8.0 node_modules/lodash/_shortOut.js