| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | 'use strict';Object.defineProperty(exports, '__esModule', {  value: true});exports.default = queueRunner;var _jestUtil = require('jest-util');var _PCancelable = _interopRequireDefault(require('./PCancelable'));var _pTimeout = _interopRequireDefault(require('./pTimeout'));function _interopRequireDefault(obj) {  return obj && obj.__esModule ? obj : {default: obj};}var global = (function () {  if (typeof globalThis !== 'undefined') {    return globalThis;  } else if (typeof global !== 'undefined') {    return global;  } else if (typeof self !== 'undefined') {    return self;  } else if (typeof window !== 'undefined') {    return window;  } else {    return Function('return this')();  }})();var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;var global = (function () {  if (typeof globalThis !== 'undefined') {    return globalThis;  } else if (typeof global !== 'undefined') {    return global;  } else if (typeof self !== 'undefined') {    return self;  } else if (typeof window !== 'undefined') {    return window;  } else {    return Function('return this')();  }})();var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;var global = (function () {  if (typeof globalThis !== 'undefined') {    return globalThis;  } else if (typeof global !== 'undefined') {    return global;  } else if (typeof self !== 'undefined') {    return self;  } else if (typeof window !== 'undefined') {    return window;  } else {    return Function('return this')();  }})();var Promise = global[Symbol.for('jest-native-promise')] || global.Promise;function queueRunner(options) {  const token = new _PCancelable.default((onCancel, resolve) => {    onCancel(resolve);  });  const mapper = ({fn, timeout, initError = new Error()}) => {    let promise = new Promise(resolve => {      const next = function (...args) {        const err = args[0];        if (err) {          options.fail.apply(null, args);        }        resolve();      };      next.fail = function (...args) {        options.fail.apply(null, args);        resolve();      };      try {        fn.call(options.userContext, next);      } catch (e) {        options.onException(e);        resolve();      }    });    promise = Promise.race([promise, token]);    if (!timeout) {      return promise;    }    const timeoutMs = timeout();    return (0, _pTimeout.default)(      promise,      timeoutMs,      options.clearTimeout,      options.setTimeout,      () => {        initError.message =          'Timeout - Async callback was not invoked within the ' +          (0, _jestUtil.formatTime)(timeoutMs) +          ' timeout specified by jest.setTimeout.';        initError.stack = initError.message + initError.stack;        options.onException(initError);      }    );  };  const result = options.queueableFns.reduce(    (promise, fn) => promise.then(() => mapper(fn)),    Promise.resolve()  );  return {    cancel: token.cancel.bind(token),    catch: result.catch.bind(result),    then: result.then.bind(result)  };}
 |