| 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;
 |