UNPKG

@sitesoft/ssp-support

Version:

Various tools, data-structures and utils

65 lines (52 loc) 1.39 kB
export const EVENT_REGISTERED = 'modules-registered'; export default class ModuleCollection { modules = {}; options = { logInConsole: true }; constructor(modules, eBus, options = {}) { this.eBus = eBus; this.options = { ...this.options, ...options }; if (options?.onRegistered) { this.onRegistered(options?.onRegistered); } this.initModules(modules); } initModules(modules = {}) { for (const moduleName of Object.keys(modules)) { this.registerModule(modules[moduleName]); } this.eBus?.$emit(EVENT_REGISTERED, this.modules, this); } registerModule(module) { if (this.modules[module.ns]) { if (this.options.logInConsole) { console.warn(`модуль ${module.name} уже зарегистрирован`); } } else { this.modules[module.ns] = { ...module }; } } get(moduleName) { if (!this.modules[moduleName]) { if (this.options.logInConsole) { console.error(`модуль ${moduleName} не зарегистрирован`); } return undefined; } return this.modules[moduleName]; } count() { return Object.keys(this.modules).length; } isEmpty() { return this.count() === 0; } onRegistered(callback) { this.eBus?.$on(EVENT_REGISTERED, callback); } } //# sourceMappingURL=ModuleCollection.js.map