diff --git a/package-lock.json b/package-lock.json index 25ec3c865f..ae5c45cbd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41071,22 +41071,6 @@ "node": ">=10.12.0" } }, - "node_modules/val-loader": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/val-loader/-/val-loader-5.0.1.tgz", - "integrity": "sha512-r4h7b9AuvGQU1vyC4rAMoJNMG8fJUE6CYAqlM265tOdnZrZC6axVawBg2GlQ9+6osPCJjw4/vyADiSBAFlhzlg==", - "dev": true, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, "node_modules/valid-data-url": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-2.0.0.tgz", @@ -44645,7 +44629,6 @@ "timekeeper": "^2.2.0", "to-string-loader": "^1.2.0", "typescript": "^5.0.4", - "val-loader": "^5.0.1", "webpack": "^5.83.1", "webpack-assets-manifest": "^5.1.0", "webpack-cli": "^5.1.1", @@ -53018,7 +53001,6 @@ "underscore": "^1.13.1", "utf-8-validate": "^5.0.2", "uuid": "^3.0.1", - "val-loader": "^5.0.1", "valid-data-url": "^2.0.0", "valid-url": "^1.0.9", "webpack": "^5.83.1", @@ -79019,13 +79001,6 @@ "convert-source-map": "^1.6.0" } }, - "val-loader": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/val-loader/-/val-loader-5.0.1.tgz", - "integrity": "sha512-r4h7b9AuvGQU1vyC4rAMoJNMG8fJUE6CYAqlM265tOdnZrZC6axVawBg2GlQ9+6osPCJjw4/vyADiSBAFlhzlg==", - "dev": true, - "requires": {} - }, "valid-data-url": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-2.0.0.tgz", diff --git a/services/web/config/settings.defaults.js b/services/web/config/settings.defaults.js index f110b7db90..aa88c7a160 100644 --- a/services/web/config/settings.defaults.js +++ b/services/web/config/settings.defaults.js @@ -1,6 +1,29 @@ +const fs = require('fs') const Path = require('path') const { merge } = require('@overleaf/settings/merge') +const MODULES_PATH = Path.join(__dirname, '../modules') +const entryPointsIde = [] +const entryPointsMain = [] +fs.readdirSync(MODULES_PATH).forEach(module => { + const entryPathIde = Path.join( + MODULES_PATH, + module, + '/frontend/js/ide/index.js' + ) + if (fs.existsSync(entryPathIde)) { + entryPointsIde.push(entryPathIde) + } + const entryPathMain = Path.join( + MODULES_PATH, + module, + '/frontend/js/main/index.js' + ) + if (fs.existsSync(entryPathMain)) { + entryPointsMain.push(entryPathMain) + } +}) + let defaultFeatures, siteUrl // Make time interval config easier. @@ -815,6 +838,8 @@ module.exports = { oauth2Server: [], managedGroupSubscriptionEnrollmentNotification: [], managedGroupEnrollmentInvite: [], + entryPointsIde, + entryPointsMain, }, moduleImportSequence: [ diff --git a/services/web/modules/modules-ide.js b/services/web/modules/modules-ide.js index fdd9553fae..bd946c0b91 100644 --- a/services/web/modules/modules-ide.js +++ b/services/web/modules/modules-ide.js @@ -1,25 +1,3 @@ -const fs = require('fs') -const path = require('path') +import importOverleafModules from '../frontend/macros/import-overleaf-module.macro' -const MODULES_PATH = path.join(__dirname, './') - -const entryPoints = [] -if (fs.existsSync(MODULES_PATH)) { - fs.readdirSync(MODULES_PATH).reduce((acc, module) => { - const entryPath = path.join( - MODULES_PATH, - module, - '/frontend/js/ide/index.js' - ) - if (fs.existsSync(entryPath)) { - acc.push(entryPath) - } - return acc - }, entryPoints) -} - -module.exports = function () { - return { - code: entryPoints.map(entryPoint => `import '${entryPoint}'`).join('\n'), - } -} +export default importOverleafModules('entryPointsIde') diff --git a/services/web/modules/modules-main.js b/services/web/modules/modules-main.js index 54f5c807c0..bb8e05a80d 100644 --- a/services/web/modules/modules-main.js +++ b/services/web/modules/modules-main.js @@ -1,25 +1,3 @@ -const fs = require('fs') -const path = require('path') +import importOverleafModules from '../frontend/macros/import-overleaf-module.macro' -const MODULES_PATH = path.join(__dirname, './') - -const entryPoints = [] -if (fs.existsSync(MODULES_PATH)) { - fs.readdirSync(MODULES_PATH).reduce((acc, module) => { - const entryPath = path.join( - MODULES_PATH, - module, - '/frontend/js/main/index.js' - ) - if (fs.existsSync(entryPath)) { - acc.push(entryPath) - } - return acc - }, entryPoints) -} - -module.exports = function () { - return { - code: entryPoints.map(entryPoint => `import '${entryPoint}'`).join('\n'), - } -} +export default importOverleafModules('entryPointsMain') diff --git a/services/web/package.json b/services/web/package.json index afb12ce7e0..aed5d278d3 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -343,7 +343,6 @@ "timekeeper": "^2.2.0", "to-string-loader": "^1.2.0", "typescript": "^5.0.4", - "val-loader": "^5.0.1", "webpack": "^5.83.1", "webpack-assets-manifest": "^5.1.0", "webpack-cli": "^5.1.1", diff --git a/services/web/webpack.config.js b/services/web/webpack.config.js index ed50e113f6..f2d2dd7b6e 100644 --- a/services/web/webpack.config.js +++ b/services/web/webpack.config.js @@ -209,24 +209,6 @@ module.exports = { }, ], }, - // Allow for injection of modules dependencies by reading contents of - // modules directory and adding necessary dependencies - { - test: path.join(__dirname, 'modules/modules-main.js'), - use: [ - { - loader: 'val-loader', - }, - ], - }, - { - test: path.join(__dirname, 'modules/modules-ide.js'), - use: [ - { - loader: 'val-loader', - }, - ], - }, { // Expose jQuery and $ global variables test: require.resolve('jquery'),