lie.polyfill.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
  2. 'use strict';
  3. var immediate = _dereq_(2);
  4. /* istanbul ignore next */
  5. function INTERNAL() {}
  6. var handlers = {};
  7. var REJECTED = ['REJECTED'];
  8. var FULFILLED = ['FULFILLED'];
  9. var PENDING = ['PENDING'];
  10. module.exports = Promise;
  11. function Promise(resolver) {
  12. if (typeof resolver !== 'function') {
  13. throw new TypeError('resolver must be a function');
  14. }
  15. this.state = PENDING;
  16. this.queue = [];
  17. this.outcome = void 0;
  18. if (resolver !== INTERNAL) {
  19. safelyResolveThenable(this, resolver);
  20. }
  21. }
  22. Promise.prototype["finally"] = function (callback) {
  23. if (typeof callback !== 'function') {
  24. return this;
  25. }
  26. var p = this.constructor;
  27. return this.then(resolve, reject);
  28. function resolve(value) {
  29. function yes () {
  30. return value;
  31. }
  32. return p.resolve(callback()).then(yes);
  33. }
  34. function reject(reason) {
  35. function no () {
  36. throw reason;
  37. }
  38. return p.resolve(callback()).then(no);
  39. }
  40. };
  41. Promise.prototype["catch"] = function (onRejected) {
  42. return this.then(null, onRejected);
  43. };
  44. Promise.prototype.then = function (onFulfilled, onRejected) {
  45. if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||
  46. typeof onRejected !== 'function' && this.state === REJECTED) {
  47. return this;
  48. }
  49. var promise = new this.constructor(INTERNAL);
  50. if (this.state !== PENDING) {
  51. var resolver = this.state === FULFILLED ? onFulfilled : onRejected;
  52. unwrap(promise, resolver, this.outcome);
  53. } else {
  54. this.queue.push(new QueueItem(promise, onFulfilled, onRejected));
  55. }
  56. return promise;
  57. };
  58. function QueueItem(promise, onFulfilled, onRejected) {
  59. this.promise = promise;
  60. if (typeof onFulfilled === 'function') {
  61. this.onFulfilled = onFulfilled;
  62. this.callFulfilled = this.otherCallFulfilled;
  63. }
  64. if (typeof onRejected === 'function') {
  65. this.onRejected = onRejected;
  66. this.callRejected = this.otherCallRejected;
  67. }
  68. }
  69. QueueItem.prototype.callFulfilled = function (value) {
  70. handlers.resolve(this.promise, value);
  71. };
  72. QueueItem.prototype.otherCallFulfilled = function (value) {
  73. unwrap(this.promise, this.onFulfilled, value);
  74. };
  75. QueueItem.prototype.callRejected = function (value) {
  76. handlers.reject(this.promise, value);
  77. };
  78. QueueItem.prototype.otherCallRejected = function (value) {
  79. unwrap(this.promise, this.onRejected, value);
  80. };
  81. function unwrap(promise, func, value) {
  82. immediate(function () {
  83. var returnValue;
  84. try {
  85. returnValue = func(value);
  86. } catch (e) {
  87. return handlers.reject(promise, e);
  88. }
  89. if (returnValue === promise) {
  90. handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));
  91. } else {
  92. handlers.resolve(promise, returnValue);
  93. }
  94. });
  95. }
  96. handlers.resolve = function (self, value) {
  97. var result = tryCatch(getThen, value);
  98. if (result.status === 'error') {
  99. return handlers.reject(self, result.value);
  100. }
  101. var thenable = result.value;
  102. if (thenable) {
  103. safelyResolveThenable(self, thenable);
  104. } else {
  105. self.state = FULFILLED;
  106. self.outcome = value;
  107. var i = -1;
  108. var len = self.queue.length;
  109. while (++i < len) {
  110. self.queue[i].callFulfilled(value);
  111. }
  112. }
  113. return self;
  114. };
  115. handlers.reject = function (self, error) {
  116. self.state = REJECTED;
  117. self.outcome = error;
  118. var i = -1;
  119. var len = self.queue.length;
  120. while (++i < len) {
  121. self.queue[i].callRejected(error);
  122. }
  123. return self;
  124. };
  125. function getThen(obj) {
  126. // Make sure we only access the accessor once as required by the spec
  127. var then = obj && obj.then;
  128. if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {
  129. return function appyThen() {
  130. then.apply(obj, arguments);
  131. };
  132. }
  133. }
  134. function safelyResolveThenable(self, thenable) {
  135. // Either fulfill, reject or reject with error
  136. var called = false;
  137. function onError(value) {
  138. if (called) {
  139. return;
  140. }
  141. called = true;
  142. handlers.reject(self, value);
  143. }
  144. function onSuccess(value) {
  145. if (called) {
  146. return;
  147. }
  148. called = true;
  149. handlers.resolve(self, value);
  150. }
  151. function tryToUnwrap() {
  152. thenable(onSuccess, onError);
  153. }
  154. var result = tryCatch(tryToUnwrap);
  155. if (result.status === 'error') {
  156. onError(result.value);
  157. }
  158. }
  159. function tryCatch(func, value) {
  160. var out = {};
  161. try {
  162. out.value = func(value);
  163. out.status = 'success';
  164. } catch (e) {
  165. out.status = 'error';
  166. out.value = e;
  167. }
  168. return out;
  169. }
  170. Promise.resolve = resolve;
  171. function resolve(value) {
  172. if (value instanceof this) {
  173. return value;
  174. }
  175. return handlers.resolve(new this(INTERNAL), value);
  176. }
  177. Promise.reject = reject;
  178. function reject(reason) {
  179. var promise = new this(INTERNAL);
  180. return handlers.reject(promise, reason);
  181. }
  182. Promise.all = all;
  183. function all(iterable) {
  184. var self = this;
  185. if (Object.prototype.toString.call(iterable) !== '[object Array]') {
  186. return this.reject(new TypeError('must be an array'));
  187. }
  188. var len = iterable.length;
  189. var called = false;
  190. if (!len) {
  191. return this.resolve([]);
  192. }
  193. var values = new Array(len);
  194. var resolved = 0;
  195. var i = -1;
  196. var promise = new this(INTERNAL);
  197. while (++i < len) {
  198. allResolver(iterable[i], i);
  199. }
  200. return promise;
  201. function allResolver(value, i) {
  202. self.resolve(value).then(resolveFromAll, function (error) {
  203. if (!called) {
  204. called = true;
  205. handlers.reject(promise, error);
  206. }
  207. });
  208. function resolveFromAll(outValue) {
  209. values[i] = outValue;
  210. if (++resolved === len && !called) {
  211. called = true;
  212. handlers.resolve(promise, values);
  213. }
  214. }
  215. }
  216. }
  217. Promise.race = race;
  218. function race(iterable) {
  219. var self = this;
  220. if (Object.prototype.toString.call(iterable) !== '[object Array]') {
  221. return this.reject(new TypeError('must be an array'));
  222. }
  223. var len = iterable.length;
  224. var called = false;
  225. if (!len) {
  226. return this.resolve([]);
  227. }
  228. var i = -1;
  229. var promise = new this(INTERNAL);
  230. while (++i < len) {
  231. resolver(iterable[i]);
  232. }
  233. return promise;
  234. function resolver(value) {
  235. self.resolve(value).then(function (response) {
  236. if (!called) {
  237. called = true;
  238. handlers.resolve(promise, response);
  239. }
  240. }, function (error) {
  241. if (!called) {
  242. called = true;
  243. handlers.reject(promise, error);
  244. }
  245. });
  246. }
  247. }
  248. },{"2":2}],2:[function(_dereq_,module,exports){
  249. (function (global){
  250. 'use strict';
  251. var Mutation = global.MutationObserver || global.WebKitMutationObserver;
  252. var scheduleDrain;
  253. {
  254. if (Mutation) {
  255. var called = 0;
  256. var observer = new Mutation(nextTick);
  257. var element = global.document.createTextNode('');
  258. observer.observe(element, {
  259. characterData: true
  260. });
  261. scheduleDrain = function () {
  262. element.data = (called = ++called % 2);
  263. };
  264. } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {
  265. var channel = new global.MessageChannel();
  266. channel.port1.onmessage = nextTick;
  267. scheduleDrain = function () {
  268. channel.port2.postMessage(0);
  269. };
  270. } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {
  271. scheduleDrain = function () {
  272. // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
  273. // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
  274. var scriptEl = global.document.createElement('script');
  275. scriptEl.onreadystatechange = function () {
  276. nextTick();
  277. scriptEl.onreadystatechange = null;
  278. scriptEl.parentNode.removeChild(scriptEl);
  279. scriptEl = null;
  280. };
  281. global.document.documentElement.appendChild(scriptEl);
  282. };
  283. } else {
  284. scheduleDrain = function () {
  285. setTimeout(nextTick, 0);
  286. };
  287. }
  288. }
  289. var draining;
  290. var queue = [];
  291. //named nextTick for less confusing stack traces
  292. function nextTick() {
  293. draining = true;
  294. var i, oldQueue;
  295. var len = queue.length;
  296. while (len) {
  297. oldQueue = queue;
  298. queue = [];
  299. i = -1;
  300. while (++i < len) {
  301. oldQueue[i]();
  302. }
  303. len = queue.length;
  304. }
  305. draining = false;
  306. }
  307. module.exports = immediate;
  308. function immediate(task) {
  309. if (queue.push(task) === 1 && !draining) {
  310. scheduleDrain();
  311. }
  312. }
  313. }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  314. },{}],3:[function(_dereq_,module,exports){
  315. (function (global){
  316. 'use strict';
  317. if (typeof global.Promise !== 'function') {
  318. global.Promise = _dereq_(1);
  319. }
  320. }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
  321. },{"1":1}]},{},[3]);