Commit Graph

3875 Commits (4c6cb53d18863b67f70a299be39b2f7d84f3b79d)

Author SHA1 Message Date
Richard Hansen 28b28866a2 ImportHandler: Move the logger up
Also change the name to something shorter.
2021-02-14 08:35:38 +00:00
Richard Hansen 26b5a69ccc ImportHandler: Use `JSON.stringify()` to properly escape characters 2021-02-14 08:35:38 +00:00
Richard Hansen ed80883709 ImportHandler: Lint the response script sent to the browser 2021-02-14 08:35:38 +00:00
Richard Hansen 0ff131bbbb ImportHandler: Throw Errors, not strings 2021-02-14 08:35:38 +00:00
Richard Hansen 908635a1de ImportHandler: Use `return reject(...)` to avoid double settle 2021-02-14 08:35:38 +00:00
Richard Hansen e01059dce5 ImportHandler: Switch to `fs/promises` API 2021-02-14 08:35:38 +00:00
Richard Hansen 5b1b030906 ImportHandler: Use asynchronous rename instead of `fs.renameSync()` 2021-02-14 08:35:38 +00:00
Richard Hansen c7b1abebe4 ImportHandler: Avoid deprecated `fs.exists()` function 2021-02-14 08:35:38 +00:00
Richard Hansen 008209b0e0 ImportHandler: Delete redundant variable 2021-02-14 08:35:38 +00:00
Richard Hansen cc52811cd0 pad_impexp: Use jQuery to build the import failure popup
This reduces the chances of accidentally introducing an XSS
vulnerability.
2021-02-14 08:35:38 +00:00
Richard Hansen d869d96a2b pad_impexp: Simplify creation of import failure message 2021-02-14 08:35:38 +00:00
Richard Hansen 890e16f6fc pad_impexp: Style fixes to improve readability 2021-02-14 08:35:38 +00:00
Richard Hansen efe07cd027 pad_impexp: Invert logic to improve readability 2021-02-14 08:35:38 +00:00
Richard Hansen ce4ce8ce95 pad_impexp: Delete unnecessary `importFailed` wrapper 2021-02-14 08:35:38 +00:00
Richard Hansen 8a221ca773 pad: Delete dead code 2021-02-14 08:35:38 +00:00
Richard Hansen 48205c1ddb import/export: Make sure Express sees async errors
Express v4.x does not check to see if a Promise returned from a
middleware function will be rejected, so explicitly pass the Promise
rejection reason to `next()`.

We can revert this change after we upgrade to Express v5.0.

