Merge pull request #28584 from overleaf/ac-some-web-esm-migration-5

[web] Convert some Features files to ES modules (part 5)

GitOrigin-RevId: 0cad67f9afe0095e2b066bf2f4d3717c00540dab
This commit is contained in:
Antoine Clausse
2025-10-08 08:06:15 +00:00
committed by Copybot
parent 267fc5393a
commit 33e63d79fc
42 changed files with 2365 additions and 2192 deletions
@@ -1,7 +1,7 @@
const logger = require('@overleaf/logger')
const OError = require('@overleaf/o-error')
const AnalyticsRegistrationSourceHelper = require('./AnalyticsRegistrationSourceHelper')
const SessionManager = require('../../Features/Authentication/SessionManager')
import logger from '@overleaf/logger'
import OError from '@overleaf/o-error'
import AnalyticsRegistrationSourceHelper from './AnalyticsRegistrationSourceHelper.js'
import SessionManager from '../../Features/Authentication/SessionManager.js'
function setSource(medium, source) {
return function (req, res, next) {
@@ -51,7 +51,7 @@ function setInbound() {
}
}
module.exports = {
export default {
setSource,
clearSource,
setInbound,
@@ -2,7 +2,7 @@ import AuthenticationController from './../Authentication/AuthenticationControll
import AnalyticsController from './AnalyticsController.mjs'
import AnalyticsProxy from './AnalyticsProxy.mjs'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
const rateLimiters = {
recordEvent: new RateLimiter('analytics-record-event', {
@@ -1,6 +1,6 @@
// @ts-check
import { ForbiddenError, UserNotFoundError } from '../Errors/Errors.js'
import PermissionsManager from './PermissionsManager.js'
import PermissionsManager from './PermissionsManager.mjs'
import Modules from '../../infrastructure/Modules.js'
import { expressify } from '@overleaf/promise-utils'
import Features from '../../infrastructure/Features.js'
@@ -9,7 +9,7 @@ import Features from '../../infrastructure/Features.js'
* @typedef {(import('express').Request)} Request
* @typedef {(import('express').Response)} Response
* @typedef {(import('express').NextFunction)} NextFunction
* @typedef {import('./PermissionsManager').Capability} Capability
* @typedef {import('./PermissionsManager.mjs').Capability} Capability
*/
const {
@@ -41,9 +41,12 @@
* }
*/
const { callbackify } = require('util')
const { ForbiddenError } = require('../Errors/Errors')
const Modules = require('../../infrastructure/Modules')
import { callbackify } from 'node:util'
import Errors from '../Errors/Errors.js'
import Modules from '../../infrastructure/Modules.js'
const { ForbiddenError } = Errors
/**
* @typedef {(import('../../../../types/capabilities').Capability)} Capability
@@ -466,7 +469,7 @@ async function checkUserListPermissions(userList, capabilities) {
return true
}
module.exports = {
export default {
validatePolicies,
registerCapability,
registerPolicy,
@@ -3,9 +3,9 @@ import AuthenticationController from '../Authentication/AuthenticationController
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
import CollaboratorsInviteController from './CollaboratorsInviteController.mjs'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
import CaptchaMiddleware from '../Captcha/CaptchaMiddleware.mjs'
import AnalyticsRegistrationSourceMiddleware from '../Analytics/AnalyticsRegistrationSourceMiddleware.js'
import AnalyticsRegistrationSourceMiddleware from '../Analytics/AnalyticsRegistrationSourceMiddleware.mjs'
const rateLimiters = {
inviteToProjectByProjectId: new RateLimiter(
@@ -1,33 +1,35 @@
const { callbackify } = require('util')
const { callbackifyMultiResult } = require('@overleaf/promise-utils')
const {
import { callbackify } from 'node:util'
import { callbackifyMultiResult } from '@overleaf/promise-utils'
import {
fetchString,
fetchStringWithResponse,
fetchStream,
RequestFailedError,
} = require('@overleaf/fetch-utils')
const Settings = require('@overleaf/settings')
const ProjectGetter = require('../Project/ProjectGetter')
const ProjectEntityHandler = require('../Project/ProjectEntityHandler')
const logger = require('@overleaf/logger')
const OError = require('@overleaf/o-error')
const { Cookie } = require('tough-cookie')
const ClsiCookieManager = require('./ClsiCookieManager')(
} from '@overleaf/fetch-utils'
import Settings from '@overleaf/settings'
import ProjectGetter from '../Project/ProjectGetter.js'
import ProjectEntityHandler from '../Project/ProjectEntityHandler.js'
import logger from '@overleaf/logger'
import OError from '@overleaf/o-error'
import { Cookie } from 'tough-cookie'
import ClsiCookieManagerFactory from './ClsiCookieManager.js'
import ClsiStateManager from './ClsiStateManager.js'
import _ from 'lodash'
import ClsiFormatChecker from './ClsiFormatChecker.js'
import DocumentUpdaterHandler from '../DocumentUpdater/DocumentUpdaterHandler.js'
import Metrics from '@overleaf/metrics'
import Errors from '../Errors/Errors.js'
import ClsiCacheHandler from './ClsiCacheHandler.js'
import HistoryManager from '../History/HistoryManager.js'
import SplitTestHandler from '../SplitTests/SplitTestHandler.js'
import AnalyticsManager from '../Analytics/AnalyticsManager.js'
const ClsiCookieManager = ClsiCookieManagerFactory(
Settings.apis.clsi?.backendGroupName
)
const NewBackendCloudClsiCookieManager = require('./ClsiCookieManager')(
const NewBackendCloudClsiCookieManager = ClsiCookieManagerFactory(
Settings.apis.clsi_new?.backendGroupName
)
const ClsiStateManager = require('./ClsiStateManager')
const _ = require('lodash')
const ClsiFormatChecker = require('./ClsiFormatChecker')
const DocumentUpdaterHandler = require('../DocumentUpdater/DocumentUpdaterHandler')
const Metrics = require('@overleaf/metrics')
const Errors = require('../Errors/Errors')
const ClsiCacheHandler = require('./ClsiCacheHandler')
const { getFilestoreBlobURL } = require('../History/HistoryManager')
const SplitTestHandler = require('../SplitTests/SplitTestHandler')
const AnalyticsManager = require('../Analytics/AnalyticsManager')
const VALID_COMPILERS = ['pdflatex', 'latex', 'xelatex', 'lualatex']
const OUTPUT_FILE_TIMEOUT_MS = 60000
@@ -843,7 +845,7 @@ function _finaliseRequest(projectId, options, project, docs, files) {
path = path.replace(/^\//, '') // Remove leading /
resources.push({
path,
url: getFilestoreBlobURL(historyId, file.hash),
url: HistoryManager.getFilestoreBlobURL(historyId, file.hash),
modified: file.created?.getTime(),
})
}
@@ -975,7 +977,7 @@ function _getClsiServerIdFromResponse(response) {
return null
}
module.exports = {
export default {
sendRequest: callbackifyMultiResult(sendRequest, [
'status',
'outputFiles',
@@ -5,7 +5,7 @@ import OError from '@overleaf/o-error'
import Metrics from '@overleaf/metrics'
import ProjectGetter from '../Project/ProjectGetter.js'
import CompileManager from './CompileManager.mjs'
import ClsiManager from './ClsiManager.js'
import ClsiManager from './ClsiManager.mjs'
import logger from '@overleaf/logger'
import Settings from '@overleaf/settings'
import Errors from '../Errors/Errors.js'
@@ -4,7 +4,7 @@ import RedisWrapper from '../../infrastructure/RedisWrapper.js'
import ProjectGetter from '../Project/ProjectGetter.js'
import ProjectRootDocManager from '../Project/ProjectRootDocManager.js'
import UserGetter from '../User/UserGetter.js'
import ClsiManager from './ClsiManager.js'
import ClsiManager from './ClsiManager.mjs'
import Metrics from '@overleaf/metrics'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import UserAnalyticsIdCache from '../Analytics/UserAnalyticsIdCache.js'
@@ -2,7 +2,7 @@ import EditorHttpController from './EditorHttpController.mjs'
import AuthenticationController from '../Authentication/AuthenticationController.js'
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
const rateLimiters = {
addDocToProject: new RateLimiter('add-doc-to-project', {
@@ -4,7 +4,7 @@ import Settings from '@overleaf/settings'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import AuthenticationController from '../Authentication/AuthenticationController.js'
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
import HistoryController from './HistoryController.mjs'
const rateLimiters = {
@@ -1,7 +1,7 @@
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
import AuthenticationController from '../Authentication/AuthenticationController.js'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
import LinkedFilesController from './LinkedFilesController.mjs'
const rateLimiters = {
@@ -1,6 +1,6 @@
import AuthorizationManager from '../Authorization/AuthorizationManager.js'
import CompileManager from '../Compile/CompileManager.mjs'
import ClsiManager from '../Compile/ClsiManager.js'
import ClsiManager from '../Compile/ClsiManager.mjs'
import ProjectFileAgent from './ProjectFileAgent.mjs'
import _ from 'lodash'
import LinkedFilesErrors from './LinkedFilesErrors.mjs'
@@ -5,7 +5,7 @@ import OneTimeTokenHandler from '../Security/OneTimeTokenHandler.js'
import EmailHandler from '../Email/EmailHandler.js'
import AuthenticationManager from '../Authentication/AuthenticationManager.js'
import { callbackify, promisify } from 'node:util'
import PermissionsManager from '../Authorization/PermissionsManager.js'
import PermissionsManager from '../Authorization/PermissionsManager.mjs'
const assertUserPermissions = PermissionsManager.promises.assertUserPermissions
@@ -2,7 +2,7 @@ import PasswordResetController from './PasswordResetController.mjs'
import AuthenticationController from '../Authentication/AuthenticationController.js'
import CaptchaMiddleware from '../../Features/Captcha/CaptchaMiddleware.mjs'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
const rateLimiter = new RateLimiter('password_reset_rate_limit', {
points: 6,
@@ -14,7 +14,7 @@ import TagsHandler from '../Tags/TagsHandler.js'
import { expressify } from '@overleaf/promise-utils'
import logger from '@overleaf/logger'
import Features from '../../infrastructure/Features.js'
import SubscriptionViewModelBuilder from '../Subscription/SubscriptionViewModelBuilder.js'
import SubscriptionViewModelBuilder from '../Subscription/SubscriptionViewModelBuilder.mjs'
import NotificationsHandler from '../Notifications/NotificationsHandler.js'
import Modules from '../../infrastructure/Modules.js'
import { OError, V1ConnectionError } from '../Errors/Errors.js'
@@ -27,7 +27,7 @@ import SplitTestHandler from '../SplitTests/SplitTestHandler.js'
import SplitTestSessionHandler from '../SplitTests/SplitTestSessionHandler.js'
import TutorialHandler from '../Tutorial/TutorialHandler.mjs'
import SubscriptionHelper from '../Subscription/SubscriptionHelper.js'
import PermissionsManager from '../Authorization/PermissionsManager.js'
import PermissionsManager from '../Authorization/PermissionsManager.mjs'
import AnalyticsManager from '../Analytics/AnalyticsManager.js'
/**
@@ -1,7 +1,7 @@
const logger = require('@overleaf/logger')
const SessionManager = require('../Authentication/SessionManager')
const LoginRateLimiter = require('./LoginRateLimiter')
const settings = require('@overleaf/settings')
import logger from '@overleaf/logger'
import SessionManager from '../Authentication/SessionManager.js'
import LoginRateLimiter from './LoginRateLimiter.js'
import settings from '@overleaf/settings'
/**
* Return a rate limiting middleware
@@ -88,4 +88,4 @@ const RateLimiterMiddleware = {
loginRateLimitEmail,
}
module.exports = RateLimiterMiddleware
export default RateLimiterMiddleware
@@ -1,9 +1,9 @@
// @ts-check
import mongodb from '../../infrastructure/mongodb.js'
import { callbackify } from 'node:util'
import Settings from '@overleaf/settings'
import Errors from '../Errors/Errors.js'
const { db } = require('../../infrastructure/mongodb')
const { callbackify } = require('util')
const Settings = require('@overleaf/settings')
const { InvalidError } = require('../Errors/Errors')
const { db } = mongodb
const LearnedWordsManager = {
/**
@@ -15,7 +15,7 @@ const LearnedWordsManager = {
const wordSize = Buffer.from(word).length
if (wordsSize + wordSize > Settings.maxDictionarySize) {
throw new InvalidError('Max dictionary size reached')
throw new Errors.InvalidError('Max dictionary size reached')
}
return await db.spellingPreferences.updateOne(
@@ -86,7 +86,7 @@ const LearnedWordsManager = {
},
}
module.exports = {
export default {
learnWord: callbackify(LearnedWordsManager.learnWord),
unlearnWord: callbackify(LearnedWordsManager.unlearnWord),
getLearnedWords: callbackify(LearnedWordsManager.getLearnedWords),
@@ -1,7 +1,7 @@
// @ts-check
import SessionManager from '../Authentication/SessionManager.js'
import LearnedWordsManager from './LearnedWordsManager.js'
import LearnedWordsManager from './LearnedWordsManager.mjs'
import { z, validateReq } from '../../infrastructure/Validation.js'
const learnSchema = z.object({
@@ -1,7 +1,7 @@
import OError from '@overleaf/o-error'
import Metrics from '@overleaf/metrics'
import { promisifyAll } from '@overleaf/promise-utils'
import LearnedWordsManager from './LearnedWordsManager.js'
import LearnedWordsManager from './LearnedWordsManager.mjs'
const SpellingHandler = {
getUserDictionary(userId, callback) {
@@ -1,8 +1,10 @@
const SplitTestHandler = require('../SplitTests/SplitTestHandler')
const AnalyticsManager = require('../Analytics/AnalyticsManager')
const SubscriptionEmailHandler = require('./SubscriptionEmailHandler')
const { AI_ADD_ON_CODE } = require('./AiHelper')
const { ObjectId } = require('mongodb-legacy')
import SplitTestHandler from '../SplitTests/SplitTestHandler.js'
import AnalyticsManager from '../Analytics/AnalyticsManager.js'
import SubscriptionEmailHandler from './SubscriptionEmailHandler.js'
import { AI_ADD_ON_CODE } from './AiHelper.js'
import mongodb from 'mongodb-legacy'
const { ObjectId } = mongodb
const INVOICE_SUBSCRIPTION_LIMIT = 10
@@ -389,6 +391,6 @@ function _getSubscriptionData(eventData) {
}
}
module.exports = {
export default {
sendRecurlyAnalyticsEvent,
}
@@ -3,7 +3,7 @@
import SessionManager from '../Authentication/SessionManager.js'
import SubscriptionHandler from './SubscriptionHandler.js'
import SubscriptionHelper from './SubscriptionHelper.js'
import SubscriptionViewModelBuilder from './SubscriptionViewModelBuilder.js'
import SubscriptionViewModelBuilder from './SubscriptionViewModelBuilder.mjs'
import LimitationsManager from './LimitationsManager.js'
import RecurlyWrapper from './RecurlyWrapper.js'
import Settings from '@overleaf/settings'
@@ -13,7 +13,7 @@ import FeaturesUpdater from './FeaturesUpdater.js'
import GroupPlansData from './GroupPlansData.js'
import V1SubscriptionManager from './V1SubscriptionManager.js'
import AnalyticsManager from '../Analytics/AnalyticsManager.js'
import RecurlyEventHandler from './RecurlyEventHandler.js'
import RecurlyEventHandler from './RecurlyEventHandler.mjs'
import { expressify } from '@overleaf/promise-utils'
import OError from '@overleaf/o-error'
import Errors from './Errors.js'
@@ -30,7 +30,7 @@ import {
import PlansLocator from './PlansLocator.js'
import { User } from '../../models/User.js'
import UserGetter from '../User/UserGetter.js'
import PermissionsManager from '../Authorization/PermissionsManager.js'
import PermissionsManager from '../Authorization/PermissionsManager.mjs'
import { sanitizeSessionUserForFrontEnd } from '../../infrastructure/FrontEndUser.js'
import { z, validateReq } from '../../infrastructure/Validation.js'
import { IndeterminateInvoiceError } from '../Errors/Errors.js'
@@ -4,7 +4,7 @@ import SubscriptionController from './SubscriptionController.mjs'
import SubscriptionGroupController from './SubscriptionGroupController.mjs'
import TeamInvitesController from './TeamInvitesController.mjs'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
import Settings from '@overleaf/settings'
const teamInviteRateLimiter = new RateLimiter('team-invite', {
@@ -1,23 +1,24 @@
// ts-check
const Settings = require('@overleaf/settings')
const PlansLocator = require('./PlansLocator')
const { isStandaloneAiAddOnPlanCode } = require('./AiHelper')
const { MEMBERS_LIMIT_ADD_ON_CODE } = require('./PaymentProviderEntities')
const SubscriptionFormatters = require('./SubscriptionFormatters')
const SubscriptionLocator = require('./SubscriptionLocator')
const InstitutionsGetter = require('../Institutions/InstitutionsGetter')
const InstitutionsManager = require('../Institutions/InstitutionsManager')
const PublishersGetter = require('../Publishers/PublishersGetter')
const sanitizeHtml = require('sanitize-html')
const _ = require('lodash')
const async = require('async')
const SubscriptionHelper = require('./SubscriptionHelper')
const { callbackify } = require('@overleaf/promise-utils')
const { V1ConnectionError } = require('../Errors/Errors')
const FeaturesHelper = require('./FeaturesHelper')
const { formatCurrency } = require('../../util/currency')
const Modules = require('../../infrastructure/Modules')
const SplitTestHandler = require('../SplitTests/SplitTestHandler')
import Settings from '@overleaf/settings'
import PlansLocator from './PlansLocator.js'
import { isStandaloneAiAddOnPlanCode } from './AiHelper.js'
import { MEMBERS_LIMIT_ADD_ON_CODE } from './PaymentProviderEntities.js'
import SubscriptionFormatters from './SubscriptionFormatters.js'
import SubscriptionLocator from './SubscriptionLocator.js'
import InstitutionsGetter from '../Institutions/InstitutionsGetter.js'
import InstitutionsManager from '../Institutions/InstitutionsManager.js'
import PublishersGetter from '../Publishers/PublishersGetter.js'
import sanitizeHtml from 'sanitize-html'
import _ from 'lodash'
import async from 'async'
import SubscriptionHelper from './SubscriptionHelper.js'
import { callbackify } from '@overleaf/promise-utils'
import { V1ConnectionError } from '../Errors/Errors.js'
import FeaturesHelper from './FeaturesHelper.js'
import { formatCurrency } from '../../util/currency.js'
import Modules from '../../infrastructure/Modules.js'
import SplitTestHandler from '../SplitTests/SplitTestHandler.js'
/**
* @import { Subscription } from "../../../../types/project/dashboard/subscription"
@@ -629,7 +630,7 @@ function buildPlansListForSubscriptionDash(currentPlan, isInTrial) {
}
}
module.exports = {
export default {
buildUsersSubscriptionViewModel: callbackify(buildUsersSubscriptionViewModel),
buildPlansList,
buildPlansListForSubscriptionDash,
@@ -10,7 +10,7 @@ import EmailHelper from '../Helpers/EmailHelper.js'
import UserGetter from '../User/UserGetter.js'
import { expressify } from '@overleaf/promise-utils'
import HttpErrorHandler from '../Errors/HttpErrorHandler.js'
import PermissionsManager from '../Authorization/PermissionsManager.js'
import PermissionsManager from '../Authorization/PermissionsManager.mjs'
import EmailHandler from '../Email/EmailHandler.js'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import Modules from '../../infrastructure/Modules.js'
@@ -1,9 +1,9 @@
const path = require('path')
const SessionManager = require('../Authentication/SessionManager')
const TemplatesManager = require('./TemplatesManager')
const ProjectHelper = require('../Project/ProjectHelper')
const logger = require('@overleaf/logger')
const { expressify } = require('@overleaf/promise-utils')
import path from 'node:path'
import SessionManager from '../Authentication/SessionManager.js'
import TemplatesManager from './TemplatesManager.js'
import ProjectHelper from '../Project/ProjectHelper.js'
import logger from '@overleaf/logger'
import { expressify } from '@overleaf/promise-utils'
const TemplatesController = {
async getV1Template(req, res) {
@@ -27,7 +27,7 @@ const TemplatesController = {
}
res.render(
path.resolve(
__dirname,
import.meta.dirname,
'../../../views/project/editor/new_from_template'
),
data
@@ -54,7 +54,7 @@ const TemplatesController = {
},
}
module.exports = {
export default {
getV1Template: expressify(TemplatesController.getV1Template),
createProjectFromV1Template: expressify(
TemplatesController.createProjectFromV1Template
@@ -8,10 +8,11 @@
* DS102: Remove unnecessary code created because of implicit returns
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
const settings = require('@overleaf/settings')
const logger = require('@overleaf/logger')
import settings from '@overleaf/settings'
module.exports = {
import logger from '@overleaf/logger'
export default {
saveTemplateDataInSession(req, res, next) {
if (req.query.templateName) {
req.session.templateData = req.query
@@ -1,9 +1,9 @@
import AuthenticationController from '../Authentication/AuthenticationController.js'
import TemplatesController from './TemplatesController.js'
import TemplatesMiddleware from './TemplatesMiddleware.js'
import TemplatesController from './TemplatesController.mjs'
import TemplatesMiddleware from './TemplatesMiddleware.mjs'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import AnalyticsRegistrationSourceMiddleware from '../Analytics/AnalyticsRegistrationSourceMiddleware.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
import AnalyticsRegistrationSourceMiddleware from '../Analytics/AnalyticsRegistrationSourceMiddleware.mjs'
const rateLimiter = new RateLimiter('create-project-from-template', {
points: 20,
@@ -2,7 +2,7 @@ import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mj
import AuthenticationController from '../Authentication/AuthenticationController.js'
import ProjectUploadController from './ProjectUploadController.mjs'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
import Settings from '@overleaf/settings'
const rateLimiters = {
@@ -3,7 +3,7 @@ import UserMembershipController from './UserMembershipController.mjs'
import SubscriptionGroupController from '../Subscription/SubscriptionGroupController.mjs'
import TeamInvitesController from '../Subscription/TeamInvitesController.mjs'
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.js'
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
const rateLimiters = {
createTeamInvite: new RateLimiter('create-team-invite', {
+2 -2
View File
@@ -41,7 +41,7 @@ import {
openProjectRateLimiter,
overleafLoginRateLimiter,
} from './infrastructure/RateLimiter.js'
import RateLimiterMiddleware from './Features/Security/RateLimiterMiddleware.js'
import RateLimiterMiddleware from './Features/Security/RateLimiterMiddleware.mjs'
import InactiveProjectController from './Features/InactiveData/InactiveProjectController.mjs'
import ContactRouter from './Features/Contacts/ContactRouter.mjs'
import ReferencesController from './Features/References/ReferencesController.mjs'
@@ -55,7 +55,7 @@ import LinkedFilesRouter from './Features/LinkedFiles/LinkedFilesRouter.mjs'
import TemplatesRouter from './Features/Templates/TemplatesRouter.mjs'
import UserMembershipRouter from './Features/UserMembership/UserMembershipRouter.mjs'
import SystemMessageController from './Features/SystemMessages/SystemMessageController.mjs'
import AnalyticsRegistrationSourceMiddleware from './Features/Analytics/AnalyticsRegistrationSourceMiddleware.js'
import AnalyticsRegistrationSourceMiddleware from './Features/Analytics/AnalyticsRegistrationSourceMiddleware.mjs'
import AnalyticsUTMTrackingMiddleware from './Features/Analytics/AnalyticsUTMTrackingMiddleware.mjs'
import CaptchaMiddleware from './Features/Captcha/CaptchaMiddleware.mjs'
import UnsupportedBrowserMiddleware from './infrastructure/UnsupportedBrowserMiddleware.js'