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
			| 
								 
											3 years ago
										 
									 | 
							
								// 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; };
							 |