See https://expressjs.com/en/guide/error-handling.html for details.
2021-02-14 08:35:38 +00:00
John McLear f59e0993a6
tests: test runner output HTML and CSS improvements to show duration (#4775) 2021-02-14 08:04:50 +00:00
Richard Hansen e674d9789e
express: Change `httpUptime` to `httpStartTime` (#4777)
It's better to provide a primitive value and let the consumer of the
metric do math if desired.

Co-authored-by: John McLear <john@mclear.co.uk>
2021-02-14 07:50:10 +00:00
John McLear e585d321f9
tests: timeouts for tests (#4773) 2021-02-13 19:00:06 +00:00
Richard Hansen f9ec49d7ac tests: Improve `/admin/settings` restart test 2021-02-13 10:02:28 +00:00
Richard Hansen ac52fb8a9d express: New `httpUptime` metric 2021-02-13 10:02:28 +00:00
John McLear e22d8dffc0 deps: use ci --no-optional flags, this might break some things as it requires npm 6.31.4 2021-02-13 10:01:36 +00:00
John McLear 483f4344c2
performance: maxAge for favicon and plugin definitions (#4761) 2021-02-13 08:13:48 +00:00
Richard Hansen 09e9c36098 tests: Accept async condition functions for `helper.waitFor()` 2021-02-13 08:12:53 +00:00
Richard Hansen 8dca4cb16f tests: Give `helper.waitFor()` timeout errors a useful stack trace 2021-02-13 08:12:53 +00:00
Richard Hansen 71c1899164 tests: Asyncify tests in `api.js` 2021-02-13 08:12:53 +00:00
Richard Hansen e0f499cf5a tests: Use the supertest agent from `common.js` for `api.js` 2021-02-13 08:12:53 +00:00
Richard Hansen 08124ba733 tests: Delete unnecessary `describe()` calls in `api.js` 2021-02-13 08:12:53 +00:00
Richard Hansen fc9b22475a tests: Always call backend `common.init()` at startup
This provides a place to set the timeout for `common.init()` so that
individual tests don't have to.
2021-02-13 08:12:53 +00:00
Richard Hansen 6953e40c75 tests: Wait for `common.init()` to complete before returning 2021-02-13 08:12:53 +00:00
Richard Hansen 1c8a913411 lint: Delete unnecessary `eslint-disable-line` comment 2021-02-13 08:12:53 +00:00
Richard Hansen d56a02c85a express: Forcibly terminate HTTP connections when restarting
This should make restarts via `/admin` actions (e.g., plugin
installation) more reliable.
2021-02-13 07:37:22 +00:00
John McLear 4c4c7b526d
performance: i18n maxage (#4759) 2021-02-13 02:35:25 -05:00
Richard Hansen 01c83917d1 socket.io: Manually track client connections/disconnections
This change is required for socket.io 3.x because in 3.x
`io.sockets.clients()` no longer returns all client Socket objects.
2021-02-13 07:13:37 +00:00
Richard Hansen 66544be354 lint: `src/tests/backend/specs/api/api.js` 2021-02-13 00:46:30 -05:00
Richard Hansen eb9d5bb470 lint: `src/tests/frontend/helper.js` and friends 2021-02-13 00:46:30 -05:00
Richard Hansen 8f2f6593be lint: Re-run `eslint --fix` 2021-02-13 00:31:36 -05:00
Richard Hansen db8ca2818f lint: Treat `helper.js` and friends as normal browser files
This enables the prefer-arrow/prefer-arrow-functions rule.
2021-02-13 00:29:30 -05:00
John McLear 55c96e5577 socketio: increase socketio limit to 1MiB 2021-02-12 17:56:50 -05:00
John McLear fcd9adf20d
tests: admin test timeout increase, bugfix and removal of buggy test (#4762) 2021-02-12 20:04:42 +00:00
Richard Hansen 73d31b12a8 Minify: Replace deprecated `url.parse()` with `new URL()` 2021-02-12 07:08:51 +00:00
Richard Hansen 7efca7dc7d Minify: Don't ignore request headers in `requestURI()` 2021-02-12 07:08:51 +00:00
Richard Hansen 7a003cb9e2 Minify: Let Express render the 500 error page 2021-02-12 07:08:51 +00:00
Richard Hansen 44e420b6c5 Minify: Return `Date` objects from `statFile()` 2021-02-12 07:08:51 +00:00
Richard Hansen aa11667ff7 Minify: Use `fs.promises` 2021-02-12 07:08:51 +00:00
Richard Hansen 073052ac66 Minify: Asyncify `minify()` 2021-02-12 07:08:51 +00:00
Richard Hansen 3eefe71834 Minify: Don't set cache headers if `statFile()` causes 500 2021-02-12 07:08:51 +00:00
Richard Hansen 84190793dc Minify: Asyncify `getFileCompressed()` 2021-02-12 07:08:51 +00:00
Richard Hansen dd7ea1a8f9 Minify: Asyncify `statFile()` 2021-02-12 07:08:51 +00:00
Richard Hansen 947dc8eeed Minify: Asyncify `getFile()` 2021-02-12 07:08:51 +00:00
Richard Hansen 5d7c07e81c Minify: Asyncify `lastModifiedDateOfEverything()` 2021-02-12 07:08:51 +00:00
Richard Hansen e573276755 Minify: Asyncify `getAceFile()` 2021-02-12 07:08:51 +00:00
Richard Hansen 5cc191f185 Minify: Replace `async.forEach()` with `Promise.all()` 2021-02-12 07:08:51 +00:00
Richard Hansen 0c428e068e Minify: Use `Promise.all()` to simplify `requestURIs()` 2021-02-12 07:08:51 +00:00
Richard Hansen 1ec29e0d45 Minify: Asyncify `requestURI()` 2021-02-12 07:08:51 +00:00
Richard Hansen a952df2cf5 Minify: Un-export `requestURI()`
Nobody outside this file uses it.
2021-02-12 07:08:51 +00:00
Richard Hansen d9607f7c66 static: Asyncify 2021-02-12 07:08:51 +00:00
Richard Hansen 7f4a7156e2 Minify: Move `getTar()` to `static.js`
`static.js` is the only file that uses it.
2021-02-12 07:08:51 +00:00
Richard Hansen 996dc81825 Minify: Move tar processing into a function
This reduces the overhead of `require()`ing the module, and it will
make it easier for a future commit to asyncify everything in
`Minify.js`.
2021-02-12 07:08:51 +00:00
Richard Hansen 8ae8710a14 ace: Fix EMBEDDED check 2021-02-12 07:08:51 +00:00
Richard Hansen 50929fe7f7 express: Call expressConfigure, expressCreateServer hooks asynchronously 2021-02-12 07:08:51 +00:00
Richard Hansen 8919f63c98 lint: Replace use of underscore.js with plain ECMAScript 2021-02-12 07:08:51 +00:00
John McLear ab127289c4 security: limit socketio to 1M chars 2021-02-11 21:01:47 -05:00
Richard Hansen 085ab452a0 chat tests: Give some time to process each of the 140 chat messages
This avoids overflowing socket.io's receive buffer.
2021-02-11 21:01:47 -05:00
Richard Hansen 020df75677 chat tests: Asyncify 2021-02-11 21:01:47 -05:00
Richard Hansen 0fae34009d chat tests: Delete unnecessary `expect()` 2021-02-11 21:01:47 -05:00
snyk-bot f6df9ffad0 fix: upgrade measured-core from 1.11.2 to 1.51.1
Snyk has created this PR to upgrade measured-core from 1.11.2 to 1.51.1.

See this package in npm:
https://www.npmjs.com/package/measured-core

See this project in Snyk:
https://app.snyk.io/org/johnmclear/project/d9a12bfb-7ccd-443f-9e22-f30d339cc8c5?utm_source=github&utm_medium=upgrade-pr
2021-02-11 18:39:08 +00:00
John McLear cc7f11560f
Fix OL list items not increasing (#4749)
* tests: additional test coverage for OL items

* parseInt means we can do a proper check

* tests: use ol check value test for #4748
2021-02-11 13:26:37 -05:00
snyk-bot 60a55ec428 fix: upgrade resolve from 1.1.7 to 1.19.0
Snyk has created this PR to upgrade resolve from 1.1.7 to 1.19.0.

See this package in npm:
https://www.npmjs.com/package/resolve

See this project in Snyk:
https://app.snyk.io/org/johnmclear/project/d9a12bfb-7ccd-443f-9e22-f30d339cc8c5?utm_source=github&utm_medium=upgrade-pr
2021-02-11 18:24:32 +00:00
snyk-bot b50fcb065a fix: upgrade underscore from 1.8.3 to 1.12.0
Snyk has created this PR to upgrade underscore from 1.8.3 to 1.12.0.

See this package in npm:
https://www.npmjs.com/package/underscore

See this project in Snyk:
https://app.snyk.io/org/johnmclear/project/d9a12bfb-7ccd-443f-9e22-f30d339cc8c5?utm_source=github&utm_medium=upgrade-pr
2021-02-11 18:18:11 +00:00
translatewiki.net 2f1d648787 Localisation updates from https://translatewiki.net. 2021-02-11 18:48:51 +01:00
Richard Hansen 2301c6ec83 pad: Don't throw on socket.io error 2021-02-11 17:25:09 +00:00
Richard Hansen fc9f236977 plugins: Use `npm ls` to list the installed plugins
This speeds up startup considerably, and we get rid of a lot of buggy
code.

This works with both npm v6.x and v7.x.
2021-02-09 22:18:35 +00:00
Richard Hansen ce1b69feda plugins: Helper function to run the `npm` CLI 2021-02-09 22:18:35 +00:00
Richard Hansen 83a519941b /admin/plugins: Fix logging of error messages 2021-02-09 22:18:35 +00:00
John McLear 94a65062c7
checkPlugins: remove lib/travis.yml and add github badges if they aren't present (#4731)
A future PR should remove all Travis badges and CI jobs.
2021-02-09 09:41:41 +00:00
Richard Hansen ebdb2798ff server: Fix handling of errors during startup and shutdown
Before, an unhandled rejection or uncaught exception during startup
would cause `exports.exit()` to wait forever for startup completion.
Similarly, an error during shutdown would cause `exports.exit()` to
wait forever for shutdown to complete. Now any error during startup or
shutdown triggers an immediate exit.
2021-02-09 08:57:24 +00:00
Richard Hansen 5999d8cd44 server: Only pass `err` arg to `exports.exit()`
The `uncaughtException` event handlers are passed two arguments: error
and "origin". The `exports.exit()` argument doesn't expect a second
argument.
2021-02-09 08:57:24 +00:00
Richard Hansen 5b327b63ac server: Simplify gating of state transition waiters 2021-02-09 08:57:24 +00:00
Richard Hansen 105f8b0ccb server: Use a log4js logger object for logging 2021-02-09 08:57:24 +00:00
Richard Hansen cb1116607e Revert "backend tests: change loglevel to WARN (#4514)"
Logging verbosity of the openapi handlers was turned down so GitHub
should be happier with INFO now. This makes it easier to troubleshoot
problems.

This reverts commit b98aaf4904.
2021-02-09 07:24:31 +00:00
Richard Hansen 1e3f352281 openapi: Turn down logging verbosity 2021-02-09 07:24:31 +00:00
Richard Hansen 714e099b2a tests: Fix accidental functions in `ordered_list.js`
This fixes a bug introduced in commit
e9bb2c410e.
2021-02-09 07:23:38 +00:00
Richard Hansen e9bb2c410e tests: Fix erroneous use of `waitForPromise()` in `ordered_list.js`
`waitForPromise()` should always be used with `await` (either directly
or with a later `await` on the returned Promise). In this case,
the condition should be immediately true so `waitForPromise()` is not
the right tool here.
2021-02-08 18:24:11 +00:00
John McLear 7baa0cda02
tests: disabled checks shouldnt change behavior (#4729) 2021-02-08 11:07:07 +00:00
John McLear 9070c71e9f color picker: allow full white 2021-02-08 11:01:27 +00:00
Richard Hansen 1c9afa5168 lint: src/static/js/ace.js 2021-02-07 20:04:07 +00:00
Richard Hansen 8668017c62 ace: Use `globalThis` instead of non-strict default context
This is necessary before `'use strict';` can be added to the top of
the file.
2021-02-07 20:04:07 +00:00
Richard Hansen 3c2e0f0e16 ace: Simplify Ace2Editor method creation
* Delete the unused `optDoNow` parameter from `pendingInit()`.
  * Move the `setAuthorInfo()` 1st parameter check out of the wrapper
    and in to the `setAuthorInfo()` function itself.
2021-02-07 20:04:07 +00:00
John McLear 865a463154 fix: release script output 2021-02-07 19:28:00 +00:00
John McLear 2b112ac851
tests: Admin Frontend Test Coverage(#4717)
Covers all frontend admin operations, runs separated in CI.
2021-02-07 11:32:57 +00:00
Richard Hansen 294f2a251f lint: Fix bugs and style issues introduced in PR #4718
This fixes issues introduced in commit
f8a19c4527.
2021-02-07 07:51:35 +00:00
Richard Hansen 0ff8274d2e tests: Fix `waitForPromise()` in `enter.js` 2021-02-07 07:13:04 +00:00
Richard Hansen c625c611d2 tests: delete `src/tests/frontend/specs/caret.js`
All of the tests in this file are commented out so this file does
nothing. We can uncomment the code and clean it up, but the approach
taken in these tests will never work: For security reasons, browsers
do not allow synthetic key events to perform the default
behavior (such as moving the carent when an arrow key is pressed).

There are two ways to test responses to navigation keys:
  * Use WebDriver to create "genuine" keyboard events.
  * Suppress the default behavior and implement caret movement
    ourselves. This is tremendously complicated, especially arrow
    up/down.
2021-02-07 07:02:23 +00:00
John McLear 1f0cb01110 tests: fix enter test 2021-02-07 07:00:12 +00:00
John McLear f8a19c4527
lint: lint and various fixes of frontend test specs 2021-02-07 06:39:03 +00:00
John McLear e02246641e
ordered lists bugfix: first line item can be 0.*, don't show 0 as undefined (#4600) 2021-02-06 20:19:05 +00:00
John McLear 4862d6fa9c
editor: fix enter key keep line in view (#4639) 2021-02-06 19:56:59 +00:00
John McLear c969ae58c2
stats: activePads & lastDisconnected stats 2021-02-06 19:53:52 +00:00
John McLear 5f58ce14d6
editor: remove grayed logic and styles so background color is not lost on disconnect/reconnect. 2021-02-06 09:58:10 +00:00