utils.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const PromiseInspection_1 = require("./PromiseInspection");
  4. function defer() {
  5. let resolve = null;
  6. let reject = null;
  7. const promise = new Promise((resolver, rejecter) => {
  8. resolve = resolver;
  9. reject = rejecter;
  10. });
  11. return {
  12. promise,
  13. resolve,
  14. reject
  15. };
  16. }
  17. exports.defer = defer;
  18. function now() {
  19. return Date.now();
  20. }
  21. exports.now = now;
  22. function duration(t1, t2) {
  23. return Math.abs(t2 - t1);
  24. }
  25. exports.duration = duration;
  26. function checkOptionalTime(time) {
  27. if (typeof time === 'undefined') {
  28. return true;
  29. }
  30. return checkRequiredTime(time);
  31. }
  32. exports.checkOptionalTime = checkOptionalTime;
  33. function checkRequiredTime(time) {
  34. return typeof time === 'number' && time === Math.round(time) && time > 0;
  35. }
  36. exports.checkRequiredTime = checkRequiredTime;
  37. function delay(millis) {
  38. return new Promise(resolve => setTimeout(resolve, millis));
  39. }
  40. exports.delay = delay;
  41. function reflect(promise) {
  42. return promise
  43. .then(value => {
  44. return new PromiseInspection_1.PromiseInspection({ value });
  45. })
  46. .catch(error => {
  47. return new PromiseInspection_1.PromiseInspection({ error });
  48. });
  49. }
  50. exports.reflect = reflect;
  51. function tryPromise(cb) {
  52. try {
  53. const result = cb();
  54. return Promise.resolve(result);
  55. }
  56. catch (err) {
  57. return Promise.reject(err);
  58. }
  59. }
  60. exports.tryPromise = tryPromise;