UNPKG

@universis/candidates

Version:

Universis api server plugin for study program candidates, internship selection etc

53 lines (47 loc) 1.76 kB
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.insertListener = insertListener;var _common = require("@themost/common"); /** * * @param {*} listener Object {type: string} * @param {*} model model definition (via DataConfiguration or SchemaLoader strategies) * @returns true if the listener was inserted (model definition has to be updated outside of this function), false otherwise */ function insertListener(listener, model) { _common.Args.check(listener && typeof listener.type === 'string' && model); // ensure model event listeners model.eventListeners = model.eventListeners || []; // try to find target listener const listenerExists = model.eventListeners.find(eventListener => { return ( eventListener.type === listener.type || eventListener.type === listener.type.replace(/\.js$/, '')); }); // if it exists, exit if (listenerExists) { return false; } // check insertBefore if (typeof listener.insertBefore !== 'string') { // push the listener and exit model.eventListeners.push({ type: listener.type }); return true; } // find before listener's index const beforeListener = model.eventListeners.findIndex(eventListener => { return ( eventListener.type.endsWith(listener.insertBefore) || eventListener.type.endsWith(listener.insertBefore.replace(/\.js$/, ''))); }); // if it's not there if (beforeListener < 0) { // push the listener and exit model.eventListeners.push({ type: listener.type }); return true; } // push the listener at the specified index model.eventListeners.splice(beforeListener, 0, { type: listener.type }); return true; } //# sourceMappingURL=insertListener.js.map