JestHooks.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  7. try {
  8. var info = gen[key](arg);
  9. var value = info.value;
  10. } catch (error) {
  11. reject(error);
  12. return;
  13. }
  14. if (info.done) {
  15. resolve(value);
  16. } else {
  17. Promise.resolve(value).then(_next, _throw);
  18. }
  19. }
  20. function _asyncToGenerator(fn) {
  21. return function() {
  22. var self = this,
  23. args = arguments;
  24. return new Promise(function(resolve, reject) {
  25. var gen = fn.apply(self, args);
  26. function _next(value) {
  27. asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);
  28. }
  29. function _throw(err) {
  30. asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);
  31. }
  32. _next(undefined);
  33. });
  34. };
  35. }
  36. function _defineProperty(obj, key, value) {
  37. if (key in obj) {
  38. Object.defineProperty(obj, key, {
  39. value: value,
  40. enumerable: true,
  41. configurable: true,
  42. writable: true
  43. });
  44. } else {
  45. obj[key] = value;
  46. }
  47. return obj;
  48. }
  49. /**
  50. * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
  51. *
  52. * This source code is licensed under the MIT license found in the
  53. * LICENSE file in the root directory of this source tree.
  54. */
  55. class JestHooks {
  56. constructor() {
  57. var _this = this;
  58. _defineProperty(this, '_listeners', void 0);
  59. _defineProperty(this, '_subscriber', void 0);
  60. _defineProperty(this, '_emitter', void 0);
  61. this._listeners = {
  62. onFileChange: [],
  63. onTestRunComplete: [],
  64. shouldRunTestSuite: []
  65. };
  66. this._subscriber = {
  67. onFileChange: fn => {
  68. this._listeners.onFileChange.push(fn);
  69. },
  70. onTestRunComplete: fn => {
  71. this._listeners.onTestRunComplete.push(fn);
  72. },
  73. shouldRunTestSuite: fn => {
  74. this._listeners.shouldRunTestSuite.push(fn);
  75. }
  76. };
  77. this._emitter = {
  78. onFileChange: fs =>
  79. this._listeners.onFileChange.forEach(listener => listener(fs)),
  80. onTestRunComplete: results =>
  81. this._listeners.onTestRunComplete.forEach(listener =>
  82. listener(results)
  83. ),
  84. shouldRunTestSuite: (function() {
  85. var _shouldRunTestSuite = _asyncToGenerator(function*(testSuiteInfo) {
  86. const result = yield Promise.all(
  87. _this._listeners.shouldRunTestSuite.map(listener =>
  88. listener(testSuiteInfo)
  89. )
  90. );
  91. return result.every(Boolean);
  92. });
  93. function shouldRunTestSuite(_x) {
  94. return _shouldRunTestSuite.apply(this, arguments);
  95. }
  96. return shouldRunTestSuite;
  97. })()
  98. };
  99. }
  100. isUsed(hook) {
  101. return this._listeners[hook] && this._listeners[hook].length;
  102. }
  103. getSubscriber() {
  104. return this._subscriber;
  105. }
  106. getEmitter() {
  107. return this._emitter;
  108. }
  109. }
  110. var _default = JestHooks;
  111. exports.default = _default;