| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 | 
							- "use strict";
 
- var es5 = require("./es5");
 
- var canEvaluate = typeof navigator == "undefined";
 
- var errorObj = {e: {}};
 
- var tryCatchTarget;
 
- var globalObject = typeof self !== "undefined" ? self :
 
-     typeof window !== "undefined" ? window :
 
-     typeof global !== "undefined" ? global :
 
-     this !== undefined ? this : null;
 
- function tryCatcher() {
 
-     try {
 
-         var target = tryCatchTarget;
 
-         tryCatchTarget = null;
 
-         return target.apply(this, arguments);
 
-     } catch (e) {
 
-         errorObj.e = e;
 
-         return errorObj;
 
-     }
 
- }
 
- function tryCatch(fn) {
 
-     tryCatchTarget = fn;
 
-     return tryCatcher;
 
- }
 
- var inherits = function(Child, Parent) {
 
-     var hasProp = {}.hasOwnProperty;
 
-     function T() {
 
-         this.constructor = Child;
 
-         this.constructor$ = Parent;
 
-         for (var propertyName in Parent.prototype) {
 
-             if (hasProp.call(Parent.prototype, propertyName) &&
 
-                 propertyName.charAt(propertyName.length-1) !== "$"
 
-            ) {
 
-                 this[propertyName + "$"] = Parent.prototype[propertyName];
 
-             }
 
-         }
 
-     }
 
-     T.prototype = Parent.prototype;
 
-     Child.prototype = new T();
 
-     return Child.prototype;
 
- };
 
- function isPrimitive(val) {
 
-     return val == null || val === true || val === false ||
 
-         typeof val === "string" || typeof val === "number";
 
- }
 
- function isObject(value) {
 
-     return typeof value === "function" ||
 
-            typeof value === "object" && value !== null;
 
- }
 
- function maybeWrapAsError(maybeError) {
 
-     if (!isPrimitive(maybeError)) return maybeError;
 
-     return new Error(safeToString(maybeError));
 
- }
 
- function withAppended(target, appendee) {
 
-     var len = target.length;
 
-     var ret = new Array(len + 1);
 
-     var i;
 
-     for (i = 0; i < len; ++i) {
 
-         ret[i] = target[i];
 
-     }
 
-     ret[i] = appendee;
 
-     return ret;
 
- }
 
- function getDataPropertyOrDefault(obj, key, defaultValue) {
 
-     if (es5.isES5) {
 
-         var desc = Object.getOwnPropertyDescriptor(obj, key);
 
-         if (desc != null) {
 
-             return desc.get == null && desc.set == null
 
-                     ? desc.value
 
-                     : defaultValue;
 
-         }
 
-     } else {
 
-         return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;
 
-     }
 
- }
 
- function notEnumerableProp(obj, name, value) {
 
-     if (isPrimitive(obj)) return obj;
 
-     var descriptor = {
 
-         value: value,
 
-         configurable: true,
 
-         enumerable: false,
 
-         writable: true
 
-     };
 
-     es5.defineProperty(obj, name, descriptor);
 
-     return obj;
 
- }
 
- function thrower(r) {
 
-     throw r;
 
- }
 
- var inheritedDataKeys = (function() {
 
-     var excludedPrototypes = [
 
-         Array.prototype,
 
-         Object.prototype,
 
-         Function.prototype
 
-     ];
 
-     var isExcludedProto = function(val) {
 
-         for (var i = 0; i < excludedPrototypes.length; ++i) {
 
-             if (excludedPrototypes[i] === val) {
 
-                 return true;
 
-             }
 
-         }
 
-         return false;
 
-     };
 
-     if (es5.isES5) {
 
-         var getKeys = Object.getOwnPropertyNames;
 
-         return function(obj) {
 
-             var ret = [];
 
-             var visitedKeys = Object.create(null);
 
-             while (obj != null && !isExcludedProto(obj)) {
 
-                 var keys;
 
-                 try {
 
-                     keys = getKeys(obj);
 
-                 } catch (e) {
 
-                     return ret;
 
-                 }
 
-                 for (var i = 0; i < keys.length; ++i) {
 
-                     var key = keys[i];
 
-                     if (visitedKeys[key]) continue;
 
-                     visitedKeys[key] = true;
 
-                     var desc = Object.getOwnPropertyDescriptor(obj, key);
 
-                     if (desc != null && desc.get == null && desc.set == null) {
 
-                         ret.push(key);
 
-                     }
 
-                 }
 
-                 obj = es5.getPrototypeOf(obj);
 
-             }
 
-             return ret;
 
-         };
 
-     } else {
 
-         var hasProp = {}.hasOwnProperty;
 
-         return function(obj) {
 
-             if (isExcludedProto(obj)) return [];
 
-             var ret = [];
 
-             /*jshint forin:false */
 
-             enumeration: for (var key in obj) {
 
-                 if (hasProp.call(obj, key)) {
 
-                     ret.push(key);
 
-                 } else {
 
-                     for (var i = 0; i < excludedPrototypes.length; ++i) {
 
-                         if (hasProp.call(excludedPrototypes[i], key)) {
 
-                             continue enumeration;
 
-                         }
 
-                     }
 
-                     ret.push(key);
 
-                 }
 
-             }
 
-             return ret;
 
-         };
 
-     }
 
- })();
 
