John McLear
2ea8ea1275
restructure: move bin/ and tests/ to src/
...
Also add symlinks from the old `bin/` and `tests/` locations to avoid
breaking scripts and other tools.
Motivations:
* Scripts and tests no longer have to do dubious things like:
require('ep_etherpad-lite/node_modules/foo')
to access packages installed as dependencies in
`src/package.json`.
* Plugins can access the backend test helper library in a non-hacky
way:
require('ep_etherpad-lite/tests/backend/common')
* We can delete the top-level `package.json` without breaking our
ability to lint the files in `bin/` and `tests/`.
Deleting the top-level `package.json` has downsides: It will cause
`npm` to print warnings whenever plugins are installed, npm will
no longer be able to enforce a plugin's peer dependency on
ep_etherpad-lite, and npm will keep deleting the
`node_modules/ep_etherpad-lite` symlink that points to `../src`.
But there are significant upsides to deleting the top-level
`package.json`: It will drastically speed up plugin installation
because `npm` doesn't have to recursively walk the dependencies in
`src/package.json`. Also, deleting the top-level `package.json`
avoids npm's horrible dependency hoisting behavior (where it moves
stuff from `src/node_modules/` to the top-level `node_modules/`
directory). Dependency hoisting causes numerous mysterious
problems such as silent failures in `npm outdated` and `npm
update`. Dependency hoisting also breaks plugins that do:
require('ep_etherpad-lite/node_modules/foo')
2021-02-04 17:15:08 -05:00
John McLear
efde0b787a
npm-load-remove: checkPad.js example ( #4711 )
...
* npm-load-remove: checkPad.js example
* npm-load-remove: checkPad.js example
* npm-load-remove: checkPad.js example
* npm-load-remove: checkPad.js example
* npm-load-remove: checkPad.js example
* npm-load-remove: checkPad.js example
* npm-load-remove: checkPadDeltas
* npm-load-remove: extractPadData
* npm-load-remove: importSqlFile
* npm-load-remove: rebuildPad
* npm-load-remove: repairPad
* npm-load-remove: checkAllPads
* npm-load-remove: migrateDirtyDBtoRealDB
* npm-load-remove: migrateDirtyDBtoRealDB path
* npm-load-remove: migrateDirtyDBtoRealDB dbclose fix
* npm-load-remove: migrateDirtyDBtoRealDB remove commented out line
* npm-load-remove: migrateDirtyDBtoRealDB reintroduce util
2021-02-04 20:53:30 +00:00
Richard Hansen
5a865dfc7e
pluginfw: Delete unused return value
2021-02-04 08:41:00 +00:00
Richard Hansen
a145b97682
pluginfw: Use for
loops to improve readability
2021-02-04 08:41:00 +00:00
Richard Hansen
fdaacc44c8
pluginfw: Replace slide.asyncMap()
with Promise.all()
2021-02-04 08:41:00 +00:00
Richard Hansen
746cc8cc34
pluginfw: In-line formatPluginsWithVersion()
...
There's only one caller of the function, so move the logic to where it
is used.
2021-02-04 08:41:00 +00:00
Richard Hansen
cd1d322af4
/admin/plugins/info: Move logic to .js
file
2021-02-04 08:41:00 +00:00
Richard Hansen
c5f0274116
lint: Move functions up to fix more lint errors
2021-02-04 08:41:00 +00:00
Richard Hansen
99ca57f3ab
lint: src/static/js/pluginfw/shared.js
2021-02-04 08:41:00 +00:00
Richard Hansen
2c80c1f2da
lint: src/static/js/pluginfw/read-installed.js
2021-02-04 08:41:00 +00:00
Richard Hansen
2b32bc1840
lint: src/static/js/pluginfw/plugins.js
2021-02-04 08:41:00 +00:00
Richard Hansen
9a86ebec2a
pluginfw: Fix state reset logic
2021-02-04 08:41:00 +00:00
Richard Hansen
895764e047
pluginfw: Return from findUnmet()
early if not given an object
...
For some reason strings are sometimes passed to `findUnmet()`, which
is obviously unexpected given the way the code is written. Rather than
figure out why strings are passed and how to safely avoid passing
strings, just return early. The net effect is the same, but returning
early avoids setting a property on a string, which is prohibited in
strict mode.
2021-02-04 08:41:00 +00:00
Richard Hansen
a06662fd00
pluginfw: Delete commented-out code
2021-02-04 08:41:00 +00:00
Richard Hansen
c64ee6ff4c
pluginfw: Call npm.load()
before using npm
...
This code is only used when testing `read-installed.js` by running it
directly (e.g., `node src/static/js/pluginfw/read-installed.js`).
2021-02-04 08:41:00 +00:00
translatewiki.net
a5bde7982a
Localisation updates from https://translatewiki.net .
2021-02-04 08:58:26 +01:00
John McLear
1076783985
tests: backend test coverage for #3227 where a group cannot be deleted if it has pads.
2021-02-03 10:39:30 +00:00
freddii
ea202e41f6
docs: fixed typos
2021-02-03 00:30:07 +01:00
John McLear
65dec5bd2c
lint: json.js
2021-02-02 15:24:12 -05:00
Richard Hansen
05e0e8dbf7
hooks: New callAllSerial()
function
...
This is necessary to migrate away from `callAll()` (which only
supports synchronous hook functions).
2021-02-02 09:09:02 +00:00
Richard Hansen
763fe6fc26
hooks: Document callFirst()
and aCallFirst()
2021-02-02 09:09:02 +00:00
Richard Hansen
ba0544ea9e
hooks: Add unit tests for callFirst()
, aCallFirst()
2021-02-02 09:09:02 +00:00
Richard Hansen
6f30ea7c38
hooks: Use callHookFn{Sync,Async}()
for {call,aCall}First()
...
Benefits of `callHookFnSync()` and `callHookFnAsync()`:
* They are a lot more forgiving than `hookCallWrapper()` was.
* They perform useful sanity checks.
* They have extensive unit test coverage.
* They make the behavior of `callFirst()` and `aCallFirst()` match
the behavior of `callAll()` and `aCallAll()`.
2021-02-02 09:09:02 +00:00
Richard Hansen
c11d60c5f6
hooks: Check context nullness, not truthiness
2021-02-02 09:09:02 +00:00
Richard Hansen
fd5d3ce777
hooks: Inline aCallFirst()
into exports.aCallFirst()
2021-02-02 09:09:02 +00:00
Richard Hansen
77f480d954
hooks: Asyncify aCallFirst
2021-02-02 09:09:02 +00:00
Richard Hansen
22d02dbcbf
hooks: Factor out value normalization
2021-02-02 09:09:02 +00:00
Richard Hansen
f316a3bacd
hooks: Never pass a falsy error to a callback
2021-02-02 09:09:02 +00:00
Richard Hansen
708206449a
hooks: Factor out callback attachment
...
The separate function will be reused in a future commit.
2021-02-02 09:09:02 +00:00
Richard Hansen
13e806ad7a
hooks: Inline mapFirst()
into aCallFirst()
for readability
...
There's only one caller of the function, and the function is simple,
so there's no need for a separate function.
2021-02-02 09:09:02 +00:00
Richard Hansen
4ab7a99512
hooks: Inline syncMapFirst()
into callFirst()
for readability
...
There's only one caller of the function, and the function is simple,
so there's no need for a separate function.
2021-02-02 09:09:02 +00:00
Richard Hansen
53ccfa8703
hooks: Asyncify mapFirst
2021-02-02 09:09:02 +00:00
Richard Hansen
0b83ff8ec2
hooks: Simplify syncMapFirst
iteration
2021-02-02 09:09:02 +00:00
Richard Hansen
c89db33ff0
hooks: Refine caveat comments about function parameter count
2021-02-02 09:09:02 +00:00
Richard Hansen
f02f288e80
hooks: Rename args
to context
for consistency
2021-02-02 09:09:02 +00:00
Richard Hansen
7dba847f21
hooks: Don't export syncMapFirst
or mapFirst
...
Nobody uses these functions outside of this file.
2021-02-02 09:09:02 +00:00
Richard Hansen
6b42dabf6c
hooks: Delete unused bubbleExceptions
setting
2021-02-02 09:09:02 +00:00
Richard Hansen
ba02e70020
tests: Make the fake webaccess hook registrations look more real
...
The additional properties will be needed once `aCallAll()` is upgraded
to use `callHookFnAsync()`.
2021-02-02 09:09:02 +00:00
Richard Hansen
47f0a7dacf
lint: Fix more ESLint errors
2021-02-02 09:09:02 +00:00
Richard Hansen
1bc52f4913
hooks: Remove unnecessary callAllStr()
function
2021-02-02 09:09:02 +00:00
John McLear
3e910b9905
stale: remove convert.js as no one runs old Etherpad
2021-02-01 22:45:51 +00:00
John McLear
915849b319
Low hanging lint frontend tests ( #4695 )
...
* lint: low hanging specs/alphabet.js
* lint: low hanging specs/authorship_of_editions.js
* lint: low hanging specs/bold.js
* lint: low hanging specs/caret.js
* lint: low hanging specs/change_user_color.js
* lint: low hanging specs/change_user_name.js
* lint: low hanging specs/chat.js
* lint: low hanging specs/chat_load_messages.js
* lint: low hanging specs/clear_authorship_colors.js
* lint: low hanging specs/delete.js
* lint: low hanging specs/drag_and_drop.js
* lint: low hanging specs/embed_value.js
* lint: low hanging specs/enter.js
* lint: low hanging specs/font_type.js
* lint: low hanging specs/helper.js
* lint: low hanging specs/importexport.js
* lint: low hanging specs/importindents.js
* lint: low hanging specs/indentation.js
* lint: low hanging specs/italic.js
* lint: low hanging specs/language.js
* lint: low hanging specs/multiple_authors_clear_authorship_colors.js
* lint: low hanging specs/ordered_list.js
* lint: low hanging specs/pad_modal.js
* lint: low hanging specs/redo.js
* lint: low hanging specs/responsiveness.js
* lint: low hanging specs/select_formatting_buttons.js
* lint: low hanging specs/strikethrough.js
* lint: low hanging specs/timeslider.js
* lint: low hanging specs/timeslider_labels.js
* lint: low hanging specs/timeslider_numeric_padID.js
* lint: low hanging specs/timeslider_revisions.js
* lint: low hanging specs/undo.js
* lint: low hanging specs/unordered_list.js
* lint: low hanging specs/xxauto_reconnect.js
* lint: attempt to do remote_runner.js
* lint: helper linting
* lint: rate limit linting
* use constructor for Event to make eslint happier
* for squash: lint fix refinements
* for squash: lint fix refinements
Co-authored-by: Richard Hansen <rhansen@rhansen.org>
2021-02-01 20:23:14 +00:00
Richard Hansen
759e2aaec3
lint: Use node config for tests/frontend/travis, tests/ratelimit
...
The files in these directories contain test drivers, not tests.
2021-02-01 19:52:24 +00:00
John McLear
9987fab574
lint: low hanging bin/doc/*.js
2021-02-01 13:15:48 -05:00
translatewiki.net
5b701b97c3
Localisation updates from https://translatewiki.net .
2021-02-01 15:21:50 +01:00
John McLear
b3dda3b11c
lint: src/static/js/pluginfw/*.js
2021-01-30 17:00:40 -05:00
John McLear
0cc8405e9c
Bump minimum required Node.js version to 10.17.0
...
This makes it possible to use fs.promises.
2021-01-30 17:00:40 -05:00
Richard Hansen
877f0c5883
server: Use wtfnode to log reasons why node isn't exiting
2021-01-30 08:05:08 +00:00
Richard Hansen
ba81ead101
server: Remove all other signal listeners
2021-01-30 08:05:08 +00:00
Richard Hansen
ecdb105bfe
server: Refine process lifetime management
...
Define states and use them to properly handle multiple calls to
`start()`, `stop()`, and `exit()`. (Multiple calls to `exit()` can
happen if there is an uncaught exception or signal during shutdown.)
This should also make it easier to add support for cleanly restarting
the server after a shutdown (for tests or via an `/admin` page).
2021-01-30 08:05:08 +00:00