Live plugin manager (#6018)

* Added plugin live view.

* Implemented PoC for managing plugins with live-plugin-manager

* Add migration for plugins installed in node_modules and load plugins on start

* Create installed_plugins.json even if no plugin is installed

* Reload plugins and hooks after all (un)installs are done

* Add installed_plugins.json to gitignore

* Only write plugins to json file in Dockerfile

* Install live-plugin-manager

* Also persist plugin version

* Do not call hooks during migration of plugins

* Fix install of plugins in Dockerfile

* Revert Dockerfile changes

* Fixed package-lock.json

---------

Co-authored-by: SamTV12345 <40429738+samtv12345@users.noreply.github.com>
Co-authored-by: Hossein M <marzban98@gmail.com>
This commit is contained in:
Stefan 2024-01-14 11:54:57 +01:00 committed by GitHub
parent 6a2ffe6aaf
commit 9c14a4f7db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 357 additions and 77 deletions

View file

@ -49,6 +49,7 @@ const express = require('./hooks/express');
const hooks = require('../static/js/pluginfw/hooks');
const pluginDefs = require('../static/js/pluginfw/plugin_defs');
const plugins = require('../static/js/pluginfw/plugins');
const installer = require('../static/js/pluginfw/installer');
const {Gate} = require('./utils/promises');
const stats = require('./stats');
@ -139,6 +140,7 @@ exports.start = async () => {
}
await db.init();
await installer.checkForMigration();
await plugins.update();
const installedPlugins = Object.values(pluginDefs.plugins)
.filter((plugin) => plugin.package.name !== 'ep_etherpad-lite')