- var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/;
 
- function isClass(fn) {
 
-     try {
 
-         if (typeof fn === "function") {
 
-             var keys = es5.names(fn.prototype);
 
-             var hasMethods = es5.isES5 && keys.length > 1;
 
-             var hasMethodsOtherThanConstructor = keys.length > 0 &&
 
-                 !(keys.length === 1 && keys[0] === "constructor");
 
-             var hasThisAssignmentAndStaticMethods =
 
-                 thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0;
 
-             if (hasMethods || hasMethodsOtherThanConstructor ||
 
-                 hasThisAssignmentAndStaticMethods) {
 
-                 return true;
 
-             }
 
-         }
 
-         return false;
 
-     } catch (e) {
 
-         return false;
 
-     }
 
- }
 
- function toFastProperties(obj) {
 
-     /*jshint -W027,-W055,-W031*/
 
-     function FakeConstructor() {}
 
-     FakeConstructor.prototype = obj;
 
-     var receiver = new FakeConstructor();
 
-     function ic() {
 
-         return typeof receiver.foo;
 
-     }
 
-     ic();
 
-     ic();
 
-     return obj;
 
-     eval(obj);
 
- }
 
- var rident = /^[a-z$_][a-z$_0-9]*$/i;
 
- function isIdentifier(str) {
 
-     return rident.test(str);
 
- }
 
- function filledRange(count, prefix, suffix) {
 
-     var ret = new Array(count);
 
-     for(var i = 0; i < count; ++i) {
 
-         ret[i] = prefix + i + suffix;
 
-     }
 
-     return ret;
 
- }
 
- function safeToString(obj) {
 
-     try {
 
-         return obj + "";
 
-     } catch (e) {
 
-         return "[no string representation]";
 
-     }
 
- }
 
- function isError(obj) {
 
-     return obj instanceof Error ||
 
-         (obj !== null &&
 
-            typeof obj === "object" &&
 
-            typeof obj.message === "string" &&
 
-            typeof obj.name === "string");
 
- }
 
- function markAsOriginatingFromRejection(e) {
 
-     try {
 
-         notEnumerableProp(e, "isOperational", true);
 
-     }
 
-     catch(ignore) {}
 
- }
 
- function originatesFromRejection(e) {
 
-     if (e == null) return false;
 
-     return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) ||
 
-         e["isOperational"] === true);
 
- }
 
- function canAttachTrace(obj) {
 
-     return isError(obj) && es5.propertyIsWritable(obj, "stack");
 
- }
 
- var ensureErrorObject = (function() {
 
-     if (!("stack" in new Error())) {
 
-         return function(value) {
 
-             if (canAttachTrace(value)) return value;
 
-             try {throw new Error(safeToString(value));}
 
-             catch(err) {return err;}
 
-         };
 
-     } else {
 
-         return function(value) {
 
-             if (canAttachTrace(value)) return value;
 
-             return new Error(safeToString(value));
 
-         };
 
-     }
 
- })();
 
- function classString(obj) {
 
-     return {}.toString.call(obj);
 
- }
 
- function copyDescriptors(from, to, filter) {
 
-     var keys = es5.names(from);
 
-     for (var i = 0; i < keys.length; ++i) {
 
-         var key = keys[i];
 
-         if (filter(key)) {
 
-             try {
 
-                 es5.defineProperty(to, key, es5.getDescriptor(from, key));
 
-             } catch (ignore) {}
 
-         }
 
-     }
 
- }
 
- var asArray = function(v) {
 
-     if (es5.isArray(v)) {
 
-         return v;
 
-     }
 
-     return null;
 
- };
 
