runtime-error.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /**
  2. *
  3. * @param {Error} error
  4. */
  5. function parseErrorToStacks(error) {
  6. if (!error || !(error instanceof Error)) {
  7. throw new Error("parseErrorToStacks expects Error object");
  8. }
  9. if (typeof error.stack === "string") {
  10. return error.stack.split("\n").filter(function (stack) {
  11. return stack !== "Error: ".concat(error.message);
  12. });
  13. }
  14. }
  15. /**
  16. * @callback ErrorCallback
  17. * @param {ErrorEvent} error
  18. * @returns {void}
  19. */
  20. /**
  21. * @param {ErrorCallback} callback
  22. */
  23. function listenToRuntimeError(callback) {
  24. window.addEventListener("error", callback);
  25. return function cleanup() {
  26. window.removeEventListener("error", callback);
  27. };
  28. }
  29. /**
  30. * @callback UnhandledRejectionCallback
  31. * @param {PromiseRejectionEvent} rejectionEvent
  32. * @returns {void}
  33. */
  34. /**
  35. * @param {UnhandledRejectionCallback} callback
  36. */
  37. function listenToUnhandledRejection(callback) {
  38. window.addEventListener("unhandledrejection", callback);
  39. return function cleanup() {
  40. window.removeEventListener("unhandledrejection", callback);
  41. };
  42. }
  43. export { listenToRuntimeError, listenToUnhandledRejection, parseErrorToStacks };