UNPKG

@signiant/media-shuttle-sdk-base

Version:

The base parent sdk behind other media shuttle sdks (e.g. media-shuttle-sdk)

114 lines (113 loc) 4.53 kB
/* eslint-disable import/first */ var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { isUndefined, isString, get as getIn } from 'lodash'; var EventNotifier = /** @class */ (function () { function EventNotifier() { this.REGEXP_KEY = 'REGEXP'; this.eventHandlerMap = {}; } EventNotifier.prototype.setEventHandler = function (originatorId, event, handler) { var eventMap = this.eventHandlerMap[originatorId]; if (isUndefined(eventMap)) { eventMap = {}; this.eventHandlerMap[originatorId] = eventMap; } if (event instanceof RegExp) { var regExpEventMap = eventMap[this.REGEXP_KEY]; if (isUndefined(regExpEventMap)) { regExpEventMap = {}; eventMap[this.REGEXP_KEY] = regExpEventMap; } regExpEventMap[EventNotifier.getStringRepOfRegx(event)] = handler; } else { eventMap[event] = handler; } }; EventNotifier.getStringRepOfRegx = function (regEx) { return JSON.stringify({ source: regEx.source, flags: regEx.flags }); }; EventNotifier.getRegExOfStringRep = function (jsonString) { try { var _a = JSON.parse(jsonString), flags = _a.flags, source = _a.source; return new RegExp(source, flags); } catch (e) { return null; } }; EventNotifier.prototype.setSessionActiveEventHandler = function (handler) { this.setEventHandler('signiant-app', 'session-active', handler); }; EventNotifier.prototype.removeEventHandlers = function (originatorId) { if (this.eventHandlerMap[originatorId]) { var deleteResult = delete this.eventHandlerMap[originatorId]; return deleteResult; } return false; }; EventNotifier.prototype.removeEventHandler = function (originatorId, event) { if (event instanceof RegExp) { var eventString = EventNotifier.getStringRepOfRegx(event); if (getIn(this.eventHandlerMap, [originatorId, this.REGEXP_KEY, eventString])) { var deleteResult = delete this.eventHandlerMap[originatorId][this.REGEXP_KEY][eventString]; return deleteResult; } } else if (getIn(this.eventHandlerMap, [originatorId, event])) { var deleteResult = delete this.eventHandlerMap[originatorId][event]; return deleteResult; } return false; }; EventNotifier.prototype.notifyMessage = function (message) { if (message.type === 'response' || message.type === 'event') { var eventsMap = this.eventHandlerMap[message.originator]; if (!isUndefined(eventsMap)) { var handler = eventsMap[message.context]; var content_1 = message.content; if (isString(content_1)) { content_1 = this.tryToConvertStringToJSONObjectSafely(content_1); } if (!isUndefined(handler)) { handler(content_1); } var regExpEventHandlers_1 = eventsMap[this.REGEXP_KEY]; if (regExpEventHandlers_1) { Object.keys(regExpEventHandlers_1).forEach(function (key) { var regExpHandler = regExpEventHandlers_1[key]; var regExp = EventNotifier.getRegExOfStringRep(key); if (regExpHandler && regExp && message.context.match(regExp)) { regExpHandler(__assign(__assign({}, message), { content: content_1 })); } }); } } } }; EventNotifier.prototype.removeAllEventHandlers = function () { this.eventHandlerMap = {}; }; EventNotifier.prototype.tryToConvertStringToJSONObjectSafely = function (input) { var output; try { output = JSON.parse(input); } catch (e) { output = input; } return output; }; return EventNotifier; }()); export default EventNotifier;