Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Live plugin viewer #5968

Closed
wants to merge 16 commits into from
Closed

Live plugin viewer #5968

wants to merge 16 commits into from

Conversation

SamTV12345
Copy link
Member

@Gared I tried to add the live plugin viewer. Unfortunately there is a big problem: The live plugin viewer installs by default everything without npm. That way the main ep plugin is separate from the rest of the plugins so we would need to add an exception for that name. Otherwise I could also try installing with npm.

webzwo0i and others added 16 commits October 8, 2023 20:13
file in the root directory that references ./src directory as the file
source for `ep_etherpad-lite`.

Remove --legacy-peer-deps and --no-save when invoking npm. There is no
need for them anymore, as we are bumping npm now to v8.

./src/package.json contains all dependencies of Etherpad core
(package name ep_etherpad-lite) as before. The root directory's
package.json file references ep_etherpad-lite and also contains
references to any installed plugins.

Remove npm from package.json as we depend on a recent version now; PATH is still updated as before, so in the future we may install a custom npm version again

lint package-lock: update exception for sqlite3

remove node_modules and package.json during installDeps.sh

update Dockerfile

adapt minify

windows build

Fixed installOnWindows.bat

remove node_modules from git

bump minimal node/npm version in src/bin/functions.sh

add changelog notes

update installdeps

fix dockerfile

docker: test npm prefix set to the etherpad directory

workflow: upgrade-from-latest-release needs to be adapted until next release is out

Revert "docker: test npm prefix set to the etherpad directory"

This reverts commit b856a24.

use npm link --bin-links=false to prevent it from copying bin files

temp fix for scripts as they are not installed to bin directory anymore

adjust bin paths in Dockerfile

Dockerfile

add hint for npm link, dockerfile

update dockerfile

Revert "Fixed installOnWindows.bat"

This reverts commit 70d0716.

try installOnWindows; still TODO: no difference between production and development; no warning like in installDeps.sh before update - it just removes package* and node_modules so admins must be aware of the plugins they want to reinstall later

update installOnWindows.bat

update package-lock.json

Dockerfile

Dockerfile

add file: scheme for lint check - needed as long as we have the plugin compatibility symlinks in ./src/node_modules

fix installOnWindows

upgrade-from-latest-release workflow: adapt cypress installation

src/package.json: test-container fix path to _mocha; maybe revert this in case we enable bin-links again

src/package.json: add test-on-windows script

another try with test-on-windows, without using bin-links

use bin-links on windows

Revert "use bin-links on windows"

This reverts commit f50ec2a.

invoke mocha binary on windows

run npm i once on windows, to make bin files available - why?

remove supertest on windows production builds

add symlink for mocha

debug

Revert "debug"

This reverts commit 8916a05.

Revert "add symlink for mocha"

This reverts commit 3c60bef.

windows workflow: adapt cypress path

frontend admin tests
See "Note for plugin authors" section in Changelog.

Some packages that are in use by plugins got a symlink in
./src/node_modules so that they still work after updating Etherpad. In
the future don't require('etherpad_ep-lite/node_modules/dependency')
anymore, but change this to require('dependency') and add the dependency
to your plugin's package.json
We use this package when testing rate limiting. We already install it in
Docker, when running the Github workflow, so there is no need to install it by default.

In contrast to other devDependencies this is not required in case you
want to run the backend tests or check the code with eslint etc.
In some cases, when the server is restarting and the beforeEach hook
tries to reload the admin/plugins page, it could fail.
@SamTV12345 SamTV12345 marked this pull request as draft October 8, 2023 20:15
@Gared
Copy link
Member

Gared commented Oct 19, 2023

I'm not really sure that I fully understood the problem. I'll try to test your branch in the next days :-)

@SamTV12345
Copy link
Member Author

I'm not really sure that I fully understood the problem. I'll try to test your branch in the next days :-)

Thanks that is very much appreciated. I opened another branch feature/plugin-viewer that is based upon develop branch and I could progress a little bit further.

@Gared
Copy link
Member

Gared commented Oct 27, 2023

I'm not really sure that I fully understood the problem. I'll try to test your branch in the next days :-)

Thanks that is very much appreciated. I opened another branch feature/plugin-viewer that is based upon develop branch and I could progress a little bit further.

I couldn't find your branch. Do you have a link where I can find this branch? 😅

@SamTV12345
Copy link
Member Author

I'm not really sure that I fully understood the problem. I'll try to test your branch in the next days :-)

Thanks that is very much appreciated. I opened another branch feature/plugin-viewer that is based upon develop branch and I could progress a little bit further.

I couldn't find your branch. Do you have a link where I can find this branch? 😅

Sorry my bad. I forgot to push my changes. It is up now.

@Gared
Copy link
Member

Gared commented Oct 29, 2023

I built a working version on top of your branch:
https://github.com/Gared/etherpad-lite/pull/new/live-plugin-manager

I'm not sure if this is your problem but for loading the plugins (getPackages) I loaded the list of plugins with manager.list() and merged it with the npm response. This worked for me so far. I also could open the frontend and admin plugins page with the list of plugins.

What do you think? @SamTV12345

@SamTV12345
Copy link
Member Author

SamTV12345 commented Oct 29, 2023

I built a working version on top of your branch: https://github.com/Gared/etherpad-lite/pull/new/live-plugin-manager

I'm not sure if this is your problem but for loading the plugins (getPackages) I loaded the list of plugins with manager.list() and merged it with the npm response. This worked for me so far. I also could open the frontend and admin plugins page with the list of plugins.

What do you think? @SamTV12345

Thanks for the help @Gared. Looks really good. Can you transform this into a real pull request. There are some test cases failing and some debug statements in the code 😄 . But the general approach works without a problem. We could then merge this pull request and test this change intensively.

If that works we could try to make Etherpad compatible with Typescript and ESM.

@Gared
Copy link
Member

Gared commented Nov 1, 2023

I built a working version on top of your branch: https://github.com/Gared/etherpad-lite/pull/new/live-plugin-manager
I'm not sure if this is your problem but for loading the plugins (getPackages) I loaded the list of plugins with manager.list() and merged it with the npm response. This worked for me so far. I also could open the frontend and admin plugins page with the list of plugins.
What do you think? @SamTV12345

Thanks for the help @Gared. Looks really good. Can you transform this into a real pull request. There are some test cases failing and some debug statements in the code 😄 . But the general approach works without a problem. We could then merge this pull request and test this change intensively.

If that works we could try to make Etherpad compatible with Typescript and ESM.

I added migration for old plugins and created a pull request: #6018
If this is fine for you I would modify github workflows and the Dockerfile to also work with these changes

@SamTV12345
Copy link
Member Author

@Gared Thanks. Looks good to me. Seems like the tests are still failing. But the general approach sounds great👍🏻.

@SamTV12345 SamTV12345 closed this Jan 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants