summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/src/middleware/error-logging.js
blob: fd04f34b76ec58f87eceaedff7583683d9cb98b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

"use strict";

/**
 * Error logging middleware that will forward all actions that contain an error property
 * to the console.
 */
function errorLoggingMiddleware() {
  return next => action => {
    if (action.error) {
      const { error } = action;
      if (error.message) {
        console.error(`[ACTION FAILED] ${action.type}: ${error.message}`);
      } else if (typeof error === "string") {
        // All failure actions should dispatch an error object instead of a message.
        // We allow some flexibility to still provide some error logging.
        console.error(`[ACTION FAILED] ${action.type}: ${error}`);
        console.error(
          `[ACTION FAILED] ${action.type} should dispatch the error object!`
        );
      }

      if (error.stack) {
        console.error(error.stack);
      }
    }

    return next(action);
  };
}

module.exports = errorLoggingMiddleware;