Sha256: c898a289a0a6294b94d99b48c46ac559de89e0657eafd529ce719cd6d9d917f1

Contents?: true

Size: 1.7 KB

Versions: 62

Compression:

Stored size: 1.7 KB

Contents

var nextTick = require('process/browser.js').nextTick;
var slice = Array.prototype.slice;
var immediateIds = {};
var nextImmediateId = 0;

// DOM APIs, for completeness

if (typeof setTimeout !== 'undefined') exports.setTimeout = function() { return setTimeout.apply(window, arguments); };
if (typeof clearTimeout !== 'undefined') exports.clearTimeout = function() { clearTimeout.apply(window, arguments); };
if (typeof setInterval !== 'undefined') exports.setInterval = function() { return setInterval.apply(window, arguments); };
if (typeof clearInterval !== 'undefined') exports.clearInterval = function() { clearInterval.apply(window, arguments); };

// TODO: Change to more efficient list approach used in Node.js
// For now, we just implement the APIs using the primitives above.

exports.enroll = function(item, delay) {
  item._timeoutID = setTimeout(item._onTimeout, delay);
};

exports.unenroll = function(item) {
  clearTimeout(item._timeoutID);
};

exports.active = function(item) {
  // our naive impl doesn't care (correctness is still preserved)
};

// That's not how node.js implements it but the exposed api is the same.
exports.setImmediate = function(fn) {
  var id = nextImmediateId++;
  var args = arguments.length < 2 ? false : slice.call(arguments, 1);

  immediateIds[id] = true;

  nextTick(function onNextTick() {
    if (immediateIds[id]) {
      // fn.call() is faster so we optimize for the common use-case
      // @see http://jsperf.com/call-apply-segu
      if (args) {
        fn.apply(null, args);
      } else {
        fn.call(null);
      }
      // Prevent ids from leaking
      exports.clearImmediate(id);
    }
  });

  return id;
};

exports.clearImmediate = function(id) {
  delete immediateIds[id];
};

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
smock-0.1.268 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.267 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.266 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.265 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.264 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.263 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.262 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.261 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.260 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.259 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.258 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.256 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.255 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.254 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.253 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.252 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.251 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.250 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.249 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js
smock-0.1.247 node_modules/webpack/node_modules/node-libs-browser/node_modules/timers-browserify/main.js