diff --git a/app/scripts/.eslintrc b/app/scripts/.eslintrc new file mode 100644 index 00000000..e528484b --- /dev/null +++ b/app/scripts/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "import/no-commonjs": "error" + } +} diff --git a/app/scripts/app.js b/app/scripts/app.js index d9f01f31..947b18e1 100644 --- a/app/scripts/app.js +++ b/app/scripts/app.js @@ -75,7 +75,7 @@ ready(() => { KdbxwebInit.init(); FocusDetector.init(); window.kw = ExportApi; - return PluginManager.instance.init(); + return PluginManager.init(); } function showSettingsLoadError() { @@ -141,10 +141,7 @@ ready(() => { Updater.init(); SingleInstanceChecker.init(); AppRightsChecker.init(); - setTimeout( - () => PluginManager.instance.runAutoUpdate(), - Timeouts.AutoUpdatePluginsAfterStart - ); + setTimeout(() => PluginManager.runAutoUpdate(), Timeouts.AutoUpdatePluginsAfterStart); } function showView() { diff --git a/app/scripts/comp/app/event-bus.js b/app/scripts/comp/app/event-bus.js new file mode 100644 index 00000000..e49c0835 --- /dev/null +++ b/app/scripts/comp/app/event-bus.js @@ -0,0 +1,12 @@ +import EventEmitter from 'events'; + +class EventBus extends EventEmitter { + constructor() { + super(); + this.setMaxListeners(100); + } +} + +const instance = new EventBus(); + +export { instance as EventBus }; diff --git a/app/scripts/models/app-model.js b/app/scripts/models/app-model.js index c6cc5f08..9018e87b 100644 --- a/app/scripts/models/app-model.js +++ b/app/scripts/models/app-model.js @@ -141,7 +141,7 @@ const AppModel = Backbone.Model.extend({ } if (config.plugins) { const pluginsPromises = config.plugins.map(plugin => - PluginManager.instance.installIfNew(plugin.url, plugin.manifest, true) + PluginManager.installIfNew(plugin.url, plugin.manifest, true) ); return Promise.all(pluginsPromises).then(() => { this.settings.set(config.settings); diff --git a/app/scripts/plugins/plugin-manager.js b/app/scripts/plugins/plugin-manager.js index 46ba0b26..f5d18eef 100644 --- a/app/scripts/plugins/plugin-manager.js +++ b/app/scripts/plugins/plugin-manager.js @@ -233,6 +233,6 @@ const PluginManager = Backbone.Model.extend({ } }); -PluginManager.instance = new PluginManager(); +const instance = new PluginManager(); -export { PluginManager }; +export { instance as PluginManager }; diff --git a/app/scripts/plugins/theme-vars.js b/app/scripts/plugins/theme-vars.js index 77034fec..b4db4f6b 100644 --- a/app/scripts/plugins/theme-vars.js +++ b/app/scripts/plugins/theme-vars.js @@ -1,6 +1,7 @@ import { Color } from 'util/data/color'; const ThemeVarsScss = require('raw-loader!../../styles/base/_theme-vars.scss').default; +// eslint-disable-next-line import/no-commonjs const ThemeDefaults = require('../../styles/themes/_theme-defaults.scss'); const ThemeVars = { diff --git a/app/scripts/views/fields/field-view-custom.js b/app/scripts/views/fields/field-view-custom.js index 521e91b9..9de023cd 100644 --- a/app/scripts/views/fields/field-view-custom.js +++ b/app/scripts/views/fields/field-view-custom.js @@ -1,4 +1,3 @@ -import Backbone from 'backbone'; import kdbxweb from 'kdbxweb'; import { Keys } from 'const/keys'; import { Locale } from 'util/locale'; diff --git a/app/scripts/views/settings/settings-plugins-view.js b/app/scripts/views/settings/settings-plugins-view.js index 52a9ca72..9ed5f643 100644 --- a/app/scripts/views/settings/settings-plugins-view.js +++ b/app/scripts/views/settings/settings-plugins-view.js @@ -40,7 +40,7 @@ class SettingsPluginsView extends View { constructor(model, options) { super(model, options); - this.listenTo(PluginManager.instance, 'change', this.render.bind(this)); + this.listenTo(PluginManager, 'change', this.render.bind(this)); this.listenTo( Backbone, 'plugin-gallery-load-complete', @@ -50,8 +50,7 @@ class SettingsPluginsView extends View { render() { super.render({ - plugins: PluginManager.instance - .get('plugins') + plugins: PluginManager.get('plugins') .map(plugin => ({ id: plugin.id, manifest: plugin.get('manifest'), @@ -90,7 +89,7 @@ class SettingsPluginsView extends View { if (!PluginGallery.gallery) { return null; } - const plugins = PluginManager.instance.get('plugins'); + const plugins = PluginManager.get('plugins'); return PluginGallery.gallery.plugins .map(pl => ({ url: pl.url, @@ -145,8 +144,7 @@ class SettingsPluginsView extends View { urlTextBox.prop('disabled', true); installBtn.text(Locale.setPlInstallBtnProgress + '...').prop('disabled', true); this.installFromUrl = { url }; - PluginManager.instance - .install(url, undefined, true) + PluginManager.install(url, undefined, true) .then(() => { this.installFinished(); this.installFromUrl = null; @@ -170,22 +168,22 @@ class SettingsPluginsView extends View { uninstallClick(e) { const pluginId = $(e.target).data('plugin'); - PluginManager.instance.uninstall(pluginId); + PluginManager.uninstall(pluginId); } disableClick(e) { const pluginId = $(e.target).data('plugin'); - PluginManager.instance.disable(pluginId); + PluginManager.disable(pluginId); } enableClick(e) { const pluginId = $(e.target).data('plugin'); - PluginManager.instance.activate(pluginId); + PluginManager.activate(pluginId); } updateClick(e) { const pluginId = $(e.target).data('plugin'); - PluginManager.instance.update(pluginId); + PluginManager.update(pluginId); } useLocaleClick(e) { @@ -205,8 +203,7 @@ class SettingsPluginsView extends View { installBtn.text(Locale.setPlInstallBtnProgress + '...').prop('disabled', true); this.installing[plugin.url] = true; delete this.installErrors[plugin.url]; - PluginManager.instance - .install(plugin.url, plugin.manifest) + PluginManager.install(plugin.url, plugin.manifest) .catch(e => { this.installErrors[plugin.url] = e; delete this.installing[plugin.url]; @@ -254,14 +251,14 @@ class SettingsPluginsView extends View { const setting = settingEl.data('setting'); const pluginId = settingEl.data('plugin'); const val = el.type === 'checkbox' ? el.checked : el.value; - const plugin = PluginManager.instance.getPlugin(pluginId); + const plugin = PluginManager.getPlugin(pluginId); plugin.setSettings({ [setting]: val }); } autoUpdateChange(e) { const pluginId = $(e.target).data('plugin'); const enabled = e.target.checked; - PluginManager.instance.setAutoUpdate(pluginId, enabled); + PluginManager.setAutoUpdate(pluginId, enabled); } } diff --git a/app/templates/settings/settings-about.hbs b/app/templates/settings/settings-about.hbs index d3d99ecd..46821d65 100644 --- a/app/templates/settings/settings-about.hbs +++ b/app/templates/settings/settings-about.hbs @@ -10,6 +10,7 @@

Libraries