You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							185 lines
						
					
					
						
							5.3 KiB
						
					
					
				
			
		
		
	
	
							185 lines
						
					
					
						
							5.3 KiB
						
					
					
				// shim for using process in browser
 | 
						|
var process = module.exports = {};
 | 
						|
 | 
						|
// cached from whatever global is present so that test runners that stub it
 | 
						|
// don't break things.  But we need to wrap it in a try catch in case it is
 | 
						|
// wrapped in strict mode code which doesn't define any globals.  It's inside a
 | 
						|
// function because try/catches deoptimize in certain engines.
 | 
						|
 | 
						|
var cachedSetTimeout;
 | 
						|
var cachedClearTimeout;
 | 
						|
 | 
						|
function defaultSetTimout() {
 | 
						|
    throw new Error('setTimeout has not been defined');
 | 
						|
}
 | 
						|
function defaultClearTimeout () {
 | 
						|
    throw new Error('clearTimeout has not been defined');
 | 
						|
}
 | 
						|
(function () {
 | 
						|
    try {
 | 
						|
        if (typeof setTimeout === 'function') {
 | 
						|
            cachedSetTimeout = setTimeout;
 | 
						|
        } else {
 | 
						|
            cachedSetTimeout = defaultSetTimout;
 | 
						|
        }
 | 
						|
    } catch (e) {
 | 
						|
        cachedSetTimeout = defaultSetTimout;
 | 
						|
    }
 | 
						|
    try {
 | 
						|
        if (typeof clearTimeout === 'function') {
 | 
						|
            cachedClearTimeout = clearTimeout;
 | 
						|
        } else {
 | 
						|
            cachedClearTimeout = defaultClearTimeout;
 | 
						|
        }
 | 
						|
    } catch (e) {
 | 
						|
        cachedClearTimeout = defaultClearTimeout;
 | 
						|
    }
 | 
						|
} ())
 | 
						|
function runTimeout(fun) {
 | 
						|
    if (cachedSetTimeout === setTimeout) {
 | 
						|
        //normal enviroments in sane situations
 | 
						|
        return setTimeout(fun, 0);
 | 
						|
    }
 | 
						|
    // if setTimeout wasn't available but was latter defined
 | 
						|
    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
 | 
						|
        cachedSetTimeout = setTimeout;
 | 
						|
        return setTimeout(fun, 0);
 | 
						|
    }
 | 
						|
    try {
 | 
						|
        // when when somebody has screwed with setTimeout but no I.E. maddness
 | 
						|
        return cachedSetTimeout(fun, 0);
 | 
						|
    } catch(e){
 | 
						|
        try {
 | 
						|
            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
 | 
						|
            return cachedSetTimeout.call(null, fun, 0);
 | 
						|
        } catch(e){
 | 
						|
            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
 | 
						|
            return cachedSetTimeout.call(this, fun, 0);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
}
 | 
						|
function runClearTimeout(marker) {
 | 
						|
    if (cachedClearTimeout === clearTimeout) {
 | 
						|
        //normal enviroments in sane situations
 | 
						|
        return clearTimeout(marker);
 | 
						|
    }
 | 
						|
    // if clearTimeout wasn't available but was latter defined
 | 
						|
    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
 | 
						|
        cachedClearTimeout = clearTimeout;
 | 
						|
        return clearTimeout(marker);
 | 
						|
    }
 | 
						|
    try {
 | 
						|
        // when when somebody has screwed with setTimeout but no I.E. maddness
 | 
						|
        return cachedClearTimeout(marker);
 | 
						|
    } catch (e){
 | 
						|
        try {
 | 
						|
            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
 | 
						|
            return cachedClearTimeout.call(null, marker);
 | 
						|
        } catch (e){
 | 
						|
            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
 | 
						|
            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
 | 
						|
            return cachedClearTimeout.call(this, marker);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
}
 | 
						|
var queue = [];
 | 
						|
var draining = false;
 | 
						|
var currentQueue;
 | 
						|
var queueIndex = -1;
 | 
						|
 | 
						|
function cleanUpNextTick() {
 | 
						|
    if (!draining || !currentQueue) {
 | 
						|
        return;
 | 
						|
    }
 | 
						|
    draining = false;
 | 
						|
    if (currentQueue.length) {
 | 
						|
        queue = currentQueue.concat(queue);
 | 
						|
    } else {
 | 
						|
        queueIndex = -1;
 | 
						|
    }
 | 
						|
    if (queue.length) {
 | 
						|
        drainQueue();
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
function drainQueue() {
 | 
						|
    if (draining) {
 | 
						|
        return;
 | 
						|
    }
 | 
						|
    var timeout = runTimeout(cleanUpNextTick);
 | 
						|
    draining = true;
 | 
						|
 | 
						|
    var len = queue.length;
 | 
						|
    while(len) {
 | 
						|
        currentQueue = queue;
 | 
						|
        queue = [];
 | 
						|
        while (++queueIndex < len) {
 | 
						|
            if (currentQueue) {
 | 
						|
                currentQueue[queueIndex].run();
 | 
						|
            }
 | 
						|
        }
 | 
						|
        queueIndex = -1;
 | 
						|
        len = queue.length;
 | 
						|
    }
 | 
						|
    currentQueue = null;
 | 
						|
    draining = false;
 | 
						|
    runClearTimeout(timeout);
 | 
						|
}
 | 
						|
 | 
						|
process.nextTick = function (fun) {
 | 
						|
    var args = new Array(arguments.length - 1);
 | 
						|
    if (arguments.length > 1) {
 | 
						|
        for (var i = 1; i < arguments.length; i++) {
 | 
						|
            args[i - 1] = arguments[i];
 | 
						|
        }
 | 
						|
    }
 | 
						|
    queue.push(new Item(fun, args));
 | 
						|
    if (queue.length === 1 && !draining) {
 | 
						|
        runTimeout(drainQueue);
 | 
						|
    }
 | 
						|
};
 | 
						|
 | 
						|
// v8 likes predictible objects
 | 
						|
function Item(fun, array) {
 | 
						|
    this.fun = fun;
 | 
						|
    this.array = array;
 | 
						|
}
 | 
						|
Item.prototype.run = function () {
 | 
						|
    this.fun.apply(null, this.array);
 | 
						|
};
 | 
						|
process.title = 'browser';
 | 
						|
process.browser = true;
 | 
						|
process.env = {};
 | 
						|
process.argv = [];
 | 
						|
process.version = ''; // empty string to avoid regexp issues
 | 
						|
process.versions = {};
 | 
						|
 | 
						|
function noop() {}
 | 
						|
 | 
						|
process.on = noop;
 | 
						|
process.addListener = noop;
 | 
						|
process.once = noop;
 | 
						|
process.off = noop;
 | 
						|
process.removeListener = noop;
 | 
						|
process.removeAllListeners = noop;
 | 
						|
process.emit = noop;
 | 
						|
process.prependListener = noop;
 | 
						|
process.prependOnceListener = noop;
 | 
						|
 | 
						|
process.listeners = function (name) { return [] }
 | 
						|
 | 
						|
process.binding = function (name) {
 | 
						|
    throw new Error('process.binding is not supported');
 | 
						|
};
 | 
						|
 | 
						|
process.cwd = function () { return '/' };
 | 
						|
process.chdir = function (dir) {
 | 
						|
    throw new Error('process.chdir is not supported');
 | 
						|
};
 | 
						|
process.umask = function() { return 0; };
 |