UNPKG

emitter-b

Version:

An enhanced EventEmitter with extra methods for detecting whether an event has any handlers or not for efficient event handler attachment.

1,784 lines (1,552 loc) 381 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["allTests"] = factory(); else root["allTests"] = factory(); })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // identity function for calling harmony imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 55); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /* unknown exports provided */ /* all exports used */ /*!****************************************************************************************************!*\ !*** D:/billysFile/code/javascript/modules/EventEmitterB/~/deadunit-core/~/source-map/lib/util.js ***! \****************************************************************************************************/ /***/ (function(module, exports) { /* -*- Mode: js; js-indent-level: 2; -*- */ /* * Copyright 2011 Mozilla Foundation and contributors * Licensed under the New BSD license. See LICENSE or: * http://opensource.org/licenses/BSD-3-Clause */ /** * This is a helper function for getting values from parameter/options * objects. * * @param args The object we are extracting values from * @param name The name of the property we are getting. * @param defaultValue An optional value to return if the property is missing * from the object. If this is not specified and the property is missing, an * error will be thrown. */ function getArg(aArgs, aName, aDefaultValue) { if (aName in aArgs) { return aArgs[aName]; } else if (arguments.length === 3) { return aDefaultValue; } else { throw new Error('"' + aName + '" is a required argument.'); } } exports.getArg = getArg; var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; var dataUrlRegexp = /^data:.+\,.+$/; function urlParse(aUrl) { var match = aUrl.match(urlRegexp); if (!match) { return null; } return { scheme: match[1], auth: match[2], host: match[3], port: match[4], path: match[5] }; } exports.urlParse = urlParse; function urlGenerate(aParsedUrl) { var url = ''; if (aParsedUrl.scheme) { url += aParsedUrl.scheme + ':'; } url += '//'; if (aParsedUrl.auth) { url += aParsedUrl.auth + '@'; } if (aParsedUrl.host) { url += aParsedUrl.host; } if (aParsedUrl.port) { url += ":" + aParsedUrl.port } if (aParsedUrl.path) { url += aParsedUrl.path; } return url; } exports.urlGenerate = urlGenerate; /** * Normalizes a path, or the path portion of a URL: * * - Replaces consecutive slashes with one slash. * - Removes unnecessary '.' parts. * - Removes unnecessary '<dir>/..' parts. * * Based on code in the Node.js 'path' core module. * * @param aPath The path or url to normalize. */ function normalize(aPath) { var path = aPath; var url = urlParse(aPath); if (url) { if (!url.path) { return aPath; } path = url.path; } var isAbsolute = exports.isAbsolute(path); var parts = path.split(/\/+/); for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { part = parts[i]; if (part === '.') { parts.splice(i, 1); } else if (part === '..') { up++; } else if (up > 0) { if (part === '') { // The first part is blank if the path is absolute. Trying to go // above the root is a no-op. Therefore we can remove all '..' parts // directly after the root. parts.splice(i + 1, up); up = 0; } else { parts.splice(i, 2); up--; } } } path = parts.join('/'); if (path === '') { path = isAbsolute ? '/' : '.'; } if (url) { url.path = path; return urlGenerate(url); } return path; } exports.normalize = normalize; /** * Joins two paths/URLs. * * @param aRoot The root path or URL. * @param aPath The path or URL to be joined with the root. * * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a * scheme-relative URL: Then the scheme of aRoot, if any, is prepended * first. * - Otherwise aPath is a path. If aRoot is a URL, then its path portion * is updated with the result and aRoot is returned. Otherwise the result * is returned. * - If aPath is absolute, the result is aPath. * - Otherwise the two paths are joined with a slash. * - Joining for example 'http://' and 'www.example.com' is also supported. */ function join(aRoot, aPath) { if (aRoot === "") { aRoot = "."; } if (aPath === "") { aPath = "."; } var aPathUrl = urlParse(aPath); var aRootUrl = urlParse(aRoot); if (aRootUrl) { aRoot = aRootUrl.path || '/'; } // `join(foo, '//www.example.org')` if (aPathUrl && !aPathUrl.scheme) { if (aRootUrl) { aPathUrl.scheme = aRootUrl.scheme; } return urlGenerate(aPathUrl); } if (aPathUrl || aPath.match(dataUrlRegexp)) { return aPath; } // `join('http://', 'www.example.com')` if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { aRootUrl.host = aPath; return urlGenerate(aRootUrl); } var joined = aPath.charAt(0) === '/' ? aPath : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); if (aRootUrl) { aRootUrl.path = joined; return urlGenerate(aRootUrl); } return joined; } exports.join = join; exports.isAbsolute = function (aPath) { return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); }; /** * Make a path relative to a URL or another path. * * @param aRoot The root path or URL. * @param aPath The path or URL to be made relative to aRoot. */ function relative(aRoot, aPath) { if (aRoot === "") { aRoot = "."; } aRoot = aRoot.replace(/\/$/, ''); // It is possible for the path to be above the root. In this case, simply // checking whether the root is a prefix of the path won't work. Instead, we // need to remove components from the root one by one, until either we find // a prefix that fits, or we run out of components to remove. var level = 0; while (aPath.indexOf(aRoot + '/') !== 0) { var index = aRoot.lastIndexOf("/"); if (index < 0) { return aPath; } // If the only part of the root that is left is the scheme (i.e. http://, // file:///, etc.), one or more slashes (/), or simply nothing at all, we // have exhausted all components, so the path is not relative to the root. aRoot = aRoot.slice(0, index); if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { return aPath; } ++level; } // Make sure we add a "../" for each component we removed from the root. return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); } exports.relative = relative; var supportsNullProto = (function () { var obj = Object.create(null); return !('__proto__' in obj); }()); function identity (s) { return s; } /** * Because behavior goes wacky when you set `__proto__` on objects, we * have to prefix all the strings in our set with an arbitrary character. * * See https://github.com/mozilla/source-map/pull/31 and * https://github.com/mozilla/source-map/issues/30 * * @param String aStr */ function toSetString(aStr) { if (isProtoString(aStr)) { return '$' + aStr; } return aStr; } exports.toSetString = supportsNullProto ? identity : toSetString; function fromSetString(aStr) { if (isProtoString(aStr)) { return aStr.slice(1); } return aStr; } exports.fromSetString = supportsNullProto ? identity : fromSetString; function isProtoString(s) { if (!s) { return false; } var length = s.length; if (length < 9 /* "__proto__".length */) { return false; } if (s.charCodeAt(length - 1) !== 95 /* '_' */ || s.charCodeAt(length - 2) !== 95 /* '_' */ || s.charCodeAt(length - 3) !== 111 /* 'o' */ || s.charCodeAt(length - 4) !== 116 /* 't' */ || s.charCodeAt(length - 5) !== 111 /* 'o' */ || s.charCodeAt(length - 6) !== 114 /* 'r' */ || s.charCodeAt(length - 7) !== 112 /* 'p' */ || s.charCodeAt(length - 8) !== 95 /* '_' */ || s.charCodeAt(length - 9) !== 95 /* '_' */) { return false; } for (var i = length - 10; i >= 0; i--) { if (s.charCodeAt(i) !== 36 /* '$' */) { return false; } } return true; } /** * Comparator between two mappings where the original positions are compared. * * Optionally pass in `true` as `onlyCompareGenerated` to consider two * mappings with the same original source/line/column, but different generated * line and column the same. Useful when searching for a mapping with a * stubbed out mapping. */ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { var cmp = mappingA.source - mappingB.source; if (cmp !== 0) { return cmp; } cmp = mappingA.originalLine - mappingB.originalLine; if (cmp !== 0) { return cmp; } cmp = mappingA.originalColumn - mappingB.originalColumn; if (cmp !== 0 || onlyCompareOriginal) { return cmp; } cmp = mappingA.generatedColumn - mappingB.generatedColumn; if (cmp !== 0) { return cmp; } cmp = mappingA.generatedLine - mappingB.generatedLine; if (cmp !== 0) { return cmp; } return mappingA.name - mappingB.name; } exports.compareByOriginalPositions = compareByOriginalPositions; /** * Comparator between two mappings with deflated source and name indices where * the generated positions are compared. * * Optionally pass in `true` as `onlyCompareGenerated` to consider two * mappings with the same generated line and column, but different * source/name/original line and column the same. Useful when searching for a * mapping with a stubbed out mapping. */ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { var cmp = mappingA.generatedLine - mappingB.generatedLine; if (cmp !== 0) { return cmp; } cmp = mappingA.generatedColumn - mappingB.generatedColumn; if (cmp !== 0 || onlyCompareGenerated) { return cmp; } cmp = mappingA.source - mappingB.source; if (cmp !== 0) { return cmp; } cmp = mappingA.originalLine - mappingB.originalLine; if (cmp !== 0) { return cmp; } cmp = mappingA.originalColumn - mappingB.originalColumn; if (cmp !== 0) { return cmp; } return mappingA.name - mappingB.name; } exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; function strcmp(aStr1, aStr2) { if (aStr1 === aStr2) { return 0; } if (aStr1 > aStr2) { return 1; } return -1; } /** * Comparator between two mappings with inflated source and name strings where * the generated positions are compared. */ function compareByGeneratedPositionsInflated(mappingA, mappingB) { var cmp = mappingA.generatedLine - mappingB.generatedLine; if (cmp !== 0) { return cmp; } cmp = mappingA.generatedColumn - mappingB.generatedColumn; if (cmp !== 0) { return cmp; } cmp = strcmp(mappingA.source, mappingB.source); if (cmp !== 0) { return cmp; } cmp = mappingA.originalLine - mappingB.originalLine; if (cmp !== 0) { return cmp; } cmp = mappingA.originalColumn - mappingB.originalColumn; if (cmp !== 0) { return cmp; } return strcmp(mappingA.name, mappingB.name); } exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; /***/ }), /* 1 */ /* unknown exports provided */ /* all exports used */ /*!********************************************************************************!*\ !*** D:/billysFile/code/javascript/modules/EventEmitterB/~/process/browser.js ***! \********************************************************************************/ /***/ (function(module, exports) { // 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; }; /***/ }), /* 2 */ /* unknown exports provided */ /* all exports used */ /*!**************************************************************************************!*\ !*** D:/billysFile/code/javascript/modules/EventEmitterB/~/path-browserify/index.js ***! \**************************************************************************************/ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to permit // persons to whom the Software is furnished to do so, subject to the // following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. // resolves . and .. elements in a path array with directory names there // must be no slashes, empty elements, or device names (c:\) in the array // (so also no leading and trailing slashes - it does not distinguish // relative and absolute paths) function normalizeArray(parts, allowAboveRoot) { // if the path tries to go above the root, `up` ends up > 0 var up = 0; for (var i = parts.length - 1; i >= 0; i--) { var last = parts[i]; if (last === '.') { parts.splice(i, 1); } else if (last === '..') { parts.splice(i, 1); up++; } else if (up) { parts.splice(i, 1); up--; } } // if the path is allowed to go above the root, restore leading ..s if (allowAboveRoot) { for (; up--; up) { parts.unshift('..'); } } return parts; } // Split a filename into [root, dir, basename, ext], unix version // 'root' is just a slash, or nothing. var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; var splitPath = function(filename) { return splitPathRe.exec(filename).slice(1); }; // path.resolve([from ...], to) // posix version exports.resolve = function() { var resolvedPath = '', resolvedAbsolute = false; for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { var path = (i >= 0) ? arguments[i] : process.cwd(); // Skip empty and invalid entries if (typeof path !== 'string') { throw new TypeError('Arguments to path.resolve must be strings'); } else if (!path) { continue; } resolvedPath = path + '/' + resolvedPath; resolvedAbsolute = path.charAt(0) === '/'; } // At this point the path should be resolved to a full absolute path, but // handle relative paths to be safe (might happen when process.cwd() fails) // Normalize the path resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { return !!p; }), !resolvedAbsolute).join('/'); return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; }; // path.normalize(path) // posix version exports.normalize = function(path) { var isAbsolute = exports.isAbsolute(path), trailingSlash = substr(path, -1) === '/'; // Normalize the path path = normalizeArray(filter(path.split('/'), function(p) { return !!p; }), !isAbsolute).join('/'); if (!path && !isAbsolute) { path = '.'; } if (path && trailingSlash) { path += '/'; } return (isAbsolute ? '/' : '') + path; }; // posix version exports.isAbsolute = function(path) { return path.charAt(0) === '/'; }; // posix version exports.join = function() { var paths = Array.prototype.slice.call(arguments, 0); return exports.normalize(filter(paths, function(p, index) { if (typeof p !== 'string') { throw new TypeError('Arguments to path.join must be strings'); } return p; }).join('/')); }; // path.relative(from, to) // posix version exports.relative = function(from, to) { from = exports.resolve(from).substr(1); to = exports.resolve(to).substr(1); function trim(arr) { var start = 0; for (; start < arr.length; start++) { if (arr[start] !== '') break; } var end = arr.length - 1; for (; end >= 0; end--) { if (arr[end] !== '') break; } if (start > end) return []; return arr.slice(start, end - start + 1); } var fromParts = trim(from.split('/')); var toParts = trim(to.split('/')); var length = Math.min(fromParts.length, toParts.length); var samePartsLength = length; for (var i = 0; i < length; i++) { if (fromParts[i] !== toParts[i]) { samePartsLength = i; break; } } var outputParts = []; for (var i = samePartsLength; i < fromParts.length; i++) { outputParts.push('..'); } outputParts = outputParts.concat(toParts.slice(samePartsLength)); return outputParts.join('/'); }; exports.sep = '/'; exports.delimiter = ':'; exports.dirname = function(path) { var result = splitPath(path), root = result[0], dir = result[1]; if (!root && !dir) { // No dirname whatsoever return '.'; } if (dir) { // It has a dirname, strip trailing slash dir = dir.substr(0, dir.length - 1); } return root + dir; }; exports.basename = function(path, ext) { var f = splitPath(path)[2]; // TODO: make this comparison case-insensitive on windows? if (ext && f.substr(-1 * ext.length) === ext) { f = f.substr(0, f.length - ext.length); } return f; }; exports.extname = function(path) { return splitPath(path)[3]; }; function filter (xs, f) { if (xs.filter) return xs.filter(f); var res = []; for (var i = 0; i < xs.length; i++) { if (f(xs[i], i, xs)) res.push(xs[i]); } return res; } // String.prototype.substr - negative index don't work in IE8 var substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) { return str.substr(start, len) } : function (str, start, len) { if (start < 0) start = str.length + start; return str.substr(start, len); } ; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../process/browser.js */ 1))) /***/ }), /* 3 */ /* unknown exports provided */ /* all exports used */ /*!***********************************!*\ !*** (webpack)/buildin/global.js ***! \***********************************/ /***/ (function(module, exports) { var g; // This works in non-strict mode g = (function() { return this; })(); try { // This works if eval is allowed (see CSP) g = g || Function("return this")() || (1,eval)("this"); } catch(e) { // This works if the window reference is available if(typeof window === "object") g = window; } // g can still be undefined, but nothing to do about it... // We return undefined, instead of nothing here, so it's // easier to handle this case. if(!global) { ...} module.exports = g; /***/ }), /* 4 */ /* unknown exports provided */ /* all exports used */ /*!*****************************************************************************************!*\ !*** D:/billysFile/code/javascript/modules/EventEmitterB/~/async-future/asyncFuture.js ***! \*****************************************************************************************/ /***/ (function(module, exports, __webpack_require__) { /* Copyright (c) 2013 Billy Tetrud - Free to use for any purpose: MIT License*/ var trimArgs = __webpack_require__(/*! trimArguments */ 48) module.exports = Future Future.debug = false // switch this to true if you want ids and long stack traces var curId = 0 // for ids\ function Future(value) { if(arguments.length > 0) { var f = new Future() f.return(value) return f } else { this.isResolved = false this.queue = [] if(Future.debug) { curId++ this.id = curId } } } // static methods // has one parameter: either a bunch of futures, or a single array of futures // returns a promise that resolves when one of them errors, or when all of them succeeds Future.all = function() { if(arguments[0] instanceof Array) { var futures = arguments[0] } else { var futures = trimArgs(arguments) } var f = new Future() var results = [] if(futures.length > 0) { var current = futures[0] futures.forEach(function(future, index) { current = current.then(function(v) { results[index] = v return futures[index+1] }) }) //if current.catch(function(e) { f.throw(e) }) // else current.then(function() { f.return(results) }) } else { f.return(results) } return f } // either used like futureWrap(function(){ ... })(arg1,arg2,etc) or // futureWrap(object, 'methodName')(arg1,arg2,etc) Future.wrap = function() { // function if(arguments.length === 1) { var fn = arguments[0] var object = undefined // object, function } else { var object = arguments[0] var fn = object[arguments[1]] } return function() { var args = Array.prototype.slice.call(arguments) var future = new Future args.push(future.resolver()) var me = this if(object) me = object fn.apply(me, args) return future } } // default var unhandledErrorHandler = function(e) { setTimeout(function() { throw e },0) } // setup unhandled error handler // unhandled errors happen when done is called, and then an exception is thrown from the future Future.error = function(handler) { unhandledErrorHandler = handler } // instance methods // returns a value for the future (can only be executed once) // if there are callbacks waiting on this value, they are run in the next tick // (ie they aren't run immediately, allowing the current thread of execution to complete) Future.prototype.return = function(v) { resolve(this, 'return', v) } Future.prototype.throw = function(e) { resolve(this, 'error', e) } function setNext(that, future) { if(future !== undefined && !isLikeAFuture(future) ) throw Error("Value returned from then or catch *not* a Future: "+future) resolve(that, 'next', future) } function wait(that, cb) { if(that.isResolved) { executeCallbacks(that, [cb]) } else { that.queue.push(cb) } } // duck typing to determine if something is or isn't a future function isLikeAFuture(x) { return x.isResolved !== undefined && x.queue !== undefined && x.then !== undefined } function waitOnResult(f, result, cb) { wait(result, function() { if(this.hasError) { f.throw(this.error) } else if(this.hasNext) { waitOnResult(f, this.next, cb) } else { try { setNext(f, cb(this.result)) } catch(e) { f.throw(e) } } }) } // cb takes one parameter - the value returned // cb can return a Future, in which case the result of that Future is passed to next-in-chain Future.prototype.then = function(cb) { var f = new Future wait(this, function() { if(this.hasError) f.throw(this.error) else if(this.hasNext) waitOnResult(f, this.next, cb) else { try { setNext(f, cb(this.result)) } catch(e) { f.throw(e) } } }) return f } // cb takes one parameter - the error caught // cb can return a Future, in which case the result of that Future is passed to next-in-chain Future.prototype.catch = function(cb) { var f = new Future wait(this, function() { if(this.hasError) { try { setNext(f, cb(this.error)) } catch(e) { f.throw(e) } } else if(this.hasNext) { this.next.then(function(v) { f.return(v) }).catch(function(e) { setNext(f, cb(e)) }) } else { f.return(this.result) } }) return f } // cb takes no parameters // callback's return value is ignored, but thrown exceptions propogate normally Future.prototype.finally = function(cb) { var f = new Future wait(this, function() { try { var that = this if(this.hasNext) { this.next.then(function(v) { var x = cb() f.return(v) return x }).catch(function(e) { var x = cb() f.throw(e) return x }).done() } else if(this.hasError) { Future(true).then(function() { return cb() }).then(function() { f.throw(that.error) }).catch(function(e) { f.throw(e) }).done() } else { Future(true).then(function() { return cb() }).then(function() { f.return(that.result) }).catch(function(e) { f.throw(e) }).done() } } catch(e) { f.throw(e) } }) return f } // all unused futures should end with this (e.g. most then-chains) // detatches the future so any propogated exception is thrown (so the exception isn't silently lost) Future.prototype.done = function() { wait(this, function() { if(this.hasError) { unhandledErrorHandler(this.error) } else if(this.hasNext) { this.next.catch(function(e) { unhandledErrorHandler(e) }) } }) } Future.prototype.resolver = function() { var me = this return function(e,v) { if(e) { // error argument me.throw(e) } else { me.return(v) } } } Future.prototype.resolved = function() { return this.isResolved } function resolve(that, type, value) { if(that.isResolved) throw Error("Future resolved more than once! Resolution: "+value) that.isResolved = true that.hasError = type === 'error' that.hasNext = type === 'next' && value !== undefined if(that.hasError) that.error = value else if(that.hasNext) that.next = value else that.result = value executeCallbacks(that, that.queue) } function executeCallbacks(that, callbacks) { if(callbacks.length > 0) { setTimeout(function() { callbacks.forEach(function(cb) { cb.apply(that) }) },0) } } /***/ }), /* 5 */ /* unknown exports provided */ /* all exports used */ /*!****************************************************************************!*\ !*** D:/billysFile/code/javascript/modules/EventEmitterB/~/colors/safe.js ***! \****************************************************************************/ /***/ (function(module, exports, __webpack_require__) { var isHeadless = false; if (typeof module !== 'undefined') { isHeadless = true; } if (!isHeadless) { var exports = {}; var module = {}; var colors = exports; exports.mode = "browser"; } else { exports.mode = "console"; } // // Prototypes the string object to have additional method calls that add terminal colors // var addProperty = function (color, func) { exports[color] = function (str) { return func.apply(str); }; }; function stylize(str, style) { var styles; if (exports.mode === 'console') { styles = { //styles 'bold' : ['\x1B[1m', '\x1B[22m'], 'italic' : ['\x1B[3m', '\x1B[23m'], 'underline' : ['\x1B[4m', '\x1B[24m'], 'inverse' : ['\x1B[7m', '\x1B[27m'], 'strikethrough' : ['\x1B[9m', '\x1B[29m'], //text colors //grayscale 'white' : ['\x1B[37m', '\x1B[39m'], 'grey' : ['\x1B[90m', '\x1B[39m'], 'black' : ['\x1B[30m', '\x1B[39m'], //colors 'blue' : ['\x1B[34m', '\x1B[39m'], 'cyan' : ['\x1B[36m', '\x1B[39m'], 'green' : ['\x1B[32m', '\x1B[39m'], 'magenta' : ['\x1B[35m', '\x1B[39m'], 'red' : ['\x1B[31m', '\x1B[39m'], 'yellow' : ['\x1B[33m', '\x1B[39m'], //background colors //grayscale 'whiteBG' : ['\x1B[47m', '\x1B[49m'], 'greyBG' : ['\x1B[49;5;8m', '\x1B[49m'], 'blackBG' : ['\x1B[40m', '\x1B[49m'], //colors 'blueBG' : ['\x1B[44m', '\x1B[49m'], 'cyanBG' : ['\x1B[46m', '\x1B[49m'], 'greenBG' : ['\x1B[42m', '\x1B[49m'], 'magentaBG' : ['\x1B[45m', '\x1B[49m'], 'redBG' : ['\x1B[41m', '\x1B[49m'], 'yellowBG' : ['\x1B[43m', '\x1B[49m'] }; } else if (exports.mode === 'browser') { styles = { //styles 'bold' : ['<b>', '</b>'], 'italic' : ['<i>', '</i>'], 'underline' : ['<u>', '</u>'], 'inverse' : ['<span style="background-color:black;color:white;">', '</span>'], 'strikethrough' : ['<del>', '</del>'], //text colors //grayscale 'white' : ['<span style="color:white;">', '</span>'], 'grey' : ['<span style="color:gray;">', '</span>'], 'black' : ['<span style="color:black;">', '</span>'], //colors 'blue' : ['<span style="color:blue;">', '</span>'], 'cyan' : ['<span style="color:cyan;">', '</span>'], 'green' : ['<span style="color:green;">', '</span>'], 'magenta' : ['<span style="color:magenta;">', '</span>'], 'red' : ['<span style="color:red;">', '</span>'], 'yellow' : ['<span style="color:yellow;">', '</span>'], //background colors //grayscale 'whiteBG' : ['<span style="background-color:white;">', '</span>'], 'greyBG' : ['<span style="background-color:gray;">', '</span>'], 'blackBG' : ['<span style="background-color:black;">', '</span>'], //colors 'blueBG' : ['<span style="background-color:blue;">', '</span>'], 'cyanBG' : ['<span style="background-color:cyan;">', '</span>'], 'greenBG' : ['<span style="background-color:green;">', '</span>'], 'magentaBG' : ['<span style="background-color:magenta;">', '</span>'], 'redBG' : ['<span style="background-color:red;">', '</span>'], 'yellowBG' : ['<span style="background-color:yellow;">', '</span>'] }; } else if (exports.mode === 'none') { return str + ''; } else { console.log('unsupported mode, try "browser", "console" or "none"'); } return styles[style][0] + str + styles[style][1]; } function applyTheme(theme) { Object.keys(theme).forEach(function (prop) { if (typeof(theme[prop]) === 'string') { addProperty(prop, function () { return exports[theme[prop]](this); }); } else { addProperty(prop, function () { var ret = this; for (var t = 0; t < theme[prop].length; t++) { ret = exports[theme[prop][t]](ret); } return ret; }); } }); } // // Iterate through all default styles and colors // var x = ['bold', 'underline', 'strikethrough', 'italic', 'inverse', 'grey', 'black', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta', 'greyBG', 'blackBG', 'yellowBG', 'redBG', 'greenBG', 'blueBG', 'whiteBG', 'cyanBG', 'magentaBG']; x.forEach(function (style) { // __defineGetter__ at the least works in more browsers // http://robertnyman.com/javascript/javascript-getters-setters.html // Object.defineProperty only works in Chrome addProperty(style, function () { return stylize(this, style); }); }); function sequencer(map) { return function () { if (!isHeadless) { return this.replace(/( )/, '$1'); } var exploded = this.split(""), i = 0; exploded = exploded.map(map); return exploded.join(""); }; } var rainbowMap = (function () { var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta']; //RoY G BiV return function (letter, i, exploded) { if (letter === " ") { return letter; } else { return stylize(letter, rainbowColors[i++ % rainbowColors.length]); } }; })(); exports.themes = {}; exports.addSequencer = function (name, map) { addProperty(name, sequencer(map)); }; exports.addSequencer('rainbow', rainbowMap); exports.addSequencer('zebra', function (letter, i, exploded) { return i % 2 === 0 ? letter : letter.inverse; }); exports.setTheme = function (theme) { if (typeof theme === 'string') { exports.themes[theme] = !(function webpackMissingModule() { var e = new Error("Cannot find module \".\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()); applyTheme(exports.themes[theme]); return exports.themes[theme]; } else { applyTheme(theme); } }; addProperty('stripColors', function () { return ("" + this).replace(/\x1B\[\d+m/g, ''); }); // please no function zalgo(text, options) { var soul = { "up" : [ '̍', '̎', '̄', '̅', '̿', '̑', '̆', '̐', '͒', '͗', '͑', '̇', '̈', '̊', '͂', '̓', '̈', '͊', '͋', '͌', '̃', '̂', '̌', '͐', '̀', '́', '̋', '̏', '̒', '̓', '̔', '̽', '̉', 'ͣ', 'ͤ', 'ͥ', 'ͦ', 'ͧ', 'ͨ', 'ͩ', 'ͪ', 'ͫ', 'ͬ', 'ͭ', 'ͮ', 'ͯ', '̾', '͛', '͆', '̚' ], "down" : [ '̖', '̗', '̘', '̙', '̜', '̝', '̞', '̟', '̠', '̤', '̥', '̦', '̩', '̪', '̫', '̬', '̭', '̮', '̯', '̰', '̱', '̲', '̳', '̹', '̺', '̻', '̼', 'ͅ', '͇', '͈', '͉', '͍', '͎', '͓', '͔', '͕', '͖', '͙', '͚', '̣' ], "mid" : [ '̕', '̛', '̀', '́', '͘', '̡', '̢', '̧', '̨', '̴', '̵', '̶', '͜', '͝', '͞', '͟', '͠', '͢', '̸', '̷', '͡', ' ҉' ] }, all = [].concat(soul.up, soul.down, soul.mid), zalgo = {}; function randomNumber(range) { var r = Math.floor(Math.random() * range); return r; } function is_char(character) { var bool = false; all.filter(function (i) { bool = (i === character); }); return bool; } function heComes(text, options) { var result = '', counts, l; options = options || {}; options["up"] = options["up"] || true; options["mid"] = options["mid"] || true; options["down"] = options["down"] || true; options["size"] = options["size"] || "maxi"; text = text.split(''); for (l in text) { if (is_char(l)) { continue; } result = result + text[l]; counts = {"up" : 0, "down" : 0, "mid" : 0}; switch (options.size) { case 'mini': counts.up = randomNumber(8); counts.min = randomNumber(2); counts.down = randomNumber(8); break; case 'maxi': counts.up = randomNumber(16) + 3; counts.min = randomNumber(4) + 1; counts.down = randomNumber(64) + 3; break; default: counts.up = randomNumber(8) + 1; counts.mid = randomNumber(6) / 2; counts.down = randomNumber(8) + 1; break; } var arr = ["up", "mid", "down"]; for (var d in arr) { var index = arr[d]; for (var i = 0 ; i <= counts[index]; i++) { if (options[index]) { result = result + soul[index][randomNumber(soul[index].length)]; } } } } return result; } return heComes(text); } // don't summon zalgo addProperty('zalgo', function () { return zalgo(this); }); exports.transforms = x.concat(['rainbow', 'zebra', 'stripColors','zalgo']) /***/ }), /* 6 */ /* unknown exports provided */ /* all exports used */ /*!*********************************************************************************************************!*\ !*** D:/billysFile/code/javascript/modules/EventEmitterB/~/deadunit-core/~/async-future/asyncFuture.js ***! \*********************************************************************************************************/ /***/ (function(module, exports, __webpack_require__) { /* Copyright (c) 2013 Billy Tetrud - Free to use for any purpose: MIT License*/ var trimArgs = __webpack_require__(/*! trimArguments */ 17) module.exports = Future Future.debug = false // switch this to true if you want ids and long stack traces var curId = 0 // for ids\ function Future(value) { if(arguments.length > 0) { var f = new Future() f.return(value) return f } else { this.isResolved = false this.queue = [] this.n = 1 // future depth (for preventing "too much recursion" RangeErrors) if(Future.debug) { curId++ this.id = curId } } } // static methods // has one parameter: either a bunch of futures, or a single array of futures // returns a promise that resolves when one of them errors, or when all of them succeeds Future.all = function() { if(arguments[0] instanceof Array) { var futures = arguments[0] } else { var futures = trimArgs(arguments) } var f = new Future() var results = [] if(futures.length > 0) { var current = futures[0] futures.forEach(function(future, index) { current = current.then(function(v) { results[index] = v return futures[index+1] }) }) //if current.catch(function(e) { f.throw(e) }) // else current.then(function() { f.return(results) }) } else { f.return(results) } return f } // either used like futureWrap(function(){ ... })(arg1,arg2,etc) or // futureWrap(object, 'methodName')(arg1,arg2,etc) Future.wrap = function() { // function if(arguments.length === 1) { var fn = arguments[0] var object = undefined // object, function } else { var object = arguments[0] var fn = object[arguments[1]] } return function() { var args = Array.prototype.slice.call(arguments) var future = new Future args.push(future.resolver()) var me = this if(object) me = object fn.apply(me, args) return future } } // future wraps a function who's callback only takes one parameter - the return value (no error is available) // eg: function(result) {} Future.wrapSingleParameter = function() { if(arguments.length === 1) { var fn = arguments[0] } else { var object = arguments[0] var method = arguments[1] var fn = object[method] } return function() { var args = Array.prototype.slice.call(arguments) var future = new Future args.push(function(result) { future.return(result) }) var me = this if(object) me = object fn.apply(me, args) return future } } // default var unhandledErrorHandler = function(e) { setTimeout(function() { throw e },0) } // setup unhandled error handler // unhandled errors happen when done is called, and then an exception is thrown from the future Future.error = function(handler) { unhandledErrorHandler = handler } // instance methods // returns a value for the future (can only be executed once) // if there are callbacks waiting on this value, they are run in the next tick // (ie they aren't run immediately, allowing the current thread of execution to complete) Future.prototype.return = function(v) { resolve(this, 'return', v) } Future.prototype.throw = function(e) { if(this.location !== undefined) { e.stack += '\n ---------------------------\n'+this.location.stack.split('\n').slice(4).join('\n') } resolve(this, 'error', e) return this } function setNext(that, future) { resolve(that, 'next', future) } function wait(that, cb) { if(that.isResolved) { executeCallbacks(that, [cb]) } else { that.queue.push(cb) } } // duck typing to determine if something is or isn't a future var isLikeAFuture = Future.isLikeAFuture = function(x) { return x.isResolved !== undefined && x.queue !== undefined && x.then !== undefined } function waitOnResult(f, result, cb) { wait(result, function() { if(this.hasError) { f.throw(this.error) } else if(this.hasNext) { waitOnResult(f, this.next, cb) } else { try { setNext(f, executeCallback(cb,this.result)) } catch(e) { f.throw(e) } } }) } // cb takes one parameter - the value returned // cb can return a Future, in which case the result of that Future is passed to next-in-chain Future.prototype.then = function(cb) { var f = createChainFuture(this) wait(this, function() { if(this.hasError) f.throw(this.error) else if(this.hasNext) waitOnResult(f, this.next, cb) else { try { setNext(f, executeCallback(cb,this.result))