From 2ea8ea12754c92ea06f22428f1e86341dcf00d99 Mon Sep 17 00:00:00 2001 From: John McLear Date: Wed, 3 Feb 2021 12:08:43 +0000 Subject: [PATCH] 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') --- CHANGELOG.md | 3 + bin | 1 + package-lock.json | 942 +----------------- package.json | 106 -- {bin => src/bin}/buildDebian.sh | 0 {bin => src/bin}/buildForWindows.sh | 0 {bin => src/bin}/checkAllPads.js | 8 +- {bin => src/bin}/checkPad.js | 8 +- {bin => src/bin}/checkPadDeltas.js | 10 +- {bin => src/bin}/cleanRun.sh | 0 .../bin}/convertSettings.json.template | 0 {bin => src/bin}/createRelease.sh | 0 {bin => src/bin}/createUserSession.js | 6 +- {bin => src/bin}/deb-src/DEBIAN/control | 0 {bin => src/bin}/deb-src/DEBIAN/postinst | 0 {bin => src/bin}/deb-src/DEBIAN/preinst | 0 {bin => src/bin}/deb-src/DEBIAN/prerm | 0 .../deb-src/sysroot/etc/init/etherpad.conf | 0 {bin => src/bin}/debugRun.sh | 0 {bin => src/bin}/deleteAllGroupSessions.js | 4 +- {bin => src/bin}/deletePad.js | 7 +- {bin => src/bin}/dirty-db-cleaner.py | 0 {bin => src/bin}/doc/LICENSE | 0 {bin => src/bin}/doc/README.md | 0 {bin => src/bin}/doc/generate.js | 0 {bin => src/bin}/doc/html.js | 0 {bin => src/bin}/doc/json.js | 0 {bin => src/bin}/doc/package-lock.json | 0 {bin => src/bin}/doc/package.json | 0 {bin => src/bin}/extractPadData.js | 8 +- {bin => src/bin}/fastRun.sh | 0 {bin => src/bin}/functions.sh | 0 {bin => src/bin}/importSqlFile.js | 6 +- {bin => src/bin}/installDeps.sh | 0 {bin => src/bin}/installOnWindows.bat | 0 {bin => src/bin}/migrateDirtyDBtoRealDB.js | 12 +- {bin => src/bin}/plugins/README.md | 0 {bin => src/bin}/plugins/checkPlugin.js | 2 +- {bin => src/bin}/plugins/getCorePlugins.sh | 0 {bin => src/bin}/plugins/lib/CONTRIBUTING.md | 0 {bin => src/bin}/plugins/lib/LICENSE.md | 0 {bin => src/bin}/plugins/lib/README.md | 0 .../bin}/plugins/lib/backend-tests.yml | 0 {bin => src/bin}/plugins/lib/gitignore | 0 {bin => src/bin}/plugins/lib/npmpublish.yml | 0 {bin => src/bin}/plugins/lib/travis.yml | 0 {bin => src/bin}/plugins/reTestAllPlugins.sh | 0 .../bin}/plugins/updateAllPluginsScript.sh | 0 {bin => src/bin}/plugins/updateCorePlugins.sh | 0 {bin => src/bin}/rebuildPad.js | 10 +- {bin => src/bin}/release.js | 2 +- {bin => src/bin}/repairPad.js | 6 +- {bin => src/bin}/run.sh | 0 {bin => src/bin}/safeRun.sh | 0 {bin => src/bin}/updatePlugins.sh | 0 src/package.json | 74 +- src/tests | 1 - {tests => src/tests}/README.md | 0 {tests => src/tests}/backend/common.js | 12 +- .../tests}/backend/fuzzImportTest.js | 2 +- {tests => src/tests}/backend/specs/api/api.js | 9 +- .../backend/specs/api/characterEncoding.js | 6 +- .../tests}/backend/specs/api/chat.js | 6 +- .../tests}/backend/specs/api/emojis.html | 0 .../backend/specs/api/fuzzImportTest.js | 7 +- .../tests}/backend/specs/api/image.png | Bin .../tests}/backend/specs/api/importexport.js | 2 +- .../backend/specs/api/importexportGetPost.js | 8 +- .../tests}/backend/specs/api/instance.js | 5 +- {tests => src/tests}/backend/specs/api/pad.js | 7 +- .../backend/specs/api/sessionsAndGroups.js | 5 +- .../tests}/backend/specs/api/test.doc | Bin .../tests}/backend/specs/api/test.docx | Bin .../tests}/backend/specs/api/test.etherpad | 0 .../tests}/backend/specs/api/test.odt | Bin .../tests}/backend/specs/api/test.pdf | Bin .../tests}/backend/specs/api/test.txt | 0 .../tests}/backend/specs/api/tidy.js | 8 +- .../backend/specs/caching_middleware.js | 2 +- .../tests}/backend/specs/contentcollector.js | 6 +- {tests => src/tests}/backend/specs/hooks.js | 6 +- .../tests}/backend/specs/promises.js | 4 +- .../tests}/backend/specs/socketio.js | 10 +- .../tests}/backend/specs/specialpages.js | 2 +- .../tests}/backend/specs/webaccess.js | 4 +- .../tests}/container/loadSettings.js | 4 +- .../tests}/container/specs/api/pad.js | 6 +- {tests => src/tests}/frontend/helper.js | 0 .../tests}/frontend/helper/methods.js | 0 {tests => src/tests}/frontend/helper/ui.js | 0 {tests => src/tests}/frontend/index.html | 0 {tests => src/tests}/frontend/lib/expect.js | 0 {tests => src/tests}/frontend/lib/mocha.js | 0 {tests => src/tests}/frontend/lib/sendkeys.js | 0 .../tests}/frontend/lib/underscore.js | 0 {tests => src/tests}/frontend/runner.css | 0 {tests => src/tests}/frontend/runner.js | 0 .../tests}/frontend/specs/alphabet.js | 0 .../frontend/specs/authorship_of_editions.js | 0 {tests => src/tests}/frontend/specs/bold.js | 0 {tests => src/tests}/frontend/specs/caret.js | 0 .../frontend/specs/change_user_color.js | 0 .../tests}/frontend/specs/change_user_name.js | 0 {tests => src/tests}/frontend/specs/chat.js | 0 .../frontend/specs/chat_load_messages.js | 0 .../frontend/specs/clear_authorship_colors.js | 0 {tests => src/tests}/frontend/specs/delete.js | 0 .../tests}/frontend/specs/drag_and_drop.js | 0 .../tests}/frontend/specs/embed_value.js | 0 {tests => src/tests}/frontend/specs/enter.js | 0 .../tests}/frontend/specs/font_type.js | 0 {tests => src/tests}/frontend/specs/helper.js | 0 .../tests}/frontend/specs/importexport.js | 0 .../tests}/frontend/specs/importindents.js | 0 .../tests}/frontend/specs/indentation.js | 0 {tests => src/tests}/frontend/specs/italic.js | 0 .../tests}/frontend/specs/language.js | 0 ...ultiple_authors_clear_authorship_colors.js | 0 .../tests}/frontend/specs/ordered_list.js | 0 .../tests}/frontend/specs/pad_modal.js | 0 {tests => src/tests}/frontend/specs/redo.js | 0 .../tests}/frontend/specs/responsiveness.js | 0 .../tests}/frontend/specs/scrollTo.js | 0 .../specs/select_formatting_buttons.js | 0 .../tests}/frontend/specs/strikethrough.js | 0 .../tests}/frontend/specs/timeslider.js | 0 .../frontend/specs/timeslider_follow.js | 0 .../frontend/specs/timeslider_labels.js | 0 .../specs/timeslider_numeric_padID.js | 0 .../frontend/specs/timeslider_revisions.js | 0 {tests => src/tests}/frontend/specs/undo.js | 0 .../tests}/frontend/specs/unordered_list.js | 0 .../frontend/specs/urls_become_clickable.js | 0 .../tests}/frontend/specs/xxauto_reconnect.js | 0 .../tests}/frontend/travis/.gitignore | 0 .../tests}/frontend/travis/remote_runner.js | 4 +- .../tests}/frontend/travis/runner.sh | 0 .../tests}/frontend/travis/runnerBackend.sh | 0 .../tests}/frontend/travis/runnerLoadTest.sh | 0 .../tests}/frontend/travis/sauce_tunnel.sh | 0 .../tests}/ratelimit/Dockerfile.anotherip | 0 .../tests}/ratelimit/Dockerfile.nginx | 0 {tests => src/tests}/ratelimit/nginx.conf | 0 .../tests}/ratelimit/send_changesets.js | 10 +- {tests => src/tests}/ratelimit/testlimits.sh | 0 tests | 1 + 146 files changed, 191 insertions(+), 1161 deletions(-) create mode 120000 bin rename {bin => src/bin}/buildDebian.sh (100%) rename {bin => src/bin}/buildForWindows.sh (100%) rename {bin => src/bin}/checkAllPads.js (91%) rename {bin => src/bin}/checkPad.js (90%) rename {bin => src/bin}/checkPadDeltas.js (90%) rename {bin => src/bin}/cleanRun.sh (100%) rename {bin => src/bin}/convertSettings.json.template (100%) rename {bin => src/bin}/createRelease.sh (100%) rename {bin => src/bin}/createUserSession.js (90%) rename {bin => src/bin}/deb-src/DEBIAN/control (100%) rename {bin => src/bin}/deb-src/DEBIAN/postinst (100%) rename {bin => src/bin}/deb-src/DEBIAN/preinst (100%) rename {bin => src/bin}/deb-src/DEBIAN/prerm (100%) rename {bin => src/bin}/deb-src/sysroot/etc/init/etherpad.conf (100%) rename {bin => src/bin}/debugRun.sh (100%) rename {bin => src/bin}/deleteAllGroupSessions.js (93%) rename {bin => src/bin}/deletePad.js (91%) rename {bin => src/bin}/dirty-db-cleaner.py (100%) rename {bin => src/bin}/doc/LICENSE (100%) rename {bin => src/bin}/doc/README.md (100%) rename {bin => src/bin}/doc/generate.js (100%) rename {bin => src/bin}/doc/html.js (100%) rename {bin => src/bin}/doc/json.js (100%) rename {bin => src/bin}/doc/package-lock.json (100%) rename {bin => src/bin}/doc/package.json (100%) rename {bin => src/bin}/extractPadData.js (87%) rename {bin => src/bin}/fastRun.sh (100%) rename {bin => src/bin}/functions.sh (100%) rename {bin => src/bin}/importSqlFile.js (92%) rename {bin => src/bin}/installDeps.sh (100%) rename {bin => src/bin}/installOnWindows.bat (100%) rename {bin => src/bin}/migrateDirtyDBtoRealDB.js (84%) rename {bin => src/bin}/plugins/README.md (100%) rename {bin => src/bin}/plugins/checkPlugin.js (99%) rename {bin => src/bin}/plugins/getCorePlugins.sh (100%) rename {bin => src/bin}/plugins/lib/CONTRIBUTING.md (100%) rename {bin => src/bin}/plugins/lib/LICENSE.md (100%) rename {bin => src/bin}/plugins/lib/README.md (100%) rename {bin => src/bin}/plugins/lib/backend-tests.yml (100%) rename {bin => src/bin}/plugins/lib/gitignore (100%) rename {bin => src/bin}/plugins/lib/npmpublish.yml (100%) rename {bin => src/bin}/plugins/lib/travis.yml (100%) rename {bin => src/bin}/plugins/reTestAllPlugins.sh (100%) rename {bin => src/bin}/plugins/updateAllPluginsScript.sh (100%) rename {bin => src/bin}/plugins/updateCorePlugins.sh (100%) rename {bin => src/bin}/rebuildPad.js (90%) rename {bin => src/bin}/release.js (97%) rename {bin => src/bin}/repairPad.js (90%) rename {bin => src/bin}/run.sh (100%) rename {bin => src/bin}/safeRun.sh (100%) rename {bin => src/bin}/updatePlugins.sh (100%) delete mode 120000 src/tests rename {tests => src/tests}/README.md (100%) rename {tests => src/tests}/backend/common.js (82%) rename {tests => src/tests}/backend/fuzzImportTest.js (96%) rename {tests => src/tests}/backend/specs/api/api.js (88%) rename {tests => src/tests}/backend/specs/api/characterEncoding.js (95%) rename {tests => src/tests}/backend/specs/api/chat.js (95%) rename {tests => src/tests}/backend/specs/api/emojis.html (100%) rename {tests => src/tests}/backend/specs/api/fuzzImportTest.js (86%) rename {tests => src/tests}/backend/specs/api/image.png (100%) rename {tests => src/tests}/backend/specs/api/importexport.js (99%) rename {tests => src/tests}/backend/specs/api/importexportGetPost.js (97%) rename {tests => src/tests}/backend/specs/api/instance.js (91%) rename {tests => src/tests}/backend/specs/api/pad.js (99%) rename {tests => src/tests}/backend/specs/api/sessionsAndGroups.js (98%) rename {tests => src/tests}/backend/specs/api/test.doc (100%) rename {tests => src/tests}/backend/specs/api/test.docx (100%) rename {tests => src/tests}/backend/specs/api/test.etherpad (100%) rename {tests => src/tests}/backend/specs/api/test.odt (100%) rename {tests => src/tests}/backend/specs/api/test.pdf (100%) rename {tests => src/tests}/backend/specs/api/test.txt (100%) rename {tests => src/tests}/backend/specs/api/tidy.js (87%) rename {tests => src/tests}/backend/specs/caching_middleware.js (98%) rename {tests => src/tests}/backend/specs/contentcollector.js (98%) rename {tests => src/tests}/backend/specs/hooks.js (99%) rename {tests => src/tests}/backend/specs/promises.js (95%) rename {tests => src/tests}/backend/specs/socketio.js (97%) rename {tests => src/tests}/backend/specs/specialpages.js (91%) rename {tests => src/tests}/backend/specs/webaccess.js (99%) rename {tests => src/tests}/container/loadSettings.js (86%) rename {tests => src/tests}/container/specs/api/pad.js (85%) rename {tests => src/tests}/frontend/helper.js (100%) rename {tests => src/tests}/frontend/helper/methods.js (100%) rename {tests => src/tests}/frontend/helper/ui.js (100%) rename {tests => src/tests}/frontend/index.html (100%) rename {tests => src/tests}/frontend/lib/expect.js (100%) rename {tests => src/tests}/frontend/lib/mocha.js (100%) rename {tests => src/tests}/frontend/lib/sendkeys.js (100%) rename {tests => src/tests}/frontend/lib/underscore.js (100%) rename {tests => src/tests}/frontend/runner.css (100%) rename {tests => src/tests}/frontend/runner.js (100%) rename {tests => src/tests}/frontend/specs/alphabet.js (100%) rename {tests => src/tests}/frontend/specs/authorship_of_editions.js (100%) rename {tests => src/tests}/frontend/specs/bold.js (100%) rename {tests => src/tests}/frontend/specs/caret.js (100%) rename {tests => src/tests}/frontend/specs/change_user_color.js (100%) rename {tests => src/tests}/frontend/specs/change_user_name.js (100%) rename {tests => src/tests}/frontend/specs/chat.js (100%) rename {tests => src/tests}/frontend/specs/chat_load_messages.js (100%) rename {tests => src/tests}/frontend/specs/clear_authorship_colors.js (100%) rename {tests => src/tests}/frontend/specs/delete.js (100%) rename {tests => src/tests}/frontend/specs/drag_and_drop.js (100%) rename {tests => src/tests}/frontend/specs/embed_value.js (100%) rename {tests => src/tests}/frontend/specs/enter.js (100%) rename {tests => src/tests}/frontend/specs/font_type.js (100%) rename {tests => src/tests}/frontend/specs/helper.js (100%) rename {tests => src/tests}/frontend/specs/importexport.js (100%) rename {tests => src/tests}/frontend/specs/importindents.js (100%) rename {tests => src/tests}/frontend/specs/indentation.js (100%) rename {tests => src/tests}/frontend/specs/italic.js (100%) rename {tests => src/tests}/frontend/specs/language.js (100%) rename {tests => src/tests}/frontend/specs/multiple_authors_clear_authorship_colors.js (100%) rename {tests => src/tests}/frontend/specs/ordered_list.js (100%) rename {tests => src/tests}/frontend/specs/pad_modal.js (100%) rename {tests => src/tests}/frontend/specs/redo.js (100%) rename {tests => src/tests}/frontend/specs/responsiveness.js (100%) rename {tests => src/tests}/frontend/specs/scrollTo.js (100%) rename {tests => src/tests}/frontend/specs/select_formatting_buttons.js (100%) rename {tests => src/tests}/frontend/specs/strikethrough.js (100%) rename {tests => src/tests}/frontend/specs/timeslider.js (100%) rename {tests => src/tests}/frontend/specs/timeslider_follow.js (100%) rename {tests => src/tests}/frontend/specs/timeslider_labels.js (100%) rename {tests => src/tests}/frontend/specs/timeslider_numeric_padID.js (100%) rename {tests => src/tests}/frontend/specs/timeslider_revisions.js (100%) rename {tests => src/tests}/frontend/specs/undo.js (100%) rename {tests => src/tests}/frontend/specs/unordered_list.js (100%) rename {tests => src/tests}/frontend/specs/urls_become_clickable.js (100%) rename {tests => src/tests}/frontend/specs/xxauto_reconnect.js (100%) rename {tests => src/tests}/frontend/travis/.gitignore (100%) rename {tests => src/tests}/frontend/travis/remote_runner.js (97%) rename {tests => src/tests}/frontend/travis/runner.sh (100%) rename {tests => src/tests}/frontend/travis/runnerBackend.sh (100%) rename {tests => src/tests}/frontend/travis/runnerLoadTest.sh (100%) rename {tests => src/tests}/frontend/travis/sauce_tunnel.sh (100%) rename {tests => src/tests}/ratelimit/Dockerfile.anotherip (100%) rename {tests => src/tests}/ratelimit/Dockerfile.nginx (100%) rename {tests => src/tests}/ratelimit/nginx.conf (100%) rename {tests => src/tests}/ratelimit/send_changesets.js (66%) rename {tests => src/tests}/ratelimit/testlimits.sh (100%) create mode 120000 tests diff --git a/CHANGELOG.md b/CHANGELOG.md index 57613b82..66f41973 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ### Compatibility changes * Node.js 10.17.0 or newer is now required. +* The `bin/` and `tests/` directories were moved under `src/`. Symlinks were + added at the old locations to hopefully avoid breaking user scripts and other + stuff. ### Notable new features * Database performance is significantly improved. diff --git a/bin b/bin new file mode 120000 index 00000000..70feaa89 --- /dev/null +++ b/bin @@ -0,0 +1 @@ +src/bin \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0f7986ac..118e4be8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,63 +34,6 @@ "adal-node": "^0.1.28" } }, - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } - } - }, - "@eslint/eslintrc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", - "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - } - }, "@js-joda/core": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-3.2.0.tgz", @@ -192,18 +135,6 @@ "negotiator": "0.6.2" } }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true - }, "adal-node": { "version": "0.1.28", "resolved": "https://registry.npmjs.org/adal-node/-/adal-node-0.1.28.tgz", @@ -256,27 +187,6 @@ "uri-js": "^4.2.2" } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -293,15 +203,6 @@ "readable-stream": "^2.0.6" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -320,12 +221,6 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", @@ -436,12 +331,6 @@ "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -458,57 +347,6 @@ "long": "^2.2.0" } }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "channels": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/channels/-/channels-0.0.4.tgz", @@ -536,19 +374,6 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "optional": true }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -593,17 +418,6 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -631,12 +445,6 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "optional": true }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -669,15 +477,6 @@ "resolved": "https://registry.npmjs.org/dirty/-/dirty-1.1.0.tgz", "integrity": "sha1-cO3SuZlUHcmXT9Ooy9DGcP4jYHg=" }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -742,12 +541,6 @@ } } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "engine.io": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz", @@ -816,15 +609,6 @@ "has-binary2": "~1.0.2" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "ep_etherpad-lite": { "version": "file:src", "requires": { @@ -1096,10 +880,7 @@ "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" }, "chalk": { "version": "2.4.2", @@ -1114,10 +895,7 @@ "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" } } }, @@ -2073,12 +1851,10 @@ "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -2843,10 +2619,7 @@ "is-core-module": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", - "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", - "requires": { - "has": "^1.0.3" - } + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==" }, "is-decimal": { "version": "1.0.4", @@ -2942,7 +2715,6 @@ "istanbul-lib-coverage": "^3.0.0-alpha.1", "make-dir": "^3.0.0", "p-map": "^3.0.0", - "rimraf": "^3.0.0", "uuid": "^3.3.3" } }, @@ -3369,10 +3141,7 @@ "supports-color": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "requires": { - "has-flag": "^3.0.0" - } + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==" } } }, @@ -6993,7 +6762,6 @@ "p-map": "^3.0.0", "process-on-spawn": "^1.0.0", "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", "signal-exit": "^3.0.2", "spawn-wrap": "^2.0.0", "test-exclude": "^6.0.0", @@ -7684,10 +7452,7 @@ "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -7728,7 +7493,6 @@ "foreground-child": "^2.0.0", "is-windows": "^1.0.2", "make-dir": "^3.0.0", - "rimraf": "^3.0.0", "signal-exit": "^3.0.2", "which": "^2.0.1" }, @@ -8414,248 +8178,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "eslint": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz", - "integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.3.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-config-etherpad": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/eslint-config-etherpad/-/eslint-config-etherpad-1.0.24.tgz", - "integrity": "sha512-zM92/lricP0ALURQWhSFKk8gwDUVkgNiup/Gv5lly6bHj9OIMpK86SlLv/NPkQZYM609pyQjKIeiObsiCSdQsw==", - "dev": true - }, - "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - } - }, - "eslint-plugin-eslint-comments": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", - "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "ignore": "^5.0.5" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } - } - }, - "eslint-plugin-mocha": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-8.0.0.tgz", - "integrity": "sha512-n67etbWDz6NQM+HnTwZHyBwz/bLlYPOxUbw7bPuCyFujv7ZpaT/Vn6KTAbT02gf7nRljtYIjWcTxK/n8a57rQQ==", - "dev": true, - "requires": { - "eslint-utils": "^2.1.0", - "ramda": "^0.27.1" - } - }, - "eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-prefer-arrow": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", - "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", - "dev": true - }, - "eslint-plugin-promise": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", - "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", - "dev": true - }, - "eslint-plugin-you-dont-need-lodash-underscore": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-you-dont-need-lodash-underscore/-/eslint-plugin-you-dont-need-lodash-underscore-6.10.0.tgz", - "integrity": "sha512-Zu1KbHiWKf+alVvT+kFX2M5HW1gmtnkfF1l2cjmFozMnG0gbGgXo8oqK7lwk+ygeOXDmVfOyijqBd7SUub9AEQ==", - "dev": true, - "requires": { - "kebab-case": "^1.0.0" - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, "event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", @@ -8681,37 +8203,6 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -8764,17 +8255,6 @@ } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -8849,23 +8329,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -8886,14 +8349,6 @@ "har-schema": "^2.0.0" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -8929,11 +8384,6 @@ "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -8966,12 +8416,6 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, "ignore-walk": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", @@ -8981,22 +8425,6 @@ "minimatch": "^3.0.4" } }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -9027,33 +8455,11 @@ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" }, - "is-core-module": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", - "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -9074,22 +8480,6 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "jsbi": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-3.1.4.tgz", @@ -9110,12 +8500,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -9151,22 +8535,6 @@ "safe-buffer": "^5.0.1" } }, - "kebab-case": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/kebab-case/-/kebab-case-1.0.0.tgz", - "integrity": "sha1-P55JkK3K0MaGwOcB92RYaPdfkes=", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, "lodash": { "version": "4.17.20", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", @@ -9177,15 +8545,6 @@ "resolved": "https://registry.npmjs.org/long/-/long-2.4.0.tgz", "integrity": "sha1-n6GAux2VAM3CnEFWdmoZleH0Uk8=" }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "memory-pager": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", @@ -9316,12 +8675,6 @@ "resolved": "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz", "integrity": "sha1-eJkHjmS/PIo9cyYBs9QP8F21j6A=" }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, "needle": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", @@ -9553,20 +8906,6 @@ "wrappy": "1" } }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -9594,15 +8933,6 @@ "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, "parseqs": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", @@ -9618,18 +8948,6 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -9712,23 +9030,11 @@ "xtend": "^4.0.0" } }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -9744,12 +9050,6 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, - "ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==", - "dev": true - }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -9820,12 +9120,6 @@ "redis-errors": "^1.0.0" } }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -9874,12 +9168,6 @@ } } }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, "require_optional": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", @@ -9901,22 +9189,6 @@ } } }, - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, "rethinkdb": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/rethinkdb/-/rethinkdb-2.4.2.tgz", @@ -9925,14 +9197,6 @@ "bluebird": ">= 2.3.2 < 3" } }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9957,35 +9221,11 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -10002,49 +9242,6 @@ "debug": "^4.3.1" } }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - } - } - }, "socket.io": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.1.tgz", @@ -10180,12 +9377,6 @@ } } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, "sqlite3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.1.tgz", @@ -10218,25 +9409,6 @@ "tweetnacl": "~0.14.0" } }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - } - } - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -10252,62 +9424,6 @@ } } }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ajv": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, "tar": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", @@ -10367,12 +9483,6 @@ } } }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, "to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", @@ -10411,21 +9521,6 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, "ueberdb2": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/ueberdb2/-/ueberdb2-1.2.5.tgz", @@ -10470,12 +9565,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", - "dev": true - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -10486,15 +9575,6 @@ "extsprintf": "^1.2.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -10527,12 +9607,6 @@ } } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -10582,12 +9656,6 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", diff --git a/package.json b/package.json index de929880..772ec540 100644 --- a/package.json +++ b/package.json @@ -2,112 +2,6 @@ "dependencies": { "ep_etherpad-lite": "file:src" }, - "devDependencies": { - "eslint": "^7.18.0", - "eslint-config-etherpad": "^1.0.24", - "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-mocha": "^8.0.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prefer-arrow": "^1.2.3", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-you-dont-need-lodash-underscore": "^6.10.0" - }, - "eslintConfig": { - "ignorePatterns": [ - "/src/", - "/tests/frontend/lib/" - ], - "overrides": [ - { - "files": [ - "**/.eslintrc.js" - ], - "extends": "etherpad/node" - }, - { - "files": [ - "**/*" - ], - "excludedFiles": [ - "**/.eslintrc.js", - "tests/frontend/**/*" - ], - "extends": "etherpad/node" - }, - { - "files": [ - "tests/**/*" - ], - "excludedFiles": [ - "**/.eslintrc.js", - "tests/frontend/travis/**/*", - "tests/ratelimit/**/*" - ], - "extends": "etherpad/tests", - "rules": { - "mocha/no-exports": "off", - "mocha/no-top-level-hooks": "off" - } - }, - { - "files": [ - "tests/backend/**/*" - ], - "excludedFiles": [ - "**/.eslintrc.js" - ], - "extends": "etherpad/tests/backend", - "overrides": [ - { - "files": [ - "tests/backend/**/*" - ], - "excludedFiles": [ - "tests/backend/specs/**/*" - ], - "rules": { - "mocha/no-exports": "off", - "mocha/no-top-level-hooks": "off" - } - } - ] - }, - { - "files": [ - "tests/frontend/**/*" - ], - "excludedFiles": [ - "**/.eslintrc.js", - "tests/frontend/travis/**/*" - ], - "extends": "etherpad/tests/frontend", - "overrides": [ - { - "files": [ - "tests/frontend/**/*" - ], - "excludedFiles": [ - "tests/frontend/specs/**/*" - ], - "rules": { - "mocha/no-exports": "off", - "mocha/no-top-level-hooks": "off" - } - } - ] - }, - { - "files": [ - "tests/frontend/travis/**/*" - ], - "extends": "etherpad/node" - } - ], - "root": true - }, - "scripts": { - "lint": "eslint ." - }, "engines": { "node": "^10.17.0 || >=11.14.0" } diff --git a/bin/buildDebian.sh b/src/bin/buildDebian.sh similarity index 100% rename from bin/buildDebian.sh rename to src/bin/buildDebian.sh diff --git a/bin/buildForWindows.sh b/src/bin/buildForWindows.sh similarity index 100% rename from bin/buildForWindows.sh rename to src/bin/buildForWindows.sh diff --git a/bin/checkAllPads.js b/src/bin/checkAllPads.js similarity index 91% rename from bin/checkAllPads.js rename to src/bin/checkAllPads.js index 7f8a7140..fe1719b8 100644 --- a/bin/checkAllPads.js +++ b/src/bin/checkAllPads.js @@ -11,13 +11,13 @@ if (process.argv.length !== 2) throw new Error('Use: node bin/checkAllPads.js'); (async () => { // initialize the database - require('ep_etherpad-lite/node/utils/Settings'); - const db = require('ep_etherpad-lite/node/db/DB'); + require('../node/utils/Settings'); + const db = require('../node/db/DB'); await db.init(); // load modules - const Changeset = require('ep_etherpad-lite/static/js/Changeset'); - const padManager = require('ep_etherpad-lite/node/db/PadManager'); + const Changeset = require('../static/js/Changeset'); + const padManager = require('../node/db/PadManager'); let revTestedCount = 0; diff --git a/bin/checkPad.js b/src/bin/checkPad.js similarity index 90% rename from bin/checkPad.js rename to src/bin/checkPad.js index 53a3e10d..becca3a4 100644 --- a/bin/checkPad.js +++ b/src/bin/checkPad.js @@ -15,13 +15,13 @@ let checkRevisionCount = 0; (async () => { // initialize database - require('ep_etherpad-lite/node/utils/Settings'); - const db = require('ep_etherpad-lite/node/db/DB'); + require('../node/utils/Settings'); + const db = require('../node/db/DB'); await db.init(); // load modules - const Changeset = require('ep_etherpad-lite/static/js/Changeset'); - const padManager = require('ep_etherpad-lite/node/db/PadManager'); + const Changeset = require('../static/js/Changeset'); + const padManager = require('../node/db/PadManager'); const exists = await padManager.doesPadExists(padId); if (!exists) throw new Error('Pad does not exist'); diff --git a/bin/checkPadDeltas.js b/src/bin/checkPadDeltas.js similarity index 90% rename from bin/checkPadDeltas.js rename to src/bin/checkPadDeltas.js index 67cc8f15..043187ce 100644 --- a/bin/checkPadDeltas.js +++ b/src/bin/checkPadDeltas.js @@ -13,17 +13,17 @@ if (process.argv.length !== 3) throw new Error('Use: node bin/checkPadDeltas.js const padId = process.argv[2]; const expect = require('../tests/frontend/lib/expect'); -const diff = require('ep_etherpad-lite/node_modules/diff'); +const diff = require('diff'); (async () => { // initialize database - require('ep_etherpad-lite/node/utils/Settings'); - const db = require('ep_etherpad-lite/node/db/DB'); + require('../node/utils/Settings'); + const db = require('../node/db/DB'); await db.init(); // load modules - const Changeset = require('ep_etherpad-lite/static/js/Changeset'); - const padManager = require('ep_etherpad-lite/node/db/PadManager'); + const Changeset = require('../static/js/Changeset'); + const padManager = require('../node/db/PadManager'); const exists = await padManager.doesPadExists(padId); if (!exists) throw new Error('Pad does not exist'); diff --git a/bin/cleanRun.sh b/src/bin/cleanRun.sh similarity index 100% rename from bin/cleanRun.sh rename to src/bin/cleanRun.sh diff --git a/bin/convertSettings.json.template b/src/bin/convertSettings.json.template similarity index 100% rename from bin/convertSettings.json.template rename to src/bin/convertSettings.json.template diff --git a/bin/createRelease.sh b/src/bin/createRelease.sh similarity index 100% rename from bin/createRelease.sh rename to src/bin/createRelease.sh diff --git a/bin/createUserSession.js b/src/bin/createUserSession.js similarity index 90% rename from bin/createUserSession.js rename to src/bin/createUserSession.js index 292fde8b..33dcac18 100644 --- a/bin/createUserSession.js +++ b/src/bin/createUserSession.js @@ -12,13 +12,13 @@ process.on('unhandledRejection', (err) => { throw err; }); const fs = require('fs'); const path = require('path'); const querystring = require('querystring'); -const settings = require('ep_etherpad-lite/node/utils/Settings'); -const supertest = require('ep_etherpad-lite/node_modules/supertest'); +const settings = require('../node/utils/Settings'); +const supertest = require('supertest'); (async () => { const api = supertest(`http://${settings.ip}:${settings.port}`); - const filePath = path.join(__dirname, '../APIKEY.txt'); + const filePath = path.join(__dirname, '../../APIKEY.txt'); const apikey = fs.readFileSync(filePath, {encoding: 'utf-8'}); let res; diff --git a/bin/deb-src/DEBIAN/control b/src/bin/deb-src/DEBIAN/control similarity index 100% rename from bin/deb-src/DEBIAN/control rename to src/bin/deb-src/DEBIAN/control diff --git a/bin/deb-src/DEBIAN/postinst b/src/bin/deb-src/DEBIAN/postinst similarity index 100% rename from bin/deb-src/DEBIAN/postinst rename to src/bin/deb-src/DEBIAN/postinst diff --git a/bin/deb-src/DEBIAN/preinst b/src/bin/deb-src/DEBIAN/preinst similarity index 100% rename from bin/deb-src/DEBIAN/preinst rename to src/bin/deb-src/DEBIAN/preinst diff --git a/bin/deb-src/DEBIAN/prerm b/src/bin/deb-src/DEBIAN/prerm similarity index 100% rename from bin/deb-src/DEBIAN/prerm rename to src/bin/deb-src/DEBIAN/prerm diff --git a/bin/deb-src/sysroot/etc/init/etherpad.conf b/src/bin/deb-src/sysroot/etc/init/etherpad.conf similarity index 100% rename from bin/deb-src/sysroot/etc/init/etherpad.conf rename to src/bin/deb-src/sysroot/etc/init/etherpad.conf diff --git a/bin/debugRun.sh b/src/bin/debugRun.sh similarity index 100% rename from bin/debugRun.sh rename to src/bin/debugRun.sh diff --git a/bin/deleteAllGroupSessions.js b/src/bin/deleteAllGroupSessions.js similarity index 93% rename from bin/deleteAllGroupSessions.js rename to src/bin/deleteAllGroupSessions.js index fd8ba534..c95bf107 100644 --- a/bin/deleteAllGroupSessions.js +++ b/src/bin/deleteAllGroupSessions.js @@ -9,16 +9,16 @@ // unhandled rejection into an uncaught exception, which does cause Node.js to exit. process.on('unhandledRejection', (err) => { throw err; }); -const supertest = require('ep_etherpad-lite/node_modules/supertest'); const path = require('path'); const fs = require('fs'); +const supertest = require('supertest'); // Set a delete counter which will increment on each delete attempt // TODO: Check delete is successful before incrementing let deleteCount = 0; // get the API Key -const filePath = path.join(__dirname, '../APIKEY.txt'); +const filePath = path.join(__dirname, '../../APIKEY.txt'); console.log('Deleting all group sessions, please be patient.'); (async () => { diff --git a/bin/deletePad.js b/src/bin/deletePad.js similarity index 91% rename from bin/deletePad.js rename to src/bin/deletePad.js index ea9aea7e..51ea9963 100644 --- a/bin/deletePad.js +++ b/src/bin/deletePad.js @@ -10,10 +10,11 @@ process.on('unhandledRejection', (err) => { throw err; }); const settings = require('../tests/container/loadSettings').loadSettings(); -const supertest = require('ep_etherpad-lite/node_modules/supertest'); -const api = supertest(`http://${settings.ip}:${settings.port}`); const path = require('path'); const fs = require('fs'); +const supertest = require('supertest'); + +const api = supertest(`http://${settings.ip}:${settings.port}`); if (process.argv.length !== 3) throw new Error('Use: node deletePad.js $PADID'); @@ -21,7 +22,7 @@ if (process.argv.length !== 3) throw new Error('Use: node deletePad.js $PADID'); const padId = process.argv[2]; // get the API Key -const filePath = path.join(__dirname, '../APIKEY.txt'); +const filePath = path.join(__dirname, '../../APIKEY.txt'); const apikey = fs.readFileSync(filePath, {encoding: 'utf-8'}); (async () => { diff --git a/bin/dirty-db-cleaner.py b/src/bin/dirty-db-cleaner.py similarity index 100% rename from bin/dirty-db-cleaner.py rename to src/bin/dirty-db-cleaner.py diff --git a/bin/doc/LICENSE b/src/bin/doc/LICENSE similarity index 100% rename from bin/doc/LICENSE rename to src/bin/doc/LICENSE diff --git a/bin/doc/README.md b/src/bin/doc/README.md similarity index 100% rename from bin/doc/README.md rename to src/bin/doc/README.md diff --git a/bin/doc/generate.js b/src/bin/doc/generate.js similarity index 100% rename from bin/doc/generate.js rename to src/bin/doc/generate.js diff --git a/bin/doc/html.js b/src/bin/doc/html.js similarity index 100% rename from bin/doc/html.js rename to src/bin/doc/html.js diff --git a/bin/doc/json.js b/src/bin/doc/json.js similarity index 100% rename from bin/doc/json.js rename to src/bin/doc/json.js diff --git a/bin/doc/package-lock.json b/src/bin/doc/package-lock.json similarity index 100% rename from bin/doc/package-lock.json rename to src/bin/doc/package-lock.json diff --git a/bin/doc/package.json b/src/bin/doc/package.json similarity index 100% rename from bin/doc/package.json rename to src/bin/doc/package.json diff --git a/bin/extractPadData.js b/src/bin/extractPadData.js similarity index 87% rename from bin/extractPadData.js rename to src/bin/extractPadData.js index dc413a9a..0688245d 100644 --- a/bin/extractPadData.js +++ b/src/bin/extractPadData.js @@ -17,13 +17,13 @@ const padId = process.argv[2]; (async () => { // initialize database - require('ep_etherpad-lite/node/utils/Settings'); - const db = require('ep_etherpad-lite/node/db/DB'); + require('../node/utils/Settings'); + const db = require('../node/db/DB'); await db.init(); // load extra modules - const dirtyDB = require('ep_etherpad-lite/node_modules/dirty'); - const padManager = require('ep_etherpad-lite/node/db/PadManager'); + const dirtyDB = require('dirty'); + const padManager = require('../node/db/PadManager'); // initialize output database const dirty = dirtyDB(`${padId}.db`); diff --git a/bin/fastRun.sh b/src/bin/fastRun.sh similarity index 100% rename from bin/fastRun.sh rename to src/bin/fastRun.sh diff --git a/bin/functions.sh b/src/bin/functions.sh similarity index 100% rename from bin/functions.sh rename to src/bin/functions.sh diff --git a/bin/importSqlFile.js b/src/bin/importSqlFile.js similarity index 92% rename from bin/importSqlFile.js rename to src/bin/importSqlFile.js index 2ba450a7..5a052088 100644 --- a/bin/importSqlFile.js +++ b/src/bin/importSqlFile.js @@ -45,9 +45,9 @@ const unescape = (val) => { (async () => { const fs = require('fs'); - const ueberDB = require('ep_etherpad-lite/node_modules/ueberdb2'); - const settings = require('ep_etherpad-lite/node/utils/Settings'); - const log4js = require('ep_etherpad-lite/node_modules/log4js'); + const log4js = require('log4js'); + const settings = require('../node/utils/Settings'); + const ueberDB = require('ueberdb2'); const dbWrapperSettings = { cache: 0, diff --git a/bin/installDeps.sh b/src/bin/installDeps.sh similarity index 100% rename from bin/installDeps.sh rename to src/bin/installDeps.sh diff --git a/bin/installOnWindows.bat b/src/bin/installOnWindows.bat similarity index 100% rename from bin/installOnWindows.bat rename to src/bin/installOnWindows.bat diff --git a/bin/migrateDirtyDBtoRealDB.js b/src/bin/migrateDirtyDBtoRealDB.js similarity index 84% rename from bin/migrateDirtyDBtoRealDB.js rename to src/bin/migrateDirtyDBtoRealDB.js index bbf34cdd..fbeb0eb4 100644 --- a/bin/migrateDirtyDBtoRealDB.js +++ b/src/bin/migrateDirtyDBtoRealDB.js @@ -12,12 +12,12 @@ process.on('unhandledRejection', (err) => { throw err; }); // It might be necessary to run the script using more memory: // `node --max-old-space-size=4096 bin/migrateDirtyDBtoRealDB.js` - + const dirtyDb = require('dirty'); + const log4js = require('log4js'); + const settings = require('../node/utils/Settings'); + const ueberDB = require('ueberdb2'); const util = require('util'); - const settings = require('ep_etherpad-lite/node/utils/Settings'); - const dirtyDb = require('ep_etherpad-lite/node_modules/dirty'); - const ueberDB = require('ep_etherpad-lite/node_modules/ueberdb2'); - const log4js = require('ep_etherpad-lite/node_modules/log4js'); + const dbWrapperSettings = { cache: '0', // The cache slows things down when you're mostly writing. writeInterval: 0, // Write directly to the database, don't buffer @@ -30,7 +30,7 @@ process.on('unhandledRejection', (err) => { throw err; }); await db.init(); console.log('Waiting for dirtyDB to parse its file.'); - const dirty = dirtyDb(`${__dirname}/../var/dirty.db`); + const dirty = dirtyDb(`${__dirname}/../../var/dirty.db`); const length = await new Promise((resolve) => { dirty.once('load', resolve); }); console.log(`Found ${length} records, processing now.`); diff --git a/bin/plugins/README.md b/src/bin/plugins/README.md similarity index 100% rename from bin/plugins/README.md rename to src/bin/plugins/README.md diff --git a/bin/plugins/checkPlugin.js b/src/bin/plugins/checkPlugin.js similarity index 99% rename from bin/plugins/checkPlugin.js rename to src/bin/plugins/checkPlugin.js index 0b736af8..5bf35dd0 100755 --- a/bin/plugins/checkPlugin.js +++ b/src/bin/plugins/checkPlugin.js @@ -429,7 +429,7 @@ fs.readdir(pluginPath, (err, rootFiles) => { // The ep_etherpad-lite peer dep must be installed last otherwise `npm install` will nuke it. An // absolute path to etherpad-lite/src is used here so that pluginPath can be a symlink. execSync( - `${npmInstall} --no-save ep_etherpad-lite@file:${__dirname}/../../src`, {stdio: 'inherit'}); + `${npmInstall} --no-save ep_etherpad-lite@file:${__dirname}/../../`, {stdio: 'inherit'}); // linting begins try { diff --git a/bin/plugins/getCorePlugins.sh b/src/bin/plugins/getCorePlugins.sh similarity index 100% rename from bin/plugins/getCorePlugins.sh rename to src/bin/plugins/getCorePlugins.sh diff --git a/bin/plugins/lib/CONTRIBUTING.md b/src/bin/plugins/lib/CONTRIBUTING.md similarity index 100% rename from bin/plugins/lib/CONTRIBUTING.md rename to src/bin/plugins/lib/CONTRIBUTING.md diff --git a/bin/plugins/lib/LICENSE.md b/src/bin/plugins/lib/LICENSE.md similarity index 100% rename from bin/plugins/lib/LICENSE.md rename to src/bin/plugins/lib/LICENSE.md diff --git a/bin/plugins/lib/README.md b/src/bin/plugins/lib/README.md similarity index 100% rename from bin/plugins/lib/README.md rename to src/bin/plugins/lib/README.md diff --git a/bin/plugins/lib/backend-tests.yml b/src/bin/plugins/lib/backend-tests.yml similarity index 100% rename from bin/plugins/lib/backend-tests.yml rename to src/bin/plugins/lib/backend-tests.yml diff --git a/bin/plugins/lib/gitignore b/src/bin/plugins/lib/gitignore similarity index 100% rename from bin/plugins/lib/gitignore rename to src/bin/plugins/lib/gitignore diff --git a/bin/plugins/lib/npmpublish.yml b/src/bin/plugins/lib/npmpublish.yml similarity index 100% rename from bin/plugins/lib/npmpublish.yml rename to src/bin/plugins/lib/npmpublish.yml diff --git a/bin/plugins/lib/travis.yml b/src/bin/plugins/lib/travis.yml similarity index 100% rename from bin/plugins/lib/travis.yml rename to src/bin/plugins/lib/travis.yml diff --git a/bin/plugins/reTestAllPlugins.sh b/src/bin/plugins/reTestAllPlugins.sh similarity index 100% rename from bin/plugins/reTestAllPlugins.sh rename to src/bin/plugins/reTestAllPlugins.sh diff --git a/bin/plugins/updateAllPluginsScript.sh b/src/bin/plugins/updateAllPluginsScript.sh similarity index 100% rename from bin/plugins/updateAllPluginsScript.sh rename to src/bin/plugins/updateAllPluginsScript.sh diff --git a/bin/plugins/updateCorePlugins.sh b/src/bin/plugins/updateCorePlugins.sh similarity index 100% rename from bin/plugins/updateCorePlugins.sh rename to src/bin/plugins/updateCorePlugins.sh diff --git a/bin/rebuildPad.js b/src/bin/rebuildPad.js similarity index 90% rename from bin/rebuildPad.js rename to src/bin/rebuildPad.js index a8daf728..bda611f7 100644 --- a/bin/rebuildPad.js +++ b/src/bin/rebuildPad.js @@ -18,11 +18,11 @@ const newRevHead = process.argv[3]; const newPadId = process.argv[4] || `${padId}-rebuilt`; (async () => { - const db = require('ep_etherpad-lite/node/db/DB'); + const db = require('../node/db/DB'); await db.init(); - const PadManager = require('ep_etherpad-lite/node/db/PadManager'); - const Pad = require('ep_etherpad-lite/node/db/Pad').Pad; + const PadManager = require('../node/db/PadManager'); + const Pad = require('../node/db/Pad').Pad; // Validate the newPadId if specified and that a pad with that ID does // not already exist to avoid overwriting it. if (!PadManager.isValidPadId(newPadId)) { @@ -43,8 +43,8 @@ const newPadId = process.argv[4] || `${padId}-rebuilt`; })); // Rebuild Pad from revisions up to and including the new revision head - const AuthorManager = require('ep_etherpad-lite/node/db/AuthorManager'); - const Changeset = require('ep_etherpad-lite/static/js/Changeset'); + const AuthorManager = require('../node/db/AuthorManager'); + const Changeset = require('../static/js/Changeset'); // Author attributes are derived from changesets, but there can also be // non-author attributes with specific mappings that changesets depend on // and, AFAICT, cannot be recreated any other way diff --git a/bin/release.js b/src/bin/release.js similarity index 97% rename from bin/release.js rename to src/bin/release.js index f06679e4..b12513d6 100644 --- a/bin/release.js +++ b/src/bin/release.js @@ -6,7 +6,7 @@ process.on('unhandledRejection', (err) => { throw err; }); const fs = require('fs'); const childProcess = require('child_process'); -const semver = require('ep_etherpad-lite/node_modules/semver'); +const semver = require('semver'); /* diff --git a/bin/repairPad.js b/src/bin/repairPad.js similarity index 90% rename from bin/repairPad.js rename to src/bin/repairPad.js index aef9102a..9aa20051 100644 --- a/bin/repairPad.js +++ b/src/bin/repairPad.js @@ -19,12 +19,12 @@ let valueCount = 0; (async () => { // initialize database - require('ep_etherpad-lite/node/utils/Settings'); - const db = require('ep_etherpad-lite/node/db/DB'); + require('../node/utils/Settings'); + const db = require('../node/db/DB'); await db.init(); // get the pad - const padManager = require('ep_etherpad-lite/node/db/PadManager'); + const padManager = require('../node/db/PadManager'); const pad = await padManager.getPad(padId); // accumulate the required keys diff --git a/bin/run.sh b/src/bin/run.sh similarity index 100% rename from bin/run.sh rename to src/bin/run.sh diff --git a/bin/safeRun.sh b/src/bin/safeRun.sh similarity index 100% rename from bin/safeRun.sh rename to src/bin/safeRun.sh diff --git a/bin/updatePlugins.sh b/src/bin/updatePlugins.sh similarity index 100% rename from bin/updatePlugins.sh rename to src/bin/updatePlugins.sh diff --git a/src/package.json b/src/package.json index 583c924d..bf61feaf 100644 --- a/src/package.json +++ b/src/package.json @@ -104,7 +104,8 @@ "/static/js/gritter.js", "/static/js/html10n.js", "/static/js/jquery.js", - "/static/js/vendors/nice-select.js" + "/static/js/vendors/nice-select.js", + "/tests/frontend/lib/" ], "overrides": [ { @@ -118,7 +119,8 @@ "**/*" ], "excludedFiles": [ - "**/.eslintrc.js" + "**/.eslintrc.js", + "tests/frontend/**/*" ], "extends": "etherpad/node" }, @@ -133,6 +135,74 @@ "env": { "shared-node-browser": true } + }, + { + "files": [ + "tests/**/*" + ], + "excludedFiles": [ + "**/.eslintrc.js", + "tests/frontend/travis/**/*", + "tests/ratelimit/**/*" + ], + "extends": "etherpad/tests", + "rules": { + "mocha/no-exports": "off", + "mocha/no-top-level-hooks": "off" + } + }, + { + "files": [ + "tests/backend/**/*" + ], + "excludedFiles": [ + "**/.eslintrc.js" + ], + "extends": "etherpad/tests/backend", + "overrides": [ + { + "files": [ + "tests/backend/**/*" + ], + "excludedFiles": [ + "tests/backend/specs/**/*" + ], + "rules": { + "mocha/no-exports": "off", + "mocha/no-top-level-hooks": "off" + } + } + ] + }, + { + "files": [ + "tests/frontend/**/*" + ], + "excludedFiles": [ + "**/.eslintrc.js", + "tests/frontend/travis/**/*" + ], + "extends": "etherpad/tests/frontend", + "overrides": [ + { + "files": [ + "tests/frontend/**/*" + ], + "excludedFiles": [ + "tests/frontend/specs/**/*" + ], + "rules": { + "mocha/no-exports": "off", + "mocha/no-top-level-hooks": "off" + } + } + ] + }, + { + "files": [ + "tests/frontend/travis/**/*" + ], + "extends": "etherpad/node" } ], "root": true diff --git a/src/tests b/src/tests deleted file mode 120000 index 6dd24e02..00000000 --- a/src/tests +++ /dev/null @@ -1 +0,0 @@ -../tests \ No newline at end of file diff --git a/tests/README.md b/src/tests/README.md similarity index 100% rename from tests/README.md rename to src/tests/README.md diff --git a/tests/backend/common.js b/src/tests/backend/common.js similarity index 82% rename from tests/backend/common.js rename to src/tests/backend/common.js index 642f83af..3fe80de3 100644 --- a/tests/backend/common.js +++ b/src/tests/backend/common.js @@ -1,12 +1,12 @@ 'use strict'; -const apiHandler = require('ep_etherpad-lite/node/handler/APIHandler'); -const log4js = require('ep_etherpad-lite/node_modules/log4js'); +const apiHandler = require('../../node/handler/APIHandler'); +const log4js = require('log4js'); const process = require('process'); -const server = require('ep_etherpad-lite/node/server'); -const settings = require('ep_etherpad-lite/node/utils/Settings'); -const supertest = require('ep_etherpad-lite/node_modules/supertest'); -const webaccess = require('ep_etherpad-lite/node/hooks/express/webaccess'); +const server = require('../../node/server'); +const settings = require('../../node/utils/Settings'); +const supertest = require('supertest'); +const webaccess = require('../../node/hooks/express/webaccess'); const backups = {}; let inited = false; diff --git a/tests/backend/fuzzImportTest.js b/src/tests/backend/fuzzImportTest.js similarity index 96% rename from tests/backend/fuzzImportTest.js rename to src/tests/backend/fuzzImportTest.js index eb5a17d1..bdcc92f1 100644 --- a/tests/backend/fuzzImportTest.js +++ b/src/tests/backend/fuzzImportTest.js @@ -3,10 +3,10 @@ * Usage: node fuzzImportTest.js */ const common = require('./common'); -const settings = require(`${__dirname}/loadSettings`).loadSettings(); const host = `http://${settings.ip}:${settings.port}`; const request = require('request'); const froth = require('mocha-froth'); +const settings = require('../container/loadSettings').loadSettings(); const apiKey = common.apiKey; const apiVersion = 1; diff --git a/tests/backend/specs/api/api.js b/src/tests/backend/specs/api/api.js similarity index 88% rename from tests/backend/specs/api/api.js rename to src/tests/backend/specs/api/api.js index de009c55..359bb3f6 100644 --- a/tests/backend/specs/api/api.js +++ b/src/tests/backend/specs/api/api.js @@ -7,12 +7,11 @@ */ const common = require('../../common'); -const supertest = require(`${__dirname}/../../../../src/node_modules/supertest`); -const settings = require(`${__dirname}/../../../../src/node/utils/Settings`); +const settings = require('../../../../node/utils/Settings'); +const supertest = require('supertest'); +const validateOpenAPI = require('openapi-schema-validation').validate; + const api = supertest(`http://${settings.ip}:${settings.port}`); - -const validateOpenAPI = require(`${__dirname}/../../../../src/node_modules/openapi-schema-validation`).validate; - const apiKey = common.apiKey; let apiVersion = 1; diff --git a/tests/backend/specs/api/characterEncoding.js b/src/tests/backend/specs/api/characterEncoding.js similarity index 95% rename from tests/backend/specs/api/characterEncoding.js rename to src/tests/backend/specs/api/characterEncoding.js index 94c22307..9c1e294e 100644 --- a/tests/backend/specs/api/characterEncoding.js +++ b/src/tests/backend/specs/api/characterEncoding.js @@ -7,11 +7,11 @@ */ const common = require('../../common'); -const supertest = require(`${__dirname}/../../../../src/node_modules/supertest`); const fs = require('fs'); -const settings = require(`${__dirname}/../../../../src/node/utils/Settings`); -const api = supertest(`http://${settings.ip}:${settings.port}`); +const settings = require('../../../../node/utils/Settings'); +const supertest = require('supertest'); +const api = supertest(`http://${settings.ip}:${settings.port}`); const apiKey = common.apiKey; let apiVersion = 1; const testPadId = makeid(); diff --git a/tests/backend/specs/api/chat.js b/src/tests/backend/specs/api/chat.js similarity index 95% rename from tests/backend/specs/api/chat.js rename to src/tests/backend/specs/api/chat.js index d51dbfae..e2ddf054 100644 --- a/tests/backend/specs/api/chat.js +++ b/src/tests/backend/specs/api/chat.js @@ -1,8 +1,6 @@ -function m(mod) { return `${__dirname}/../../../../src/${mod}`; } - const common = require('../../common'); -const settings = require(m('node/utils/Settings')); -const supertest = require(m('node_modules/supertest')); +const settings = require('../../../../node/utils/Settings'); +const supertest = require('supertest'); const api = supertest(`http://${settings.ip}:${settings.port}`); const apiKey = common.apiKey; diff --git a/tests/backend/specs/api/emojis.html b/src/tests/backend/specs/api/emojis.html similarity index 100% rename from tests/backend/specs/api/emojis.html rename to src/tests/backend/specs/api/emojis.html diff --git a/tests/backend/specs/api/fuzzImportTest.js b/src/tests/backend/specs/api/fuzzImportTest.js similarity index 86% rename from tests/backend/specs/api/fuzzImportTest.js rename to src/tests/backend/specs/api/fuzzImportTest.js index 4c612101..85f4c81f 100644 --- a/tests/backend/specs/api/fuzzImportTest.js +++ b/src/tests/backend/specs/api/fuzzImportTest.js @@ -3,10 +3,11 @@ */ /* const common = require('../../common'); -const settings = require(__dirname+'/../../../../tests/container/loadSettings.js').loadSettings(); +const froth = require('mocha-froth'); +const request = require('request'); +const settings = require('../../../container/loadSettings.js').loadSettings(); + const host = "http://" + settings.ip + ":" + settings.port; -const request = require(__dirname+'/../../../../src/node_modules/request'); -const froth = require(__dirname+'/../../../../src/node_modules/mocha-froth'); const apiKey = common.apiKey; var apiVersion = 1; diff --git a/tests/backend/specs/api/image.png b/src/tests/backend/specs/api/image.png similarity index 100% rename from tests/backend/specs/api/image.png rename to src/tests/backend/specs/api/image.png diff --git a/tests/backend/specs/api/importexport.js b/src/tests/backend/specs/api/importexport.js similarity index 99% rename from tests/backend/specs/api/importexport.js rename to src/tests/backend/specs/api/importexport.js index 1e446153..4cdb5b8f 100644 --- a/tests/backend/specs/api/importexport.js +++ b/src/tests/backend/specs/api/importexport.js @@ -8,7 +8,7 @@ const common = require('../../common'); const settings = require('../../../container/loadSettings.js').loadSettings(); -const supertest = require('ep_etherpad-lite/node_modules/supertest'); +const supertest = require('supertest'); const api = supertest(`http://${settings.ip}:${settings.port}`); const apiKey = common.apiKey; diff --git a/tests/backend/specs/api/importexportGetPost.js b/src/tests/backend/specs/api/importexportGetPost.js similarity index 97% rename from tests/backend/specs/api/importexportGetPost.js rename to src/tests/backend/specs/api/importexportGetPost.js index 5fec1015..0a27f70a 100644 --- a/tests/backend/specs/api/importexportGetPost.js +++ b/src/tests/backend/specs/api/importexportGetPost.js @@ -6,11 +6,11 @@ const assert = require('assert').strict; const common = require('../../common'); -const superagent = require('ep_etherpad-lite/node_modules/superagent'); const fs = require('fs'); -const settings = require('ep_etherpad-lite/node/utils/Settings'); -const padManager = require('ep_etherpad-lite/node/db/PadManager'); -const plugins = require('ep_etherpad-lite/static/js/pluginfw/plugin_defs'); +const settings = require('../../../../node/utils/Settings'); +const superagent = require('superagent'); +const padManager = require('../../../../node/db/PadManager'); +const plugins = require('../../../../static/js/pluginfw/plugin_defs'); const padText = fs.readFileSync('../tests/backend/specs/api/test.txt'); const etherpadDoc = fs.readFileSync('../tests/backend/specs/api/test.etherpad'); diff --git a/tests/backend/specs/api/instance.js b/src/tests/backend/specs/api/instance.js similarity index 91% rename from tests/backend/specs/api/instance.js rename to src/tests/backend/specs/api/instance.js index 7da967ed..833c75d5 100644 --- a/tests/backend/specs/api/instance.js +++ b/src/tests/backend/specs/api/instance.js @@ -4,8 +4,9 @@ * Section "GLOBAL FUNCTIONS" in src/node/db/API.js */ const common = require('../../common'); -const supertest = require(`${__dirname}/../../../../src/node_modules/supertest`); -const settings = require(`${__dirname}/../../../../src/node/utils/Settings`); +const settings = require('../../../../node/utils/Settings'); +const supertest = require('supertest'); + const api = supertest(`http://${settings.ip}:${settings.port}`); const apiKey = common.apiKey; diff --git a/tests/backend/specs/api/pad.js b/src/tests/backend/specs/api/pad.js similarity index 99% rename from tests/backend/specs/api/pad.js rename to src/tests/backend/specs/api/pad.js index a0bbec62..d0280f78 100644 --- a/tests/backend/specs/api/pad.js +++ b/src/tests/backend/specs/api/pad.js @@ -5,11 +5,12 @@ * TODO: unify those two files, and merge in a single one. */ +const async = require('async'); const common = require('../../common'); -const supertest = require(`${__dirname}/../../../../src/node_modules/supertest`); -const settings = require(`${__dirname}/../../../../src/node/utils/Settings`); +const settings = require('../../../../node/utils/Settings'); +const supertest = require('supertest'); + const api = supertest(`http://${settings.ip}:${settings.port}`); -const async = require(`${__dirname}/../../../../src/node_modules/async`); const apiKey = common.apiKey; let apiVersion = 1; diff --git a/tests/backend/specs/api/sessionsAndGroups.js b/src/tests/backend/specs/api/sessionsAndGroups.js similarity index 98% rename from tests/backend/specs/api/sessionsAndGroups.js rename to src/tests/backend/specs/api/sessionsAndGroups.js index 65532472..16bbca00 100644 --- a/tests/backend/specs/api/sessionsAndGroups.js +++ b/src/tests/backend/specs/api/sessionsAndGroups.js @@ -1,7 +1,8 @@ const assert = require('assert').strict; const common = require('../../common'); -const supertest = require(`${__dirname}/../../../../src/node_modules/supertest`); -const settings = require(`${__dirname}/../../../../src/node/utils/Settings`); +const settings = require('../../../../node/utils/Settings'); +const supertest = require('supertest'); + const api = supertest(`http://${settings.ip}:${settings.port}`); const apiKey = common.apiKey; diff --git a/tests/backend/specs/api/test.doc b/src/tests/backend/specs/api/test.doc similarity index 100% rename from tests/backend/specs/api/test.doc rename to src/tests/backend/specs/api/test.doc diff --git a/tests/backend/specs/api/test.docx b/src/tests/backend/specs/api/test.docx similarity index 100% rename from tests/backend/specs/api/test.docx rename to src/tests/backend/specs/api/test.docx diff --git a/tests/backend/specs/api/test.etherpad b/src/tests/backend/specs/api/test.etherpad similarity index 100% rename from tests/backend/specs/api/test.etherpad rename to src/tests/backend/specs/api/test.etherpad diff --git a/tests/backend/specs/api/test.odt b/src/tests/backend/specs/api/test.odt similarity index 100% rename from tests/backend/specs/api/test.odt rename to src/tests/backend/specs/api/test.odt diff --git a/tests/backend/specs/api/test.pdf b/src/tests/backend/specs/api/test.pdf similarity index 100% rename from tests/backend/specs/api/test.pdf rename to src/tests/backend/specs/api/test.pdf diff --git a/tests/backend/specs/api/test.txt b/src/tests/backend/specs/api/test.txt similarity index 100% rename from tests/backend/specs/api/test.txt rename to src/tests/backend/specs/api/test.txt diff --git a/tests/backend/specs/api/tidy.js b/src/tests/backend/specs/api/tidy.js similarity index 87% rename from tests/backend/specs/api/tidy.js rename to src/tests/backend/specs/api/tidy.js index 98f726ac..aa07aa0b 100644 --- a/tests/backend/specs/api/tidy.js +++ b/src/tests/backend/specs/api/tidy.js @@ -6,16 +6,16 @@ const fs = require('fs'); const path = require('path'); let TidyHtml; let Settings; -const npm = require('ep_etherpad-lite/node_modules/npm/lib/npm.js'); -const nodeify = require('ep_etherpad-lite/node_modules/nodeify'); +const npm = require('npm/lib/npm.js'); +const nodeify = require('nodeify'); describe(__filename, function () { describe('tidyHtml', function () { before(function (done) { npm.load({}, (err) => { assert.ok(!err); - TidyHtml = require('ep_etherpad-lite/node/utils/TidyHtml'); - Settings = require('ep_etherpad-lite/node/utils/Settings'); + TidyHtml = require('../../../../node/utils/TidyHtml'); + Settings = require('../../../../node/utils/Settings'); return done(); }); }); diff --git a/tests/backend/specs/caching_middleware.js b/src/tests/backend/specs/caching_middleware.js similarity index 98% rename from tests/backend/specs/caching_middleware.js rename to src/tests/backend/specs/caching_middleware.js index e8e14a5c..151bb628 100644 --- a/tests/backend/specs/caching_middleware.js +++ b/src/tests/backend/specs/caching_middleware.js @@ -5,10 +5,10 @@ */ const common = require('../common'); -const settings = require('../../../src/node/utils/Settings'); const assert = require('assert').strict; const url = require('url'); const queryString = require('querystring'); +const settings = require('../../../node/utils/Settings'); let agent; diff --git a/tests/backend/specs/contentcollector.js b/src/tests/backend/specs/contentcollector.js similarity index 98% rename from tests/backend/specs/contentcollector.js rename to src/tests/backend/specs/contentcollector.js index 62bdf5d5..f9b183f9 100644 --- a/tests/backend/specs/contentcollector.js +++ b/src/tests/backend/specs/contentcollector.js @@ -9,10 +9,10 @@ * If you add tests here, please also add them to importexport.js */ -const AttributePool = require('ep_etherpad-lite/static/js/AttributePool'); +const AttributePool = require('../../../static/js/AttributePool'); const assert = require('assert').strict; -const cheerio = require('ep_etherpad-lite/node_modules/cheerio'); -const contentcollector = require('ep_etherpad-lite/static/js/contentcollector'); +const cheerio = require('cheerio'); +const contentcollector = require('../../../static/js/contentcollector'); const tests = { nestedLi: { diff --git a/tests/backend/specs/hooks.js b/src/tests/backend/specs/hooks.js similarity index 99% rename from tests/backend/specs/hooks.js rename to src/tests/backend/specs/hooks.js index 865cb132..47d45ae6 100644 --- a/tests/backend/specs/hooks.js +++ b/src/tests/backend/specs/hooks.js @@ -1,9 +1,9 @@ 'use strict'; const assert = require('assert').strict; -const hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks'); -const plugins = require('ep_etherpad-lite/static/js/pluginfw/plugin_defs'); -const sinon = require('ep_etherpad-lite/node_modules/sinon'); +const hooks = require('../../../static/js/pluginfw/hooks'); +const plugins = require('../../../static/js/pluginfw/plugin_defs'); +const sinon = require('sinon'); describe(__filename, function () { const hookName = 'testHook'; diff --git a/tests/backend/specs/promises.js b/src/tests/backend/specs/promises.js similarity index 95% rename from tests/backend/specs/promises.js rename to src/tests/backend/specs/promises.js index 02c656d4..ad0c1ad9 100644 --- a/tests/backend/specs/promises.js +++ b/src/tests/backend/specs/promises.js @@ -1,7 +1,5 @@ -function m(mod) { return `${__dirname}/../../../src/${mod}`; } - const assert = require('assert').strict; -const promises = require(m('node/utils/promises')); +const promises = require('../../../node/utils/promises'); describe(__filename, function () { describe('promises.timesLimit', function () { diff --git a/tests/backend/specs/socketio.js b/src/tests/backend/specs/socketio.js similarity index 97% rename from tests/backend/specs/socketio.js rename to src/tests/backend/specs/socketio.js index 6f3af2ee..c6d6db72 100644 --- a/tests/backend/specs/socketio.js +++ b/src/tests/backend/specs/socketio.js @@ -2,11 +2,11 @@ const assert = require('assert').strict; const common = require('../common'); -const io = require('ep_etherpad-lite/node_modules/socket.io-client'); -const padManager = require('ep_etherpad-lite/node/db/PadManager'); -const plugins = require('ep_etherpad-lite/static/js/pluginfw/plugin_defs'); -const setCookieParser = require('ep_etherpad-lite/node_modules/set-cookie-parser'); -const settings = require('ep_etherpad-lite/node/utils/Settings'); +const io = require('socket.io-client'); +const padManager = require('../../../node/db/PadManager'); +const plugins = require('../../../static/js/pluginfw/plugin_defs'); +const setCookieParser = require('set-cookie-parser'); +const settings = require('../../../node/utils/Settings'); const logger = common.logger; diff --git a/tests/backend/specs/specialpages.js b/src/tests/backend/specs/specialpages.js similarity index 91% rename from tests/backend/specs/specialpages.js rename to src/tests/backend/specs/specialpages.js index 3e385f6e..571ca6d3 100644 --- a/tests/backend/specs/specialpages.js +++ b/src/tests/backend/specs/specialpages.js @@ -1,5 +1,5 @@ const common = require('../common'); -const settings = require('ep_etherpad-lite/node/utils/Settings'); +const settings = require('../../../node/utils/Settings'); describe(__filename, function () { let agent; diff --git a/tests/backend/specs/webaccess.js b/src/tests/backend/specs/webaccess.js similarity index 99% rename from tests/backend/specs/webaccess.js rename to src/tests/backend/specs/webaccess.js index b82a5f01..8079d6a2 100644 --- a/tests/backend/specs/webaccess.js +++ b/src/tests/backend/specs/webaccess.js @@ -2,8 +2,8 @@ const assert = require('assert').strict; const common = require('../common'); -const plugins = require('ep_etherpad-lite/static/js/pluginfw/plugin_defs'); -const settings = require('ep_etherpad-lite/node/utils/Settings'); +const plugins = require('../../../static/js/pluginfw/plugin_defs'); +const settings = require('../../../node/utils/Settings'); describe(__filename, function () { let agent; diff --git a/tests/container/loadSettings.js b/src/tests/container/loadSettings.js similarity index 86% rename from tests/container/loadSettings.js rename to src/tests/container/loadSettings.js index 7317f802..b59ff016 100644 --- a/tests/container/loadSettings.js +++ b/src/tests/container/loadSettings.js @@ -12,11 +12,11 @@ * back to a default) */ -const jsonminify = require(`${__dirname}/../../src/node_modules/jsonminify`); const fs = require('fs'); +const jsonminify = require('jsonminify'); function loadSettings() { - let settingsStr = fs.readFileSync(`${__dirname}/../../settings.json.docker`).toString(); + let settingsStr = fs.readFileSync(`${__dirname}/../../../settings.json.docker`).toString(); // try to parse the settings try { if (settingsStr) { diff --git a/tests/container/specs/api/pad.js b/src/tests/container/specs/api/pad.js similarity index 85% rename from tests/container/specs/api/pad.js rename to src/tests/container/specs/api/pad.js index 6aeb8670..04067f0e 100644 --- a/tests/container/specs/api/pad.js +++ b/src/tests/container/specs/api/pad.js @@ -5,10 +5,10 @@ * TODO: unify those two files, and merge in a single one. */ -const supertest = require(`${__dirname}/../../../../src/node_modules/supertest`); -const settings = require(`${__dirname}/../../loadSettings`).loadSettings(); -const api = supertest(`http://${settings.ip}:${settings.port}`); +const settings = require('../../loadSettings').loadSettings(); +const supertest = require('supertest'); +const api = supertest(`http://${settings.ip}:${settings.port}`); const apiVersion = 1; describe('Connectivity', function () { diff --git a/tests/frontend/helper.js b/src/tests/frontend/helper.js similarity index 100% rename from tests/frontend/helper.js rename to src/tests/frontend/helper.js diff --git a/tests/frontend/helper/methods.js b/src/tests/frontend/helper/methods.js similarity index 100% rename from tests/frontend/helper/methods.js rename to src/tests/frontend/helper/methods.js diff --git a/tests/frontend/helper/ui.js b/src/tests/frontend/helper/ui.js similarity index 100% rename from tests/frontend/helper/ui.js rename to src/tests/frontend/helper/ui.js diff --git a/tests/frontend/index.html b/src/tests/frontend/index.html similarity index 100% rename from tests/frontend/index.html rename to src/tests/frontend/index.html diff --git a/tests/frontend/lib/expect.js b/src/tests/frontend/lib/expect.js similarity index 100% rename from tests/frontend/lib/expect.js rename to src/tests/frontend/lib/expect.js diff --git a/tests/frontend/lib/mocha.js b/src/tests/frontend/lib/mocha.js similarity index 100% rename from tests/frontend/lib/mocha.js rename to src/tests/frontend/lib/mocha.js diff --git a/tests/frontend/lib/sendkeys.js b/src/tests/frontend/lib/sendkeys.js similarity index 100% rename from tests/frontend/lib/sendkeys.js rename to src/tests/frontend/lib/sendkeys.js diff --git a/tests/frontend/lib/underscore.js b/src/tests/frontend/lib/underscore.js similarity index 100% rename from tests/frontend/lib/underscore.js rename to src/tests/frontend/lib/underscore.js diff --git a/tests/frontend/runner.css b/src/tests/frontend/runner.css similarity index 100% rename from tests/frontend/runner.css rename to src/tests/frontend/runner.css diff --git a/tests/frontend/runner.js b/src/tests/frontend/runner.js similarity index 100% rename from tests/frontend/runner.js rename to src/tests/frontend/runner.js diff --git a/tests/frontend/specs/alphabet.js b/src/tests/frontend/specs/alphabet.js similarity index 100% rename from tests/frontend/specs/alphabet.js rename to src/tests/frontend/specs/alphabet.js diff --git a/tests/frontend/specs/authorship_of_editions.js b/src/tests/frontend/specs/authorship_of_editions.js similarity index 100% rename from tests/frontend/specs/authorship_of_editions.js rename to src/tests/frontend/specs/authorship_of_editions.js diff --git a/tests/frontend/specs/bold.js b/src/tests/frontend/specs/bold.js similarity index 100% rename from tests/frontend/specs/bold.js rename to src/tests/frontend/specs/bold.js diff --git a/tests/frontend/specs/caret.js b/src/tests/frontend/specs/caret.js similarity index 100% rename from tests/frontend/specs/caret.js rename to src/tests/frontend/specs/caret.js diff --git a/tests/frontend/specs/change_user_color.js b/src/tests/frontend/specs/change_user_color.js similarity index 100% rename from tests/frontend/specs/change_user_color.js rename to src/tests/frontend/specs/change_user_color.js diff --git a/tests/frontend/specs/change_user_name.js b/src/tests/frontend/specs/change_user_name.js similarity index 100% rename from tests/frontend/specs/change_user_name.js rename to src/tests/frontend/specs/change_user_name.js diff --git a/tests/frontend/specs/chat.js b/src/tests/frontend/specs/chat.js similarity index 100% rename from tests/frontend/specs/chat.js rename to src/tests/frontend/specs/chat.js diff --git a/tests/frontend/specs/chat_load_messages.js b/src/tests/frontend/specs/chat_load_messages.js similarity index 100% rename from tests/frontend/specs/chat_load_messages.js rename to src/tests/frontend/specs/chat_load_messages.js diff --git a/tests/frontend/specs/clear_authorship_colors.js b/src/tests/frontend/specs/clear_authorship_colors.js similarity index 100% rename from tests/frontend/specs/clear_authorship_colors.js rename to src/tests/frontend/specs/clear_authorship_colors.js diff --git a/tests/frontend/specs/delete.js b/src/tests/frontend/specs/delete.js similarity index 100% rename from tests/frontend/specs/delete.js rename to src/tests/frontend/specs/delete.js diff --git a/tests/frontend/specs/drag_and_drop.js b/src/tests/frontend/specs/drag_and_drop.js similarity index 100% rename from tests/frontend/specs/drag_and_drop.js rename to src/tests/frontend/specs/drag_and_drop.js diff --git a/tests/frontend/specs/embed_value.js b/src/tests/frontend/specs/embed_value.js similarity index 100% rename from tests/frontend/specs/embed_value.js rename to src/tests/frontend/specs/embed_value.js diff --git a/tests/frontend/specs/enter.js b/src/tests/frontend/specs/enter.js similarity index 100% rename from tests/frontend/specs/enter.js rename to src/tests/frontend/specs/enter.js diff --git a/tests/frontend/specs/font_type.js b/src/tests/frontend/specs/font_type.js similarity index 100% rename from tests/frontend/specs/font_type.js rename to src/tests/frontend/specs/font_type.js diff --git a/tests/frontend/specs/helper.js b/src/tests/frontend/specs/helper.js similarity index 100% rename from tests/frontend/specs/helper.js rename to src/tests/frontend/specs/helper.js diff --git a/tests/frontend/specs/importexport.js b/src/tests/frontend/specs/importexport.js similarity index 100% rename from tests/frontend/specs/importexport.js rename to src/tests/frontend/specs/importexport.js diff --git a/tests/frontend/specs/importindents.js b/src/tests/frontend/specs/importindents.js similarity index 100% rename from tests/frontend/specs/importindents.js rename to src/tests/frontend/specs/importindents.js diff --git a/tests/frontend/specs/indentation.js b/src/tests/frontend/specs/indentation.js similarity index 100% rename from tests/frontend/specs/indentation.js rename to src/tests/frontend/specs/indentation.js diff --git a/tests/frontend/specs/italic.js b/src/tests/frontend/specs/italic.js similarity index 100% rename from tests/frontend/specs/italic.js rename to src/tests/frontend/specs/italic.js diff --git a/tests/frontend/specs/language.js b/src/tests/frontend/specs/language.js similarity index 100% rename from tests/frontend/specs/language.js rename to src/tests/frontend/specs/language.js diff --git a/tests/frontend/specs/multiple_authors_clear_authorship_colors.js b/src/tests/frontend/specs/multiple_authors_clear_authorship_colors.js similarity index 100% rename from tests/frontend/specs/multiple_authors_clear_authorship_colors.js rename to src/tests/frontend/specs/multiple_authors_clear_authorship_colors.js diff --git a/tests/frontend/specs/ordered_list.js b/src/tests/frontend/specs/ordered_list.js similarity index 100% rename from tests/frontend/specs/ordered_list.js rename to src/tests/frontend/specs/ordered_list.js diff --git a/tests/frontend/specs/pad_modal.js b/src/tests/frontend/specs/pad_modal.js similarity index 100% rename from tests/frontend/specs/pad_modal.js rename to src/tests/frontend/specs/pad_modal.js diff --git a/tests/frontend/specs/redo.js b/src/tests/frontend/specs/redo.js similarity index 100% rename from tests/frontend/specs/redo.js rename to src/tests/frontend/specs/redo.js diff --git a/tests/frontend/specs/responsiveness.js b/src/tests/frontend/specs/responsiveness.js similarity index 100% rename from tests/frontend/specs/responsiveness.js rename to src/tests/frontend/specs/responsiveness.js diff --git a/tests/frontend/specs/scrollTo.js b/src/tests/frontend/specs/scrollTo.js similarity index 100% rename from tests/frontend/specs/scrollTo.js rename to src/tests/frontend/specs/scrollTo.js diff --git a/tests/frontend/specs/select_formatting_buttons.js b/src/tests/frontend/specs/select_formatting_buttons.js similarity index 100% rename from tests/frontend/specs/select_formatting_buttons.js rename to src/tests/frontend/specs/select_formatting_buttons.js diff --git a/tests/frontend/specs/strikethrough.js b/src/tests/frontend/specs/strikethrough.js similarity index 100% rename from tests/frontend/specs/strikethrough.js rename to src/tests/frontend/specs/strikethrough.js diff --git a/tests/frontend/specs/timeslider.js b/src/tests/frontend/specs/timeslider.js similarity index 100% rename from tests/frontend/specs/timeslider.js rename to src/tests/frontend/specs/timeslider.js diff --git a/tests/frontend/specs/timeslider_follow.js b/src/tests/frontend/specs/timeslider_follow.js similarity index 100% rename from tests/frontend/specs/timeslider_follow.js rename to src/tests/frontend/specs/timeslider_follow.js diff --git a/tests/frontend/specs/timeslider_labels.js b/src/tests/frontend/specs/timeslider_labels.js similarity index 100% rename from tests/frontend/specs/timeslider_labels.js rename to src/tests/frontend/specs/timeslider_labels.js diff --git a/tests/frontend/specs/timeslider_numeric_padID.js b/src/tests/frontend/specs/timeslider_numeric_padID.js similarity index 100% rename from tests/frontend/specs/timeslider_numeric_padID.js rename to src/tests/frontend/specs/timeslider_numeric_padID.js diff --git a/tests/frontend/specs/timeslider_revisions.js b/src/tests/frontend/specs/timeslider_revisions.js similarity index 100% rename from tests/frontend/specs/timeslider_revisions.js rename to src/tests/frontend/specs/timeslider_revisions.js diff --git a/tests/frontend/specs/undo.js b/src/tests/frontend/specs/undo.js similarity index 100% rename from tests/frontend/specs/undo.js rename to src/tests/frontend/specs/undo.js diff --git a/tests/frontend/specs/unordered_list.js b/src/tests/frontend/specs/unordered_list.js similarity index 100% rename from tests/frontend/specs/unordered_list.js rename to src/tests/frontend/specs/unordered_list.js diff --git a/tests/frontend/specs/urls_become_clickable.js b/src/tests/frontend/specs/urls_become_clickable.js similarity index 100% rename from tests/frontend/specs/urls_become_clickable.js rename to src/tests/frontend/specs/urls_become_clickable.js diff --git a/tests/frontend/specs/xxauto_reconnect.js b/src/tests/frontend/specs/xxauto_reconnect.js similarity index 100% rename from tests/frontend/specs/xxauto_reconnect.js rename to src/tests/frontend/specs/xxauto_reconnect.js diff --git a/tests/frontend/travis/.gitignore b/src/tests/frontend/travis/.gitignore similarity index 100% rename from tests/frontend/travis/.gitignore rename to src/tests/frontend/travis/.gitignore diff --git a/tests/frontend/travis/remote_runner.js b/src/tests/frontend/travis/remote_runner.js similarity index 97% rename from tests/frontend/travis/remote_runner.js rename to src/tests/frontend/travis/remote_runner.js index ba0e7be0..c5f3f146 100644 --- a/tests/frontend/travis/remote_runner.js +++ b/src/tests/frontend/travis/remote_runner.js @@ -1,7 +1,7 @@ 'use strict'; -const wd = require('ep_etherpad-lite/node_modules/wd'); -const async = require('ep_etherpad-lite/node_modules/async'); +const async = require('async'); +const wd = require('wd'); const config = { host: 'ondemand.saucelabs.com', diff --git a/tests/frontend/travis/runner.sh b/src/tests/frontend/travis/runner.sh similarity index 100% rename from tests/frontend/travis/runner.sh rename to src/tests/frontend/travis/runner.sh diff --git a/tests/frontend/travis/runnerBackend.sh b/src/tests/frontend/travis/runnerBackend.sh similarity index 100% rename from tests/frontend/travis/runnerBackend.sh rename to src/tests/frontend/travis/runnerBackend.sh diff --git a/tests/frontend/travis/runnerLoadTest.sh b/src/tests/frontend/travis/runnerLoadTest.sh similarity index 100% rename from tests/frontend/travis/runnerLoadTest.sh rename to src/tests/frontend/travis/runnerLoadTest.sh diff --git a/tests/frontend/travis/sauce_tunnel.sh b/src/tests/frontend/travis/sauce_tunnel.sh similarity index 100% rename from tests/frontend/travis/sauce_tunnel.sh rename to src/tests/frontend/travis/sauce_tunnel.sh diff --git a/tests/ratelimit/Dockerfile.anotherip b/src/tests/ratelimit/Dockerfile.anotherip similarity index 100% rename from tests/ratelimit/Dockerfile.anotherip rename to src/tests/ratelimit/Dockerfile.anotherip diff --git a/tests/ratelimit/Dockerfile.nginx b/src/tests/ratelimit/Dockerfile.nginx similarity index 100% rename from tests/ratelimit/Dockerfile.nginx rename to src/tests/ratelimit/Dockerfile.nginx diff --git a/tests/ratelimit/nginx.conf b/src/tests/ratelimit/nginx.conf similarity index 100% rename from tests/ratelimit/nginx.conf rename to src/tests/ratelimit/nginx.conf diff --git a/tests/ratelimit/send_changesets.js b/src/tests/ratelimit/send_changesets.js similarity index 66% rename from tests/ratelimit/send_changesets.js rename to src/tests/ratelimit/send_changesets.js index 92af23e1..8f4f93d0 100644 --- a/tests/ratelimit/send_changesets.js +++ b/src/tests/ratelimit/send_changesets.js @@ -1,13 +1,7 @@ 'use strict'; -let etherpad; -try { - etherpad = require('ep_etherpad-lite/node_modules/etherpad-cli-client'); - // ugly -} catch { - /* eslint-disable-next-line node/no-missing-require */ - etherpad = require('etherpad-cli-client'); // uses global -} +const etherpad = require('etherpad-cli-client'); + const pad = etherpad.connect(process.argv[2]); pad.on('connected', () => { setTimeout(() => { diff --git a/tests/ratelimit/testlimits.sh b/src/tests/ratelimit/testlimits.sh similarity index 100% rename from tests/ratelimit/testlimits.sh rename to src/tests/ratelimit/testlimits.sh diff --git a/tests b/tests new file mode 120000 index 00000000..cce6a5cd --- /dev/null +++ b/tests @@ -0,0 +1 @@ +src/tests \ No newline at end of file