mirror of
https://github.com/overleaf/overleaf.git
synced 2025-12-05 01:10:29 +00:00
Merge pull request #29928 from overleaf/ar-last-infrastructure-conversions
[web] last infrastructure conversions GitOrigin-RevId: ad1aff9b7df0610ed0303157d9e2c8032f32c02b
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
// Metrics must be initialized before importing anything else
|
||||
import { metricsModuleImportStartTime } from '@overleaf/metrics/initialize.js'
|
||||
|
||||
import Modules from './app/src/infrastructure/Modules.js'
|
||||
import Modules from './app/src/infrastructure/Modules.mjs'
|
||||
import metrics from '@overleaf/metrics'
|
||||
import Settings from '@overleaf/settings'
|
||||
import logger from '@overleaf/logger'
|
||||
@@ -13,10 +13,10 @@ import https from 'node:https'
|
||||
import Serializers from './app/src/infrastructure/LoggerSerializers.mjs'
|
||||
import Server from './app/src/infrastructure/Server.mjs'
|
||||
import QueueWorkers from './app/src/infrastructure/QueueWorkers.mjs'
|
||||
import mongodb from './app/src/infrastructure/mongodb.js'
|
||||
import mongoose from './app/src/infrastructure/Mongoose.js'
|
||||
import { triggerGracefulShutdown } from './app/src/infrastructure/GracefulShutdown.js'
|
||||
import FileWriter from './app/src/infrastructure/FileWriter.js'
|
||||
import mongodb from './app/src/infrastructure/mongodb.mjs'
|
||||
import mongoose from './app/src/infrastructure/Mongoose.mjs'
|
||||
import { triggerGracefulShutdown } from './app/src/infrastructure/GracefulShutdown.mjs'
|
||||
import FileWriter from './app/src/infrastructure/FileWriter.mjs'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
|
||||
metrics.gauge(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import UserAnalyticsIdCache from './UserAnalyticsIdCache.mjs'
|
||||
import Settings from '@overleaf/settings'
|
||||
import Metrics from '../../infrastructure/Metrics.js'
|
||||
import Metrics from '../../infrastructure/Metrics.mjs'
|
||||
import Queues from '../../infrastructure/Queues.mjs'
|
||||
import crypto, { createHash } from 'node:crypto'
|
||||
import _ from 'lodash'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import AuthenticationController from './../Authentication/AuthenticationController.mjs'
|
||||
import AnalyticsController from './AnalyticsController.mjs'
|
||||
import AnalyticsProxy from './AnalyticsProxy.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
||||
|
||||
const rateLimiters = {
|
||||
|
||||
@@ -19,9 +19,9 @@ import AsyncFormHelper from '../Helpers/AsyncFormHelper.mjs'
|
||||
import _ from 'lodash'
|
||||
import UserAuditLogHandler from '../User/UserAuditLogHandler.mjs'
|
||||
import AnalyticsRegistrationSourceHelper from '../Analytics/AnalyticsRegistrationSourceHelper.mjs'
|
||||
import { acceptsJson } from '../../infrastructure/RequestContentTypeDetection.js'
|
||||
import { acceptsJson } from '../../infrastructure/RequestContentTypeDetection.mjs'
|
||||
import AdminAuthorizationHelper from '../Helpers/AdminAuthorizationHelper.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import { expressify, promisify } from '@overleaf/promise-utils'
|
||||
import { handleAuthenticateErrors } from './AuthenticationErrors.mjs'
|
||||
import EmailHelper from '../Helpers/EmailHelper.mjs'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import Settings from '@overleaf/settings'
|
||||
import { User } from '../../models/User.mjs'
|
||||
import { db, ObjectId } from '../../infrastructure/mongodb.js'
|
||||
import { db, ObjectId } from '../../infrastructure/mongodb.mjs'
|
||||
import bcrypt from 'bcrypt'
|
||||
import EmailHelper from '../Helpers/EmailHelper.mjs'
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// @ts-check
|
||||
import { ForbiddenError, UserNotFoundError } from '../Errors/Errors.js'
|
||||
import PermissionsManager from './PermissionsManager.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import Features from '../../infrastructure/Features.mjs'
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
import { callbackify } from 'node:util'
|
||||
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
const { ForbiddenError } = Errors
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import ChatApiHandler from './ChatApiHandler.mjs'
|
||||
import EditorRealTimeController from '../Editor/EditorRealTimeController.mjs'
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
|
||||
@@ -15,7 +15,7 @@ import TokenAccessHandler from '../TokenAccess/TokenAccessHandler.mjs'
|
||||
import ProjectAuditLogHandler from '../Project/ProjectAuditLogHandler.mjs'
|
||||
import LimitationsManager from '../Subscription/LimitationsManager.mjs'
|
||||
import PrivilegeLevels from '../Authorization/PrivilegeLevels.mjs'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
import Features from '../../infrastructure/Features.mjs'
|
||||
|
||||
const { hasAdminAccess } = AdminAuthorizationHelper
|
||||
|
||||
@@ -10,8 +10,8 @@ import EmailHelper from '../Helpers/EmailHelper.mjs'
|
||||
import EditorRealTimeController from '../Editor/EditorRealTimeController.mjs'
|
||||
import AnalyticsManager from '../Analytics/AnalyticsManager.mjs'
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import ProjectAuditLogHandler from '../Project/ProjectAuditLogHandler.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
|
||||
@@ -2,7 +2,7 @@ import CollaboratorsController from './CollaboratorsController.mjs'
|
||||
import AuthenticationController from '../Authentication/AuthenticationController.mjs'
|
||||
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
|
||||
import CollaboratorsInviteController from './CollaboratorsInviteController.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
||||
import CaptchaMiddleware from '../Captcha/CaptchaMiddleware.mjs'
|
||||
import AnalyticsRegistrationSourceMiddleware from '../Analytics/AnalyticsRegistrationSourceMiddleware.mjs'
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
fetchStringWithResponse,
|
||||
RequestFailedError,
|
||||
} from '@overleaf/fetch-utils'
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.js'
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.mjs'
|
||||
import Cookie from 'cookie'
|
||||
import logger from '@overleaf/logger'
|
||||
import Metrics from '@overleaf/metrics'
|
||||
|
||||
@@ -10,8 +10,8 @@ import logger from '@overleaf/logger'
|
||||
import Settings from '@overleaf/settings'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import Validation from '../../infrastructure/Validation.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import Validation from '../../infrastructure/Validation.mjs'
|
||||
import ClsiCookieManagerFactory from './ClsiCookieManager.mjs'
|
||||
import Path from 'node:path'
|
||||
import AnalyticsManager from '../Analytics/AnalyticsManager.mjs'
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import Crypto from 'node:crypto'
|
||||
import Settings from '@overleaf/settings'
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.js'
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.mjs'
|
||||
import ProjectGetter from '../Project/ProjectGetter.mjs'
|
||||
import ProjectRootDocManager from '../Project/ProjectRootDocManager.mjs'
|
||||
import UserGetter from '../User/UserGetter.mjs'
|
||||
import ClsiManager from './ClsiManager.mjs'
|
||||
import Metrics from '@overleaf/metrics'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import UserAnalyticsIdCache from '../Analytics/UserAnalyticsIdCache.mjs'
|
||||
import { callbackify, callbackifyMultiResult } from '@overleaf/promise-utils'
|
||||
let CompileManager
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import ContactManager from './ContactManager.mjs'
|
||||
import UserGetter from '../User/UserGetter.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
|
||||
function _formatContact(contact) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.js'
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.mjs'
|
||||
import logger from '@overleaf/logger'
|
||||
import { promisify } from '@overleaf/promise-utils'
|
||||
const rclient = RedisWrapper.client('cooldown')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import logger from '@overleaf/logger'
|
||||
import DocumentUpdaterHandler from './DocumentUpdaterHandler.mjs'
|
||||
import ProjectLocator from '../Project/ProjectLocator.mjs'
|
||||
import { plainTextResponse } from '../../infrastructure/Response.js'
|
||||
import { plainTextResponse } from '../../infrastructure/Response.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
|
||||
async function getDoc(req, res) {
|
||||
|
||||
@@ -10,7 +10,7 @@ import _ from 'lodash'
|
||||
import logger from '@overleaf/logger'
|
||||
import { callbackifyAll } from '@overleaf/promise-utils'
|
||||
import ProjectGetter from '../Project/ProjectGetter.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
const REQUEST_TIMEOUT_MS = 30 * 1000
|
||||
const RESYNC_TIMEOUT_MS = 6 * 60 * 1000
|
||||
|
||||
@@ -5,9 +5,9 @@ import ProjectEntityHandler from '../Project/ProjectEntityHandler.mjs'
|
||||
import ProjectEntityUpdateHandler from '../Project/ProjectEntityUpdateHandler.mjs'
|
||||
import logger from '@overleaf/logger'
|
||||
import _ from 'lodash'
|
||||
import { plainTextResponse } from '../../infrastructure/Response.js'
|
||||
import { plainTextResponse } from '../../infrastructure/Response.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
async function getDocument(req, res) {
|
||||
const { Project_id: projectId, doc_id: docId } = req.params
|
||||
|
||||
@@ -14,7 +14,7 @@ import Metrics from '@overleaf/metrics'
|
||||
import ProjectGetter from '../Project/ProjectGetter.mjs'
|
||||
import ProjectZipStreamManager from './ProjectZipStreamManager.mjs'
|
||||
import DocumentUpdaterHandler from '../DocumentUpdater/DocumentUpdaterHandler.mjs'
|
||||
import { prepareZipAttachment } from '../../infrastructure/Response.js'
|
||||
import { prepareZipAttachment } from '../../infrastructure/Response.mjs'
|
||||
|
||||
let ProjectDownloadsController
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import Errors from '../Errors/Errors.js'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import Settings from '@overleaf/settings'
|
||||
import CollaboratorsGetter from '../Collaborators/CollaboratorsGetter.mjs'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
|
||||
const ProjectAccess = CollaboratorsGetter.ProjectAccess
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
*/
|
||||
import Settings from '@overleaf/settings'
|
||||
import Metrics from '@overleaf/metrics'
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.js'
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.mjs'
|
||||
import os from 'node:os'
|
||||
import crypto from 'node:crypto'
|
||||
let EditorRealTimeController
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import EditorHttpController from './EditorHttpController.mjs'
|
||||
import AuthenticationController from '../Authentication/AuthenticationController.mjs'
|
||||
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
||||
|
||||
const rateLimiters = {
|
||||
|
||||
@@ -5,7 +5,7 @@ import Settings from '@overleaf/settings'
|
||||
import nodemailer from 'nodemailer'
|
||||
import aws from '@aws-sdk/client-ses'
|
||||
import OError from '@overleaf/o-error'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import _ from 'lodash'
|
||||
|
||||
const EMAIL_SETTINGS = Settings.email || {}
|
||||
|
||||
@@ -3,7 +3,7 @@ import Errors from './Errors.js'
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import SamlLogHandler from '../SamlLog/SamlLogHandler.mjs'
|
||||
import HttpErrorHandler from './HttpErrorHandler.mjs'
|
||||
import { plainTextResponse } from '../../infrastructure/Response.js'
|
||||
import { plainTextResponse } from '../../infrastructure/Response.mjs'
|
||||
import { expressifyErrorHandler } from '@overleaf/promise-utils'
|
||||
|
||||
function notFound(req, res) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import logger from '@overleaf/logger'
|
||||
import Settings from '@overleaf/settings'
|
||||
import { plainTextResponse } from '../../infrastructure/Response.js'
|
||||
import { plainTextResponse } from '../../infrastructure/Response.mjs'
|
||||
|
||||
function renderJSONError(res, message, info = {}) {
|
||||
if (info.message) {
|
||||
|
||||
@@ -7,7 +7,7 @@ import Metrics from '@overleaf/metrics'
|
||||
import ProjectLocator from '../Project/ProjectLocator.mjs'
|
||||
import HistoryManager from '../History/HistoryManager.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import { preparePlainTextResponse } from '../../infrastructure/Response.js'
|
||||
import { preparePlainTextResponse } from '../../infrastructure/Response.mjs'
|
||||
|
||||
async function getFile(req, res) {
|
||||
const projectId = req.params.Project_id
|
||||
|
||||
@@ -7,7 +7,7 @@ import ProjectDetailsHandler from '../Project/ProjectDetailsHandler.mjs'
|
||||
import { File } from '../../models/File.mjs'
|
||||
import OError from '@overleaf/o-error'
|
||||
import { promisifyAll } from '@overleaf/promise-utils'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
const FileStoreHandler = {
|
||||
RETRY_ATTEMPTS: 3,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.js'
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.mjs'
|
||||
import settings from '@overleaf/settings'
|
||||
import logger from '@overleaf/logger'
|
||||
import UserGetter from '../User/UserGetter.mjs'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Settings from '@overleaf/settings'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import logger from '@overleaf/logger'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { acceptsJson } from '../../infrastructure/RequestContentTypeDetection.js'
|
||||
import { acceptsJson } from '../../infrastructure/RequestContentTypeDetection.mjs'
|
||||
|
||||
export default {
|
||||
redirect,
|
||||
|
||||
@@ -23,9 +23,9 @@ import HistoryManager from './HistoryManager.mjs'
|
||||
import ProjectDetailsHandler from '../Project/ProjectDetailsHandler.mjs'
|
||||
import ProjectEntityUpdateHandler from '../Project/ProjectEntityUpdateHandler.mjs'
|
||||
import RestoreManager from './RestoreManager.mjs'
|
||||
import { prepareZipAttachment } from '../../infrastructure/Response.js'
|
||||
import { prepareZipAttachment } from '../../infrastructure/Response.mjs'
|
||||
import Features from '../../infrastructure/Features.mjs'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
|
||||
// Number of seconds after which the browser should send a request to revalidate
|
||||
// blobs
|
||||
|
||||
@@ -11,7 +11,7 @@ import OError from '@overleaf/o-error'
|
||||
import UserGetter from '../User/UserGetter.mjs'
|
||||
import ProjectGetter from '../Project/ProjectGetter.mjs'
|
||||
import HistoryBackupDeletionHandler from './HistoryBackupDeletionHandler.mjs'
|
||||
import { db, waitForDb } from '../../infrastructure/mongodb.js'
|
||||
import { db, waitForDb } from '../../infrastructure/mongodb.mjs'
|
||||
import Metrics from '@overleaf/metrics'
|
||||
import { NotFoundError } from '../Errors/Errors.js'
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import HistoryManager from '../History/HistoryManager.mjs'
|
||||
import DocumentUpdaterHandler from '../DocumentUpdater/DocumentUpdaterHandler.mjs'
|
||||
import DocstoreManager from '../Docstore/DocstoreManager.mjs'
|
||||
import ProjectOptionsHandler from '../Project/ProjectOptionsHandler.mjs'
|
||||
import mongodb from '../../infrastructure/mongodb.js'
|
||||
import mongodb from '../../infrastructure/mongodb.mjs'
|
||||
|
||||
const { db, ObjectId, READ_PREFERENCE_SECONDARY } = mongodb
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// @ts-check
|
||||
|
||||
import Settings from '@overleaf/settings'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import AuthenticationController from '../Authentication/AuthenticationController.mjs'
|
||||
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
|
||||
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import Settings from '@overleaf/settings'
|
||||
import Path from 'node:path'
|
||||
import FileWriter from '../../infrastructure/FileWriter.js'
|
||||
import Metrics from '../../infrastructure/Metrics.js'
|
||||
import FileWriter from '../../infrastructure/FileWriter.mjs'
|
||||
import Metrics from '../../infrastructure/Metrics.mjs'
|
||||
import FileSystemImportManager from '../Uploads/FileSystemImportManager.mjs'
|
||||
import FileTypeManager from '../Uploads/FileTypeManager.mjs'
|
||||
import EditorController from '../Editor/EditorController.mjs'
|
||||
|
||||
@@ -5,8 +5,8 @@ import DocumentUpdaterHandler from '../DocumentUpdater/DocumentUpdaterHandler.mj
|
||||
import ProjectGetter from '../Project/ProjectGetter.mjs'
|
||||
import ProjectUpdateHandler from '../Project/ProjectUpdateHandler.mjs'
|
||||
import { Project } from '../../models/Project.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import { READ_PREFERENCE_SECONDARY } from '../../infrastructure/mongodb.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import { READ_PREFERENCE_SECONDARY } from '../../infrastructure/mongodb.mjs'
|
||||
import { callbackifyAll } from '@overleaf/promise-utils'
|
||||
import Metrics from '@overleaf/metrics'
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import {
|
||||
InvalidInstitutionalEmailError,
|
||||
} from '../Errors/Errors.js'
|
||||
import { fetchJson, fetchNothing } from '@overleaf/fetch-utils'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
function _makeRequestOptions(options) {
|
||||
const requestOptions = {
|
||||
|
||||
@@ -20,9 +20,9 @@ import {
|
||||
OutputFileFetchFailedError,
|
||||
FileTooLargeError,
|
||||
} from '../Errors/Errors.js'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import { plainTextResponse } from '../../infrastructure/Response.js'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import { plainTextResponse } from '../../infrastructure/Response.mjs'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
import EditorRealTimeController from '../Editor/EditorRealTimeController.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import ProjectOutputFileAgent from './ProjectOutputFileAgent.mjs'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import FileWriter from '../../infrastructure/FileWriter.js'
|
||||
import FileWriter from '../../infrastructure/FileWriter.mjs'
|
||||
import EditorController from '../Editor/EditorController.mjs'
|
||||
import ProjectLocator from '../Project/ProjectLocator.mjs'
|
||||
import { Project } from '../../models/Project.mjs'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
|
||||
import AuthenticationController from '../Authentication/AuthenticationController.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
||||
import LinkedFilesController from './LinkedFilesController.mjs'
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import UserSessionsManager from '../User/UserSessionsManager.mjs'
|
||||
import OError from '@overleaf/o-error'
|
||||
import EmailsHelper from '../Helpers/EmailHelper.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
|
||||
const setNewUserPasswordSchema = z.object({
|
||||
body: z.object({
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import PasswordResetController from './PasswordResetController.mjs'
|
||||
import AuthenticationController from '../Authentication/AuthenticationController.mjs'
|
||||
import CaptchaMiddleware from '../../Features/Captcha/CaptchaMiddleware.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
||||
|
||||
const rateLimiter = new RateLimiter('password_reset_rate_limit', {
|
||||
|
||||
@@ -44,8 +44,8 @@ import PublicAccessLevels from '../Authorization/PublicAccessLevels.mjs'
|
||||
import TagsHandler from '../Tags/TagsHandler.mjs'
|
||||
import TutorialHandler from '../Tutorial/TutorialHandler.mjs'
|
||||
import UserUpdater from '../User/UserUpdater.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
import UserGetter from '../User/UserGetter.mjs'
|
||||
import { isStandaloneAiAddOnPlanCode } from '../Subscription/AiHelper.mjs'
|
||||
import SubscriptionController from '../Subscription/SubscriptionController.mjs'
|
||||
|
||||
@@ -3,8 +3,8 @@ import {
|
||||
db,
|
||||
ObjectId,
|
||||
READ_PREFERENCE_SECONDARY,
|
||||
} from '../../infrastructure/mongodb.js'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
} from '../../infrastructure/mongodb.mjs'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import { callbackify } from 'node:util'
|
||||
import { Project } from '../../models/Project.mjs'
|
||||
import { DeletedProject } from '../../models/DeletedProject.mjs'
|
||||
|
||||
@@ -20,7 +20,7 @@ import TpdsProjectFlusher from '../ThirdPartyDataStore/TpdsProjectFlusher.mjs'
|
||||
import _ from 'lodash'
|
||||
import TagsHandler from '../Tags/TagsHandler.mjs'
|
||||
import ClsiCacheManager from '../Compile/ClsiCacheManager.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
export default {
|
||||
duplicate: callbackify(duplicate),
|
||||
|
||||
@@ -8,7 +8,7 @@ import OError from '@overleaf/o-error'
|
||||
import CooldownManager from '../Cooldown/CooldownManager.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import { Folder } from '../../models/Folder.mjs'
|
||||
import LockManager from '../../infrastructure/LockManager.js'
|
||||
import LockManager from '../../infrastructure/LockManager.mjs'
|
||||
import { Project } from '../../models/Project.mjs'
|
||||
import ProjectEntityHandler from './ProjectEntityHandler.mjs'
|
||||
import ProjectGetter from './ProjectGetter.mjs'
|
||||
|
||||
@@ -9,7 +9,7 @@ import DocstoreManager from '../Docstore/DocstoreManager.mjs'
|
||||
import DocumentUpdaterHandler from '../../Features/DocumentUpdater/DocumentUpdaterHandler.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import FileStoreHandler from '../FileStore/FileStoreHandler.mjs'
|
||||
import LockManager from '../../infrastructure/LockManager.js'
|
||||
import LockManager from '../../infrastructure/LockManager.mjs'
|
||||
import { Project } from '../../models/Project.mjs'
|
||||
import ProjectEntityHandler from './ProjectEntityHandler.mjs'
|
||||
import ProjectGetter from './ProjectGetter.mjs'
|
||||
@@ -19,7 +19,7 @@ import ProjectUpdateHandler from './ProjectUpdateHandler.mjs'
|
||||
import ProjectEntityMongoUpdateHandler from './ProjectEntityMongoUpdateHandler.mjs'
|
||||
import SafePath from './SafePath.mjs'
|
||||
import TpdsUpdateSender from '../ThirdPartyDataStore/TpdsUpdateSender.mjs'
|
||||
import FileWriter from '../../infrastructure/FileWriter.js'
|
||||
import FileWriter from '../../infrastructure/FileWriter.mjs'
|
||||
import EditorRealTimeController from '../Editor/EditorRealTimeController.mjs'
|
||||
import { callbackifyMultiResult, callbackify } from '@overleaf/promise-utils'
|
||||
import { iterablePaths } from './IterablePath.mjs'
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { db } from '../../infrastructure/mongodb.js'
|
||||
import { db } from '../../infrastructure/mongodb.mjs'
|
||||
import Mongo from '../Helpers/Mongo.mjs'
|
||||
import OError from '@overleaf/o-error'
|
||||
import { Project } from '../../models/Project.mjs'
|
||||
import LockManager from '../../infrastructure/LockManager.js'
|
||||
import LockManager from '../../infrastructure/LockManager.mjs'
|
||||
import { DeletedProject } from '../../models/DeletedProject.mjs'
|
||||
import { callbackifyAll } from '@overleaf/promise-utils'
|
||||
import ProjectEntityMongoUpdateHandler from './ProjectEntityMongoUpdateHandler.mjs'
|
||||
|
||||
@@ -17,7 +17,7 @@ import logger from '@overleaf/logger'
|
||||
import Features from '../../infrastructure/Features.mjs'
|
||||
import SubscriptionViewModelBuilder from '../Subscription/SubscriptionViewModelBuilder.mjs'
|
||||
import NotificationsHandler from '../Notifications/NotificationsHandler.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import { OError, V1ConnectionError } from '../Errors/Errors.js'
|
||||
import { User } from '../../models/User.mjs'
|
||||
import UserPrimaryEmailCheckHandler from '../User/UserPrimaryEmailCheckHandler.mjs'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Project } from '../../models/Project.mjs'
|
||||
import settings from '@overleaf/settings'
|
||||
import { callbackify } from 'node:util'
|
||||
import { db, ObjectId } from '../../infrastructure/mongodb.js'
|
||||
import { db, ObjectId } from '../../infrastructure/mongodb.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import mongodb from 'mongodb-legacy'
|
||||
const safeCompilers = ['xelatex', 'pdflatex', 'latex', 'lualatex']
|
||||
|
||||
@@ -23,7 +23,7 @@ import globby from 'globby'
|
||||
import _ from 'lodash'
|
||||
import { promisifyAll } from '@overleaf/promise-utils'
|
||||
import logger from '@overleaf/logger'
|
||||
import { BackgroundTaskTracker } from '../../infrastructure/GracefulShutdown.js'
|
||||
import { BackgroundTaskTracker } from '../../infrastructure/GracefulShutdown.mjs'
|
||||
|
||||
const rootDocResets = new BackgroundTaskTracker('root doc resets')
|
||||
const ProjectRootDocManager = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import { callbackify } from '@overleaf/promise-utils'
|
||||
import Settings from '@overleaf/settings'
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import crypto from 'node:crypto'
|
||||
import { db } from '../../infrastructure/mongodb.js'
|
||||
import { db } from '../../infrastructure/mongodb.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import { callbackify } from 'node:util'
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import TpdsUpdateSender from '../ThirdPartyDataStore/TpdsUpdateSender.mjs'
|
||||
import TpdsProjectFlusher from '../ThirdPartyDataStore/TpdsProjectFlusher.mjs'
|
||||
import EditorRealTimeController from '../Editor/EditorRealTimeController.mjs'
|
||||
import SystemMessageManager from '../SystemMessages/SystemMessageManager.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
const AdminController = {
|
||||
_sendDisconnectAllUsersMessage: delay => {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import mongodb from '../../infrastructure/mongodb.js'
|
||||
import mongodb from '../../infrastructure/mongodb.mjs'
|
||||
import { callbackify } from 'node:util'
|
||||
import Settings from '@overleaf/settings'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import LearnedWordsManager from './LearnedWordsManager.mjs'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
|
||||
const learnSchema = z.object({
|
||||
body: z.object({
|
||||
|
||||
@@ -14,7 +14,7 @@ import InstitutionsFeatures from '../Institutions/InstitutionsFeatures.mjs'
|
||||
import UserGetter from '../User/UserGetter.mjs'
|
||||
import AnalyticsManager from '../Analytics/AnalyticsManager.mjs'
|
||||
import Queues from '../../infrastructure/Queues.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import { AI_ADD_ON_CODE } from './AiHelper.mjs'
|
||||
// import { fetchNothing } from '@overleaf/fetch-utils'
|
||||
import metrics from '@overleaf/metrics'
|
||||
|
||||
@@ -19,7 +19,7 @@ import OError from '@overleaf/o-error'
|
||||
import Errors from './Errors.mjs'
|
||||
import SplitTestHandler from '../SplitTests/SplitTestHandler.mjs'
|
||||
import AuthorizationManager from '../Authorization/AuthorizationManager.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import async from 'async'
|
||||
import HttpErrorHandler from '../Errors/HttpErrorHandler.mjs'
|
||||
import RecurlyClient from './RecurlyClient.mjs'
|
||||
@@ -32,7 +32,7 @@ import { User } from '../../models/User.mjs'
|
||||
import UserGetter from '../User/UserGetter.mjs'
|
||||
import PermissionsManager from '../Authorization/PermissionsManager.mjs'
|
||||
import { sanitizeSessionUserForFrontEnd } from '../../infrastructure/FrontEndUser.mjs'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
import { IndeterminateInvoiceError } from '../Errors/Errors.js'
|
||||
import SubscriptionLocator from './SubscriptionLocator.mjs'
|
||||
|
||||
|
||||
@@ -6,10 +6,10 @@ import SubscriptionLocator from './SubscriptionLocator.mjs'
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import UserAuditLogHandler from '../User/UserAuditLogHandler.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import UserGetter from '../User/UserGetter.mjs'
|
||||
import { Subscription } from '../../models/Subscription.mjs'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
import { isProfessionalGroupPlan } from './PlansHelper.mjs'
|
||||
import {
|
||||
MissingBillingInfoError,
|
||||
|
||||
@@ -10,7 +10,7 @@ import { User } from '../../models/User.mjs'
|
||||
import PlansLocator from './PlansLocator.mjs'
|
||||
import TeamInvitesHandler from './TeamInvitesHandler.mjs'
|
||||
import GroupPlansData from './GroupPlansData.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import PaymentProviderEntities from './PaymentProviderEntities.mjs'
|
||||
import {
|
||||
ManuallyCollectedError,
|
||||
|
||||
@@ -13,7 +13,7 @@ import EmailHandler from '../Email/EmailHandler.mjs'
|
||||
import { callbackify } from '@overleaf/promise-utils'
|
||||
import UserUpdater from '../User/UserUpdater.mjs'
|
||||
import { IndeterminateInvoiceError } from '../Errors/Errors.js'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import SplitTestHandler from '../SplitTests/SplitTestHandler.mjs'
|
||||
import { AI_ADD_ON_CODE } from './AiHelper.mjs'
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import PermissionsController from '../Authorization/PermissionsController.mjs'
|
||||
import SubscriptionController from './SubscriptionController.mjs'
|
||||
import SubscriptionGroupController from './SubscriptionGroupController.mjs'
|
||||
import TeamInvitesController from './TeamInvitesController.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
||||
import Settings from '@overleaf/settings'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { db, ObjectId } from '../../infrastructure/mongodb.js'
|
||||
import { db, ObjectId } from '../../infrastructure/mongodb.mjs'
|
||||
import { callbackify } from '@overleaf/promise-utils'
|
||||
import { Subscription } from '../../models/Subscription.mjs'
|
||||
import SubscriptionLocator from './SubscriptionLocator.mjs'
|
||||
@@ -13,8 +13,8 @@ import UserAuditLogHandler from '../User/UserAuditLogHandler.mjs'
|
||||
import UserUpdater from '../User/UserUpdater.mjs'
|
||||
import AccountMappingHelper from '../Analytics/AccountMappingHelper.mjs'
|
||||
import { SSOConfig } from '../../models/SSOConfig.mjs'
|
||||
import mongoose from '../../infrastructure/Mongoose.js'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import mongoose from '../../infrastructure/Mongoose.mjs'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
/**
|
||||
* @typedef {import('../../../../types/subscription/dashboard/subscription').Subscription} Subscription
|
||||
|
||||
@@ -17,7 +17,7 @@ import { callbackify } from '@overleaf/promise-utils'
|
||||
import { V1ConnectionError } from '../Errors/Errors.js'
|
||||
import FeaturesHelper from './FeaturesHelper.mjs'
|
||||
import { formatCurrency } from '../../util/currency.js'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import SplitTestHandler from '../SplitTests/SplitTestHandler.mjs'
|
||||
|
||||
const { MEMBERS_LIMIT_ADD_ON_CODE } = PaymentProviderEntities
|
||||
|
||||
@@ -12,8 +12,8 @@ import { expressify } from '@overleaf/promise-utils'
|
||||
import HttpErrorHandler from '../Errors/HttpErrorHandler.mjs'
|
||||
import PermissionsManager from '../Authorization/PermissionsManager.mjs'
|
||||
import EmailHandler from '../Email/EmailHandler.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import UserAuditLogHandler from '../User/UserAuditLogHandler.mjs'
|
||||
import { sanitizeSessionUserForFrontEnd } from '../../infrastructure/FrontEndUser.mjs'
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import logger from '@overleaf/logger'
|
||||
import crypto from 'node:crypto'
|
||||
import settings from '@overleaf/settings'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import mongodb from 'mongodb-legacy'
|
||||
import { Subscription } from '../../models/Subscription.mjs'
|
||||
import { SSOConfig } from '../../models/SSOConfig.mjs'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { SystemMessage } from '../../models/SystemMessage.mjs'
|
||||
import { addRequiredCleanupHandlerBeforeDrainingConnections } from '../../infrastructure/GracefulShutdown.js'
|
||||
import { addRequiredCleanupHandlerBeforeDrainingConnections } from '../../infrastructure/GracefulShutdown.mjs'
|
||||
import { callbackifyAll } from '@overleaf/promise-utils'
|
||||
import logger from '@overleaf/logger'
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import TagsHandler from './TagsHandler.mjs'
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
|
||||
async function _getTags(userId, _req, res) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import AuthenticationController from '../Authentication/AuthenticationController.mjs'
|
||||
import TemplatesController from './TemplatesController.mjs'
|
||||
import TemplatesMiddleware from './TemplatesMiddleware.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
||||
import AnalyticsRegistrationSourceMiddleware from '../Analytics/AnalyticsRegistrationSourceMiddleware.mjs'
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import ProjectRootDocManager from '../Project/ProjectRootDocManager.mjs'
|
||||
import FileTypeManager from '../Uploads/FileTypeManager.mjs'
|
||||
import CooldownManager from '../Cooldown/CooldownManager.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
async function newUpdate(
|
||||
userId,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import AuthorizationMiddleware from '../Authorization/AuthorizationMiddleware.mjs'
|
||||
import AuthenticationController from '../Authentication/AuthenticationController.mjs'
|
||||
import ProjectUploadController from './ProjectUploadController.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
||||
import Settings from '@overleaf/settings'
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import metrics from '@overleaf/metrics'
|
||||
import AuthenticationManager from '../Authentication/AuthenticationManager.mjs'
|
||||
import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import Features from '../../infrastructure/Features.mjs'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { z, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
import UserAuditLogHandler from './UserAuditLogHandler.mjs'
|
||||
import UserSessionsManager from './UserSessionsManager.mjs'
|
||||
import UserUpdater from './UserUpdater.mjs'
|
||||
@@ -19,8 +19,8 @@ import EmailHandler from '../Email/EmailHandler.mjs'
|
||||
import UrlHelper from '../Helpers/UrlHelper.mjs'
|
||||
import { promisify } from 'node:util'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import { acceptsJson } from '../../infrastructure/RequestContentTypeDetection.js'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import { acceptsJson } from '../../infrastructure/RequestContentTypeDetection.mjs'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import OneTimeTokenHandler from '../Security/OneTimeTokenHandler.mjs'
|
||||
|
||||
async function _sendSecurityAlertClearedSessions(user) {
|
||||
|
||||
@@ -14,7 +14,7 @@ import UserMembershipsHandler from '../UserMembership/UserMembershipsHandler.mjs
|
||||
import UserSessionsManager from './UserSessionsManager.mjs'
|
||||
import UserAuditLogHandler from './UserAuditLogHandler.mjs'
|
||||
import InstitutionsAPI from '../Institutions/InstitutionsAPI.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import OnboardingDataCollectionManager from '../OnboardingDataCollection/OnboardingDataCollectionManager.mjs'
|
||||
import EmailHandler from '../Email/EmailHandler.mjs'
|
||||
|
||||
@@ -16,10 +16,10 @@ import AsyncFormHelper from '../Helpers/AsyncFormHelper.mjs'
|
||||
import AnalyticsManager from '../Analytics/AnalyticsManager.mjs'
|
||||
import UserPrimaryEmailCheckHandler from '../User/UserPrimaryEmailCheckHandler.mjs'
|
||||
import UserAuditLogHandler from './UserAuditLogHandler.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import Features from '../../infrastructure/Features.mjs'
|
||||
import tsscmp from 'tsscmp'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
const AUDIT_LOG_TOKEN_PREFIX_LENGTH = 10
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { callbackify } from 'node:util'
|
||||
import { db } from '../../infrastructure/mongodb.js'
|
||||
import { db } from '../../infrastructure/mongodb.mjs'
|
||||
import moment from 'moment'
|
||||
import settings from '@overleaf/settings'
|
||||
import InstitutionsAPI from '../Institutions/InstitutionsAPI.mjs'
|
||||
@@ -8,9 +8,9 @@ import Errors from '../Errors/Errors.js'
|
||||
import Features from '../../infrastructure/Features.mjs'
|
||||
import { User } from '../../models/User.mjs'
|
||||
import Mongo from '../Helpers/Mongo.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import FeaturesHelper from '../Subscription/FeaturesHelper.mjs'
|
||||
import AsyncLocalStorage from '../../infrastructure/AsyncLocalStorage.js'
|
||||
import AsyncLocalStorage from '../../infrastructure/AsyncLocalStorage.mjs'
|
||||
|
||||
const { normalizeQuery, normalizeMultiQuery } = Mongo
|
||||
const InstitutionsAPIPromises = InstitutionsAPI.promises
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { callbackify } from 'node:util'
|
||||
import TeamInvitesHandler from '../Subscription/TeamInvitesHandler.mjs'
|
||||
import { db, READ_PREFERENCE_SECONDARY } from '../../infrastructure/mongodb.js'
|
||||
import { db, READ_PREFERENCE_SECONDARY } from '../../infrastructure/mongodb.mjs'
|
||||
|
||||
async function populateTeamInvites(user) {
|
||||
return await TeamInvitesHandler.promises.createTeamInvitesForLegacyInvitedEmail(
|
||||
|
||||
@@ -10,7 +10,7 @@ import SubscriptionLocator from '../Subscription/SubscriptionLocator.mjs'
|
||||
import _ from 'lodash'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import Features from '../../infrastructure/Features.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
|
||||
async function settingsPage(req, res) {
|
||||
const userId = SessionManager.getLoggedInUserId(req.session)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.js'
|
||||
import RedisWrapper from '../../infrastructure/RedisWrapper.mjs'
|
||||
const rclient = RedisWrapper.client('websessions')
|
||||
|
||||
const UserSessionsRedis = {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import logger from '@overleaf/logger'
|
||||
import OError from '@overleaf/o-error'
|
||||
import { db } from '../../infrastructure/mongodb.js'
|
||||
import { db } from '../../infrastructure/mongodb.mjs'
|
||||
import Mongo from '../Helpers/Mongo.mjs'
|
||||
import { callbackify } from 'node:util'
|
||||
import UserGetter from './UserGetter.mjs'
|
||||
@@ -17,10 +17,10 @@ import EmailChangeHelper from '../Analytics/EmailChangeHelper.mjs'
|
||||
import SubscriptionLocator from '../Subscription/SubscriptionLocator.mjs'
|
||||
import NotificationsBuilder from '../Notifications/NotificationsBuilder.mjs'
|
||||
import _ from 'lodash'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import UserSessionsManager from './UserSessionsManager.mjs'
|
||||
import ThirdPartyIdentityManager from './ThirdPartyIdentityManager.mjs'
|
||||
import AsyncLocalStorage from '../../infrastructure/AsyncLocalStorage.js'
|
||||
import AsyncLocalStorage from '../../infrastructure/AsyncLocalStorage.mjs'
|
||||
|
||||
const { normalizeQuery } = Mongo
|
||||
|
||||
|
||||
@@ -2,14 +2,14 @@ import SessionManager from '../Authentication/SessionManager.mjs'
|
||||
import UserMembershipHandler from './UserMembershipHandler.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import EmailHelper from '../Helpers/EmailHelper.mjs'
|
||||
import { csvAttachment } from '../../infrastructure/Response.js'
|
||||
import { csvAttachment } from '../../infrastructure/Response.mjs'
|
||||
import UserMembershipErrors from './UserMembershipErrors.mjs'
|
||||
import { SSOConfig } from '../../models/SSOConfig.mjs'
|
||||
import { Parser as CSVParser } from 'json2csv'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import PlansLocator from '../Subscription/PlansLocator.mjs'
|
||||
import RecurlyClient from '../Subscription/RecurlyClient.mjs'
|
||||
import Modules from '../../infrastructure/Modules.js'
|
||||
import Modules from '../../infrastructure/Modules.mjs'
|
||||
import UserMembershipAuthorization from './UserMembershipAuthorization.mjs'
|
||||
|
||||
async function manageGroupMembers(req, res, next) {
|
||||
|
||||
@@ -10,7 +10,7 @@ import EntityConfigs from './UserMembershipEntityConfigs.mjs'
|
||||
import Errors from '../Errors/Errors.js'
|
||||
import HttpErrorHandler from '../Errors/HttpErrorHandler.mjs'
|
||||
import TemplatesManager from '../Templates/TemplatesManager.mjs'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.js'
|
||||
import { z, zz, validateReq } from '../../infrastructure/Validation.mjs'
|
||||
import AdminAuthorizationHelper from '../Helpers/AdminAuthorizationHelper.mjs'
|
||||
|
||||
const { useAdminCapabilities } = AdminAuthorizationHelper
|
||||
|
||||
@@ -2,7 +2,7 @@ import UserMembershipMiddleware from './UserMembershipMiddleware.mjs'
|
||||
import UserMembershipController from './UserMembershipController.mjs'
|
||||
import SubscriptionGroupController from '../Subscription/SubscriptionGroupController.mjs'
|
||||
import TeamInvitesController from '../Subscription/TeamInvitesController.mjs'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.js'
|
||||
import { RateLimiter } from '../../infrastructure/RateLimiter.mjs'
|
||||
import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
|
||||
|
||||
const rateLimiters = {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// @ts-check
|
||||
const { AsyncLocalStorage } = require('node:async_hooks')
|
||||
import { AsyncLocalStorage } from 'node:async_hooks'
|
||||
|
||||
/**
|
||||
* @typedef {Object} RequestContext
|
||||
@@ -31,7 +31,7 @@ function removeItem(key) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export default {
|
||||
middleware,
|
||||
storage: asyncLocalStorage,
|
||||
removeItem,
|
||||
@@ -9,10 +9,10 @@ import contentDisposition from 'content-disposition'
|
||||
import Features from './Features.mjs'
|
||||
import SessionManager from '../Features/Authentication/SessionManager.mjs'
|
||||
import PackageVersions from './PackageVersions.js'
|
||||
import Modules from './Modules.js'
|
||||
import Modules from './Modules.mjs'
|
||||
import Errors from '../Features/Errors/Errors.js'
|
||||
import AdminAuthorizationHelper from '../Features/Helpers/AdminAuthorizationHelper.mjs'
|
||||
import { addOptionalCleanupHandlerAfterDrainingConnections } from './GracefulShutdown.js'
|
||||
import { addOptionalCleanupHandlerAfterDrainingConnections } from './GracefulShutdown.mjs'
|
||||
import { sanitizeSessionUserForFrontEnd } from './FrontEndUser.mjs'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
|
||||
|
||||
@@ -5,18 +5,19 @@
|
||||
* DS207: Consider shorter variations of null checks
|
||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
||||
*/
|
||||
const fs = require('fs')
|
||||
const OError = require('@overleaf/o-error')
|
||||
const logger = require('@overleaf/logger')
|
||||
const crypto = require('crypto')
|
||||
const _ = require('lodash')
|
||||
const Settings = require('@overleaf/settings')
|
||||
const request = require('request')
|
||||
const { Transform, pipeline } = require('stream')
|
||||
const { FileTooLargeError } = require('../Features/Errors/Errors')
|
||||
const { promisifyAll } = require('@overleaf/promise-utils')
|
||||
import fs from 'node:fs'
|
||||
|
||||
class SizeLimitedStream extends Transform {
|
||||
import OError from '@overleaf/o-error'
|
||||
import logger from '@overleaf/logger'
|
||||
import crypto from 'node:crypto'
|
||||
import _ from 'lodash'
|
||||
import Settings from '@overleaf/settings'
|
||||
import request from 'request'
|
||||
import { Transform, pipeline } from 'node:stream'
|
||||
import { FileTooLargeError } from '../Features/Errors/Errors.js'
|
||||
import { promisifyAll } from '@overleaf/promise-utils'
|
||||
|
||||
export class SizeLimitedStream extends Transform {
|
||||
constructor(options) {
|
||||
options.autoDestroy = true
|
||||
super(options)
|
||||
@@ -179,8 +180,8 @@ const FileWriter = {
|
||||
},
|
||||
}
|
||||
|
||||
module.exports = FileWriter
|
||||
module.exports.promises = promisifyAll(FileWriter, {
|
||||
FileWriter.promises = promisifyAll(FileWriter, {
|
||||
without: ['ensureDumpFolderExists'],
|
||||
})
|
||||
module.exports.SizeLimitedStream = SizeLimitedStream
|
||||
|
||||
export default FileWriter
|
||||
@@ -9,29 +9,37 @@
|
||||
- By now the node app should exit on its own.
|
||||
*/
|
||||
|
||||
const logger = require('@overleaf/logger')
|
||||
const OError = require('@overleaf/o-error')
|
||||
const Settings = require('@overleaf/settings')
|
||||
const Metrics = require('@overleaf/metrics')
|
||||
const sleep = require('util').promisify(setTimeout)
|
||||
import logger from '@overleaf/logger'
|
||||
|
||||
import OError from '@overleaf/o-error'
|
||||
import Settings from '@overleaf/settings'
|
||||
import Metrics from '@overleaf/metrics'
|
||||
import { setTimeout as sleep } from 'node:timers/promises'
|
||||
|
||||
const optionalCleanupHandlersBeforeStoppingTraffic = []
|
||||
const requiredCleanupHandlersBeforeDrainingConnections = []
|
||||
const optionalCleanupHandlersAfterDrainingConnections = []
|
||||
const connectionDrainer = []
|
||||
|
||||
function addConnectionDrainer(label, handler) {
|
||||
export function addConnectionDrainer(label, handler) {
|
||||
connectionDrainer.push({ label, handler })
|
||||
}
|
||||
|
||||
function addOptionalCleanupHandlerBeforeStoppingTraffic(label, handler) {
|
||||
export function addOptionalCleanupHandlerBeforeStoppingTraffic(label, handler) {
|
||||
optionalCleanupHandlersBeforeStoppingTraffic.push({ label, handler })
|
||||
}
|
||||
|
||||
function addRequiredCleanupHandlerBeforeDrainingConnections(label, handler) {
|
||||
export function addRequiredCleanupHandlerBeforeDrainingConnections(
|
||||
label,
|
||||
handler
|
||||
) {
|
||||
requiredCleanupHandlersBeforeDrainingConnections.push({ label, handler })
|
||||
}
|
||||
|
||||
function addOptionalCleanupHandlerAfterDrainingConnections(label, handler) {
|
||||
export function addOptionalCleanupHandlerAfterDrainingConnections(
|
||||
label,
|
||||
handler
|
||||
) {
|
||||
optionalCleanupHandlersAfterDrainingConnections.push({ label, handler })
|
||||
}
|
||||
|
||||
@@ -55,7 +63,7 @@ async function runHandlers(stage, handlers, logOnly) {
|
||||
* @param {import('net').Server} [server]
|
||||
* @param {number|string} [signal]
|
||||
*/
|
||||
async function gracefulShutdown(server, signal) {
|
||||
export async function gracefulShutdown(server, signal) {
|
||||
logger.warn({ signal }, 'graceful shutdown: started shutdown sequence')
|
||||
Settings.shuttingDown = true
|
||||
|
||||
@@ -110,7 +118,7 @@ async function gracefulShutdown(server, signal) {
|
||||
logger.info({}, 'graceful shutdown: ready to exit')
|
||||
}
|
||||
|
||||
function triggerGracefulShutdown(server, signal) {
|
||||
export function triggerGracefulShutdown(server, signal) {
|
||||
gracefulShutdown(server, signal).catch(err => {
|
||||
logger.err(
|
||||
{ err },
|
||||
@@ -119,7 +127,7 @@ function triggerGracefulShutdown(server, signal) {
|
||||
})
|
||||
}
|
||||
|
||||
class BackgroundTaskTracker {
|
||||
export class BackgroundTaskTracker {
|
||||
constructor(label) {
|
||||
// Do not leak any handles, just record the number of pending jobs.
|
||||
// In case we miss the cleanup of one job, the worst thing that can happen
|
||||
@@ -141,7 +149,7 @@ class BackgroundTaskTracker {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export default {
|
||||
BackgroundTaskTracker,
|
||||
addConnectionDrainer,
|
||||
addOptionalCleanupHandlerBeforeStoppingTraffic,
|
||||
@@ -1,6 +1,6 @@
|
||||
// @ts-check
|
||||
|
||||
const Settings = require('@overleaf/settings')
|
||||
import Settings from '@overleaf/settings'
|
||||
|
||||
/**
|
||||
* @import { HttpPermissionsPolicy } from './types'
|
||||
@@ -85,4 +85,4 @@ class HttpPermissionsPolicyMiddleware {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = HttpPermissionsPolicyMiddleware
|
||||
export default HttpPermissionsPolicyMiddleware
|
||||
@@ -1,9 +1,8 @@
|
||||
const settings = require('@overleaf/settings')
|
||||
const RedisWrapper = require('./RedisWrapper')
|
||||
import settings from '@overleaf/settings'
|
||||
import RedisWrapper from './RedisWrapper.mjs'
|
||||
import RedisWebLocker from '@overleaf/redis-wrapper/RedisWebLocker.js'
|
||||
const rclient = RedisWrapper.client('lock')
|
||||
|
||||
const RedisWebLocker = require('@overleaf/redis-wrapper/RedisWebLocker')
|
||||
|
||||
// this method creates a lock manager with the provided timeout options
|
||||
function createLockManager(options) {
|
||||
return new RedisWebLocker({
|
||||
@@ -33,4 +32,4 @@ LockManager.withTimeout = function (timeout) {
|
||||
return createLockManager(lockManagerSettingsWithTimeout)
|
||||
}
|
||||
|
||||
module.exports = LockManager
|
||||
export default LockManager
|
||||
@@ -1,22 +1,28 @@
|
||||
// @ts-check
|
||||
|
||||
const Metrics = require('@overleaf/metrics')
|
||||
import Metrics from '@overleaf/metrics'
|
||||
|
||||
exports.analyticsQueue = new Metrics.prom.Counter({
|
||||
const analyticsQueue = new Metrics.prom.Counter({
|
||||
name: 'analytics_queue',
|
||||
help: 'Number of events sent to the analytics queue',
|
||||
labelNames: ['status', 'event_type'],
|
||||
})
|
||||
|
||||
exports.revertFileDurationSeconds = new Metrics.prom.Histogram({
|
||||
const revertFileDurationSeconds = new Metrics.prom.Histogram({
|
||||
name: 'timer_revert_file_duration_seconds',
|
||||
help: 'Duration of the file restore operation',
|
||||
buckets: [0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5],
|
||||
labelNames: ['type'],
|
||||
})
|
||||
|
||||
exports.revertProjectDurationSeconds = new Metrics.prom.Histogram({
|
||||
const revertProjectDurationSeconds = new Metrics.prom.Histogram({
|
||||
name: 'timer_revert_project_duration_seconds',
|
||||
help: 'Duration of the project restore operation',
|
||||
buckets: [0.5, 1, 2, 5, 10, 30, 60, 120, 300, 900, 1800],
|
||||
})
|
||||
|
||||
export default {
|
||||
analyticsQueue,
|
||||
revertFileDurationSeconds,
|
||||
revertProjectDurationSeconds,
|
||||
}
|
||||
@@ -1,17 +1,18 @@
|
||||
// @ts-check
|
||||
|
||||
const fs = require('fs')
|
||||
const Path = require('path')
|
||||
const { promisify, callbackify } = require('util')
|
||||
const Settings = require('@overleaf/settings')
|
||||
const Views = require('./Views')
|
||||
const _ = require('lodash')
|
||||
const Metrics = require('@overleaf/metrics')
|
||||
import fs from 'node:fs'
|
||||
|
||||
import Path from 'node:path'
|
||||
import { promisify, callbackify } from 'node:util'
|
||||
import Settings from '@overleaf/settings'
|
||||
import Views from './Views.mjs'
|
||||
import _ from 'lodash'
|
||||
import Metrics from '@overleaf/metrics'
|
||||
|
||||
/** @import { WebModule } from "../../../types/web-module" */
|
||||
/** @import { RequestHandler } from "express" */
|
||||
|
||||
const MODULE_BASE_PATH = Path.join(__dirname, '/../../../modules')
|
||||
const MODULE_BASE_PATH = Path.join(import.meta.dirname, '/../../../modules')
|
||||
|
||||
/** @type {WebModule[]} */
|
||||
const _modules = []
|
||||
@@ -207,7 +208,7 @@ async function getMiddleware(name) {
|
||||
return _middleware[name] || []
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export default {
|
||||
applyNonCsrfRouter,
|
||||
applyRouter,
|
||||
linkedFileAgentsIncludes,
|
||||
@@ -1,8 +1,8 @@
|
||||
const mongoose = require('mongoose')
|
||||
const Settings = require('@overleaf/settings')
|
||||
const Metrics = require('@overleaf/metrics')
|
||||
const logger = require('@overleaf/logger')
|
||||
const { addConnectionDrainer } = require('./GracefulShutdown')
|
||||
import mongoose from 'mongoose'
|
||||
import Settings from '@overleaf/settings'
|
||||
import Metrics from '@overleaf/metrics'
|
||||
import logger from '@overleaf/logger'
|
||||
import { addConnectionDrainer } from './GracefulShutdown.mjs'
|
||||
|
||||
mongoose.set('autoIndex', false)
|
||||
mongoose.set('strictQuery', false)
|
||||
@@ -54,4 +54,4 @@ mongoose.Promise = global.Promise
|
||||
|
||||
mongoose.connectionPromise = connectionPromise
|
||||
|
||||
module.exports = mongoose
|
||||
export default mongoose
|
||||
@@ -7,12 +7,12 @@ import FeaturesUpdater from '../Features/Subscription/FeaturesUpdater.mjs'
|
||||
import {
|
||||
addOptionalCleanupHandlerBeforeStoppingTraffic,
|
||||
addRequiredCleanupHandlerBeforeDrainingConnections,
|
||||
} from './GracefulShutdown.js'
|
||||
} from './GracefulShutdown.mjs'
|
||||
|
||||
import EmailHandler from '../Features/Email/EmailHandler.mjs'
|
||||
import logger from '@overleaf/logger'
|
||||
import OError from '@overleaf/o-error'
|
||||
import Modules from './Modules.js'
|
||||
import Modules from './Modules.mjs'
|
||||
|
||||
/**
|
||||
* @typedef {{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import Queue from 'bull'
|
||||
import Settings from '@overleaf/settings'
|
||||
import Features from '../infrastructure/Features.mjs'
|
||||
import { addConnectionDrainer } from './GracefulShutdown.js'
|
||||
import { addConnectionDrainer } from './GracefulShutdown.mjs'
|
||||
|
||||
// Bull will keep a fixed number of the most recently completed jobs. This is
|
||||
// useful to inspect recently completed jobs. The bull prometheus exporter also
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
const Settings = require('@overleaf/settings')
|
||||
const Metrics = require('@overleaf/metrics')
|
||||
const logger = require('@overleaf/logger')
|
||||
const RedisWrapper = require('./RedisWrapper')
|
||||
const RateLimiterFlexible = require('rate-limiter-flexible')
|
||||
const OError = require('@overleaf/o-error')
|
||||
import Settings from '@overleaf/settings'
|
||||
import Metrics from '@overleaf/metrics'
|
||||
import logger from '@overleaf/logger'
|
||||
import RedisWrapper from './RedisWrapper.mjs'
|
||||
import RateLimiterFlexible from 'rate-limiter-flexible'
|
||||
import OError from '@overleaf/o-error'
|
||||
|
||||
const rclient = RedisWrapper.client('ratelimiter')
|
||||
|
||||
/**
|
||||
* Wrapper over the RateLimiterRedis class
|
||||
*/
|
||||
class RateLimiter {
|
||||
export class RateLimiter {
|
||||
#opts
|
||||
|
||||
/**
|
||||
@@ -122,13 +122,13 @@ class RateLimiter {
|
||||
* Shared rate limiters
|
||||
*/
|
||||
|
||||
const openProjectRateLimiter = new RateLimiter('open-project', {
|
||||
export const openProjectRateLimiter = new RateLimiter('open-project', {
|
||||
points: 15,
|
||||
duration: 60,
|
||||
})
|
||||
|
||||
// Keep in sync with the can-skip-captcha options.
|
||||
const overleafLoginRateLimiter = new RateLimiter(
|
||||
export const overleafLoginRateLimiter = new RateLimiter(
|
||||
'overleaf-login',
|
||||
Settings.rateLimit?.login?.ip || {
|
||||
points: 20,
|
||||
@@ -137,7 +137,7 @@ const overleafLoginRateLimiter = new RateLimiter(
|
||||
}
|
||||
)
|
||||
|
||||
module.exports = {
|
||||
export default {
|
||||
RateLimiter,
|
||||
openProjectRateLimiter,
|
||||
overleafLoginRateLimiter,
|
||||
@@ -1,6 +1,6 @@
|
||||
const Settings = require('@overleaf/settings')
|
||||
const redis = require('@overleaf/redis-wrapper')
|
||||
const { addConnectionDrainer } = require('./GracefulShutdown')
|
||||
import Settings from '@overleaf/settings'
|
||||
import redis from '@overleaf/redis-wrapper'
|
||||
import { addConnectionDrainer } from './GracefulShutdown.mjs'
|
||||
|
||||
/**
|
||||
* A per-feature interface to Redis, looks up the feature in `settings.redis`
|
||||
@@ -23,4 +23,4 @@ async function cleanupTestRedis() {
|
||||
await redis.cleanupTestRedis(rclient)
|
||||
}
|
||||
|
||||
module.exports = { client, cleanupTestRedis }
|
||||
export default { client, cleanupTestRedis }
|
||||
@@ -1,5 +0,0 @@
|
||||
module.exports = {
|
||||
acceptsJson(req) {
|
||||
return req.accepts(['html', 'json']) === 'json'
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
export function acceptsJson(req) {
|
||||
return req.accepts(['html', 'json']) === 'json'
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
function csvAttachment(res, body, filename) {
|
||||
export function csvAttachment(res, body, filename) {
|
||||
if (!filename || !filename.endsWith('.csv')) {
|
||||
throw new Error('filename must end with .csv')
|
||||
}
|
||||
@@ -8,23 +8,23 @@ function csvAttachment(res, body, filename) {
|
||||
res.send(body)
|
||||
}
|
||||
|
||||
function preparePlainTextResponse(res) {
|
||||
export function preparePlainTextResponse(res) {
|
||||
res.setHeader('X-Content-Type-Options', 'nosniff')
|
||||
res.contentType('text/plain; charset=utf-8')
|
||||
}
|
||||
|
||||
function plainTextResponse(res, body) {
|
||||
export function plainTextResponse(res, body) {
|
||||
preparePlainTextResponse(res)
|
||||
res.send(body)
|
||||
}
|
||||
|
||||
function xmlResponse(res, body) {
|
||||
export function xmlResponse(res, body) {
|
||||
res.setHeader('X-Content-Type-Options', 'nosniff')
|
||||
res.contentType('application/xml; charset=utf-8')
|
||||
res.send(body)
|
||||
}
|
||||
|
||||
function prepareZipAttachment(res, filename) {
|
||||
export function prepareZipAttachment(res, filename) {
|
||||
if (!filename || !filename.endsWith('.zip')) {
|
||||
throw new Error('filename must end with .zip')
|
||||
}
|
||||
@@ -33,12 +33,12 @@ function prepareZipAttachment(res, filename) {
|
||||
res.setHeader('X-Content-Type-Options', 'nosniff')
|
||||
}
|
||||
|
||||
function zipAttachment(res, body, filename) {
|
||||
export function zipAttachment(res, body, filename) {
|
||||
prepareZipAttachment(res, filename)
|
||||
res.send(body)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export default {
|
||||
csvAttachment,
|
||||
plainTextResponse,
|
||||
preparePlainTextResponse,
|
||||
@@ -1,5 +1,5 @@
|
||||
import express from 'express'
|
||||
import { plainTextResponse } from './Response.js'
|
||||
import { plainTextResponse } from './Response.mjs'
|
||||
|
||||
/*
|
||||
This wrapper is implemented specifically to handle "Premature Close" errors.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user