- if (typeof Symbol !== "undefined" && Symbol.iterator) {
 
-     var ArrayFrom = typeof Array.from === "function" ? function(v) {
 
-         return Array.from(v);
 
-     } : function(v) {
 
-         var ret = [];
 
-         var it = v[Symbol.iterator]();
 
-         var itResult;
 
-         while (!((itResult = it.next()).done)) {
 
-             ret.push(itResult.value);
 
-         }
 
-         return ret;
 
-     };
 
-     asArray = function(v) {
 
-         if (es5.isArray(v)) {
 
-             return v;
 
-         } else if (v != null && typeof v[Symbol.iterator] === "function") {
 
-             return ArrayFrom(v);
 
-         }
 
-         return null;
 
-     };
 
- }
 
- var isNode = typeof process !== "undefined" &&
 
-         classString(process).toLowerCase() === "[object process]";
 
- var hasEnvVariables = typeof process !== "undefined" &&
 
-     typeof process.env !== "undefined";
 
- function env(key) {
 
-     return hasEnvVariables ? process.env[key] : undefined;
 
- }
 
- function getNativePromise() {
 
-     if (typeof Promise === "function") {
 
-         try {
 
-             var promise = new Promise(function(){});
 
-             if (classString(promise) === "[object Promise]") {
 
-                 return Promise;
 
-             }
 
-         } catch (e) {}
 
-     }
 
- }
 
- var reflectHandler;
 
- function contextBind(ctx, cb) {
 
-     if (ctx === null ||
 
-         typeof cb !== "function" ||
 
-         cb === reflectHandler) {
 
-         return cb;
 
-     }
 
-     if (ctx.domain !== null) {
 
-         cb = ctx.domain.bind(cb);
 
-     }
 
-     var async = ctx.async;
 
-     if (async !== null) {
 
-         var old = cb;
 
-         cb = function() {
 
-             var $_len = arguments.length + 2;var args = new Array($_len); for(var $_i = 2; $_i < $_len ; ++$_i) {args[$_i] = arguments[$_i  - 2];};
 
-             args[0] = old;
 
-             args[1] = this;
 
-             return async.runInAsyncScope.apply(async, args);
 
-         };
 
-     }
 
-     return cb;
 
- }
 
- var ret = {
 
-     setReflectHandler: function(fn) {
 
-         reflectHandler = fn;
 
-     },
 
-     isClass: isClass,
 
-     isIdentifier: isIdentifier,
 
-     inheritedDataKeys: inheritedDataKeys,
 
-     getDataPropertyOrDefault: getDataPropertyOrDefault,
 
-     thrower: thrower,
 
-     isArray: es5.isArray,
 
-     asArray: asArray,
 
-     notEnumerableProp: notEnumerableProp,
 
-     isPrimitive: isPrimitive,
 
-     isObject: isObject,
 
-     isError: isError,
 
-     canEvaluate: canEvaluate,
 
-     errorObj: errorObj,
 
-     tryCatch: tryCatch,
 
-     inherits: inherits,
 
-     withAppended: withAppended,
 
-     maybeWrapAsError: maybeWrapAsError,
 
-     toFastProperties: toFastProperties,
 
-     filledRange: filledRange,
 
-     toString: safeToString,
 
-     canAttachTrace: canAttachTrace,
 
-     ensureErrorObject: ensureErrorObject,
 
-     originatesFromRejection: originatesFromRejection,
 
-     markAsOriginatingFromRejection: markAsOriginatingFromRejection,
 
-     classString: classString,
 
-     copyDescriptors: copyDescriptors,
 
-     isNode: isNode,
 
-     hasEnvVariables: hasEnvVariables,
 
-     env: env,
 
-     global: globalObject,
 
-     getNativePromise: getNativePromise,
 
-     contextBind: contextBind
 
- };
 
- ret.isRecentNode = ret.isNode && (function() {
 
-     var version;
 
-     if (process.versions && process.versions.node) {
 
-         version = process.versions.node.split(".").map(Number);
 
-     } else if (process.version) {
 
-         version = process.version.split(".").map(Number);
 
-     }
 
-     return (version[0] === 0 && version[1] > 10) || (version[0] > 0);
 
- })();
 
- ret.nodeSupportsAsyncResource = ret.isNode && (function() {
 
-     var supportsAsync = false;
 
-     try {
 
-         var res = require("async_hooks").AsyncResource;
 
-         supportsAsync = typeof res.prototype.runInAsyncScope === "function";
 
-     } catch (e) {
 
-         supportsAsync = false;
 
-     }
 
-     return supportsAsync;
 
- })();
 
- if (ret.isNode) ret.toFastProperties(process);
 
- try {throw new Error(); } catch (e) {ret.lastLineError = e;}
 
- module.exports = ret;
 
 
  |