fix: backward-compat for ESM etherpad#87
Conversation
- Drop trailing slash on ep_etherpad-lite/node/eejs/ require Backward-compatible with current CJS etherpad release; also compatible with the upcoming ESM etherpad branch which has stricter exports map resolution.
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
Review Summary by QodoRemove trailing slash for ESM etherpad compatibility
WalkthroughsDescription• Remove trailing slash from eejs require path • Ensures ESM etherpad compatibility with strict exports • Maintains backward compatibility with current CJS release • Bump version to 0.0.58 Diagramflowchart LR
A["require with trailing slash"] -- "remove slash" --> B["require without trailing slash"]
B -- "compatible with" --> C["ESM etherpad"]
B -- "compatible with" --> D["CJS etherpad"]
File Changes1. eejs.js
|
Code Review by Qodo
1. No regression test for eejs require
|
| 'use strict'; | ||
|
|
||
| const eejs = require('ep_etherpad-lite/node/eejs/'); | ||
| const eejs = require('ep_etherpad-lite/node/eejs'); |
There was a problem hiding this comment.
1. No regression test for eejs require 📘 Rule violation ☼ Reliability
This PR changes the require() path in eejs.js as a bug fix, but it does not add or update any automated test to prevent regression. Without a regression test, the ESM compatibility fix is not verifiable and may break again unnoticed.
Agent Prompt
## Issue description
A bug fix was made (changing `require('ep_etherpad-lite/node/eejs/')` to `require('ep_etherpad-lite/node/eejs')`) but no regression test was added/updated in the same PR.
## Issue Context
The project already has CI workflows that execute plugin-provided backend tests from `static/tests/backend/specs/**` (via Etherpad core's Mocha runner). Add a small backend regression test that would fail with the old trailing-slash form and pass with the new form (for example, by asserting the plugin's `eejs.js` source does not contain the trailing-slash require path, or by requiring the module in a way that triggers resolution).
## Fix Focus Areas
- eejs.js[1-8]
- static/tests/backend/specs/eejs-esm-compat.spec.ts[1-200]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
This PR makes the plugin backward-compatible with the upcoming ESM etherpad branch (ether/etherpad#7605).
Change: Remove trailing slash from
require("ep_etherpad-lite/node/eejs/")→require("ep_etherpad-lite/node/eejs")The trailing-slash form breaks under Node's strict ESM exports map resolution. This change is backward-compatible with the current CJS etherpad release.