'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); /* * Nexmo Client SDK * Errors Emitter * * Copyright (c) Nexmo Inc. */ const loglevel_1 = require("loglevel"); const nexmoClientError_1 = require("../nexmoClientError"); /** * Class that can emit errors via any emitter passed to it. * @class ErrorsEmitter * @param {Emitter} emitter - Any event emitter that implements "emit" and "releaseGroup". Basically object that is mixed with Wildemitter. * @property {string} LISTENER_GROUP='NXM-errors' - the group this emitter will register * @emits Emitter#NXM-errors * @private */ /** * Application listening for client and expired-token errors events. * * @event Application#NXM-errors * * @property {NexmoClientError} error * * @example <caption>listen for client error events on Application level</caption> * application.on('*', 'NXM-errors', (error) => { * console.log('Error thrown with type ' + error.type); * }); * @example <caption>listen for expired-token error events and then update the token on Application level</caption> * application.on('system:error:expired-token', 'NXM-errors', (error) => { * console.log('token expired'); * application.updateToken(token); * }); */ class ErrorsEmitter { constructor(emitter) { this.log = loglevel_1.getLogger(this.constructor.name); if (!emitter) { throw new nexmoClientError_1.NexmoClientError('no emitter object passed for the Error Emitter'); } this.emitter = emitter; this.LISTENER_GROUP = 'NXM-errors'; } /** * Detect if the param.type includes error and emit that payload in the LISTENER_GROUP * @param param - the payload to forward in the LISTENER_GROUP * @param param.type - the type of the event to check if it's an error */ emitResponseIfError(param) { if (this._isTypeError(param.type)) { return this.emitter.emit(param.type, this.LISTENER_GROUP, param); } return; } /** * Release Group on the registered emitter (using the namespace LISTENER_GROUP that is set) */ cleanup() { return this.emitter.releaseGroup(this.LISTENER_GROUP); } /** * Returns true if the param includes 'error' * @param {string} type - the error type to check */ _isTypeError(param) { return param.indexOf('error') !== -1; } } exports.default = ErrorsEmitter; module.exports = ErrorsEmitter;