UNPKG

@reldens/items-system

Version:
66 lines (58 loc) 1.96 kB
/** * * Reldens - Items System - Server Package * * This class is just to group the server side features, storage and communications along with the items manager. * */ const ItemsManager = require('./manager'); const { StorageObserver } = require('./server/storage-observer'); const Sender = require('./server/sender'); const { Logger, sc } = require('@reldens/utils'); class ItemsServer { constructor(props) { this.hasError = false; if(!sc.hasOwn(props, 'owner')){ Logger.critical('Undefined owner.'); this.hasError = true; } this.manager = new ItemsManager(props); this.hasError = false; this.createStorageObserver(props); this.createClient(props); } createClient(props) { if(this.hasError){ return false; } if(!sc.hasOwn(props, 'client')){ return false; } this.client = new Sender({manager: this.manager, client: props.client}); } createStorageObserver(props) { if(this.hasError){ return false; } // check if the storage was activated: if(!sc.hasOwn(props, 'persistence') || !props.persistence){ return false; } let modelsManager = false; if (sc.hasOwn(props, 'modelsManager')) { modelsManager = props.modelsManager; } // check if the owner has the required persisData methods in the case the storage is active: if(!sc.hasOwn(props.owner, 'persistData') || 'function' !== typeof props.owner.persistData){ Logger.error('Required method "persistData" not found in ItemServer props.owner.'); return false; } this.dataServer = new StorageObserver(this.manager, modelsManager); this.dataServer.listenEvents(); } } module.exports = ItemsServer;