react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / request / node_modules / har-validator / node_modules / bluebird / js / main / call_get.js
81160 views"use strict";1var cr = Object.create;2if (cr) {3var callerCache = cr(null);4var getterCache = cr(null);5callerCache[" size"] = getterCache[" size"] = 0;6}78module.exports = function(Promise) {9var util = require("./util.js");10var canEvaluate = util.canEvaluate;11var isIdentifier = util.isIdentifier;1213var getMethodCaller;14var getGetter;15if (!false) {16var makeMethodCaller = function (methodName) {17return new Function("ensureMethod", " \n\18return function(obj) { \n\19'use strict' \n\20var len = this.length; \n\21ensureMethod(obj, 'methodName'); \n\22switch(len) { \n\23case 1: return obj.methodName(this[0]); \n\24case 2: return obj.methodName(this[0], this[1]); \n\25case 3: return obj.methodName(this[0], this[1], this[2]); \n\26case 0: return obj.methodName(); \n\27default: \n\28return obj.methodName.apply(obj, this); \n\29} \n\30}; \n\31".replace(/methodName/g, methodName))(ensureMethod);32};3334var makeGetter = function (propertyName) {35return new Function("obj", " \n\36'use strict'; \n\37return obj.propertyName; \n\38".replace("propertyName", propertyName));39};4041var getCompiled = function(name, compiler, cache) {42var ret = cache[name];43if (typeof ret !== "function") {44if (!isIdentifier(name)) {45return null;46}47ret = compiler(name);48cache[name] = ret;49cache[" size"]++;50if (cache[" size"] > 512) {51var keys = Object.keys(cache);52for (var i = 0; i < 256; ++i) delete cache[keys[i]];53cache[" size"] = keys.length - 256;54}55}56return ret;57};5859getMethodCaller = function(name) {60return getCompiled(name, makeMethodCaller, callerCache);61};6263getGetter = function(name) {64return getCompiled(name, makeGetter, getterCache);65};66}6768function ensureMethod(obj, methodName) {69var fn;70if (obj != null) fn = obj[methodName];71if (typeof fn !== "function") {72var message = "Object " + util.classString(obj) + " has no method '" +73util.toString(methodName) + "'";74throw new Promise.TypeError(message);75}76return fn;77}7879function caller(obj) {80var methodName = this.pop();81var fn = ensureMethod(obj, methodName);82return fn.apply(obj, this);83}84Promise.prototype.call = function (methodName) {85var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}86if (!false) {87if (canEvaluate) {88var maybeCaller = getMethodCaller(methodName);89if (maybeCaller !== null) {90return this._then(91maybeCaller, undefined, undefined, args, undefined);92}93}94}95args.push(methodName);96return this._then(caller, undefined, undefined, args, undefined);97};9899function namedGetter(obj) {100return obj[this];101}102function indexedGetter(obj) {103var index = +this;104if (index < 0) index = Math.max(0, index + obj.length);105return obj[index];106}107Promise.prototype.get = function (propertyName) {108var isIndex = (typeof propertyName === "number");109var getter;110if (!isIndex) {111if (canEvaluate) {112var maybeGetter = getGetter(propertyName);113getter = maybeGetter !== null ? maybeGetter : namedGetter;114} else {115getter = namedGetter;116}117} else {118getter = indexedGetter;119}120return this._then(getter, undefined, undefined, propertyName, undefined);121};122};123124125