diff --git a/services/web/app/src/Features/Editor/EditorController.mjs b/services/web/app/src/Features/Editor/EditorController.mjs index a3fd2b0062..f1b1c32617 100644 --- a/services/web/app/src/Features/Editor/EditorController.mjs +++ b/services/web/app/src/Features/Editor/EditorController.mjs @@ -8,7 +8,7 @@ import ProjectDeleter from '../Project/ProjectDeleter.mjs' import EditorRealTimeController from './EditorRealTimeController.mjs' import async from 'async' import PublicAccessLevels from '../Authorization/PublicAccessLevels.mjs' -import { promisifyAll } from '@overleaf/promise-utils' +import { promisify, promisifyMultiResult } from '@overleaf/promise-utils' const EditorController = { addDoc(projectId, folderId, docName, docLines, source, userId, callback) { @@ -687,9 +687,34 @@ const EditorController = { }, } -EditorController.promises = promisifyAll(EditorController, { - multiResult: { - mkdirp: ['newFolders', 'lastFolder'], - }, -}) +EditorController.promises = { + addDoc: promisify(EditorController.addDoc), + addDocWithRanges: promisify(EditorController.addDocWithRanges), + addFile: promisify(EditorController.addFile), + appendToDoc: promisify(EditorController.appendToDoc), + upsertDoc: promisify(EditorController.upsertDoc), + upsertFile: promisify(EditorController.upsertFile), + upsertDocWithPath: promisify(EditorController.upsertDocWithPath), + upsertFileWithPath: promisify(EditorController.upsertFileWithPath), + addFolder: promisify(EditorController.addFolder), + mkdirp: promisifyMultiResult(EditorController.mkdirp, [ + 'newFolders', + 'lastFolder', + ]), + deleteEntity: promisify(EditorController.deleteEntity), + deleteEntityWithPath: promisify(EditorController.deleteEntityWithPath), + updateProjectDescription: promisify( + EditorController.updateProjectDescription + ), + deleteProject: promisify(EditorController.deleteProject), + renameEntity: promisify(EditorController.renameEntity), + moveEntity: promisify(EditorController.moveEntity), + renameProject: promisify(EditorController.renameProject), + setCompiler: promisify(EditorController.setCompiler), + setImageName: promisify(EditorController.setImageName), + setSpellCheckLanguage: promisify(EditorController.setSpellCheckLanguage), + setPublicAccessLevel: promisify(EditorController.setPublicAccessLevel), + setRootDoc: promisify(EditorController.setRootDoc), + setMainBibliographyDoc: promisify(EditorController.setMainBibliographyDoc), +} export default EditorController diff --git a/services/web/app/src/Features/FileStore/FileStoreHandler.mjs b/services/web/app/src/Features/FileStore/FileStoreHandler.mjs index 51612969f7..19b92fedc9 100644 --- a/services/web/app/src/Features/FileStore/FileStoreHandler.mjs +++ b/services/web/app/src/Features/FileStore/FileStoreHandler.mjs @@ -6,7 +6,7 @@ import HistoryManager from '../History/HistoryManager.mjs' 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 { promisifyMultiResult } from '@overleaf/promise-utils' import Modules from '../../infrastructure/Modules.mjs' const FileStoreHandler = { @@ -115,11 +115,15 @@ const FileStoreHandler = { }, } -FileStoreHandler.promises = promisifyAll(FileStoreHandler, { - multiResult: { - uploadFileFromDisk: ['fileRef', 'createdBlob', 'size'], - uploadFileFromDiskWithHistoryId: ['fileRef', 'createdBlob', 'size'], - }, -}) +FileStoreHandler.promises = { + uploadFileFromDisk: promisifyMultiResult( + FileStoreHandler.uploadFileFromDisk, + ['fileRef', 'createdBlob', 'size'] + ), + uploadFileFromDiskWithHistoryId: promisifyMultiResult( + FileStoreHandler.uploadFileFromDiskWithHistoryId, + ['fileRef', 'createdBlob', 'size'] + ), +} export default FileStoreHandler diff --git a/services/web/app/src/Features/Institutions/InstitutionsAPI.mjs b/services/web/app/src/Features/Institutions/InstitutionsAPI.mjs index f1843805c4..fc675ea599 100644 --- a/services/web/app/src/Features/Institutions/InstitutionsAPI.mjs +++ b/services/web/app/src/Features/Institutions/InstitutionsAPI.mjs @@ -3,7 +3,7 @@ import OError from '@overleaf/o-error' import logger from '@overleaf/logger' import settings from '@overleaf/settings' import request from 'requestretry' -import { promisifyAll, promiseMapWithLimit } from '@overleaf/promise-utils' +import { promisify, promiseMapWithLimit } from '@overleaf/promise-utils' import NotificationsBuilder from '../Notifications/NotificationsBuilder.mjs' import { V1ConnectionError, @@ -406,17 +406,28 @@ function makeAffiliationRequest(options, callback) { }) } -InstitutionsAPI.promises = promisifyAll(InstitutionsAPI, { - without: [ - 'addAffiliation', - 'removeAffiliation', - 'getUsersNeedingReconfirmationsLapsedProcessed', - ], -}) - -InstitutionsAPI.promises.addAffiliation = addAffiliation -InstitutionsAPI.promises.removeAffiliation = removeAffiliation -InstitutionsAPI.promises.getUsersNeedingReconfirmationsLapsedProcessed = - getUsersNeedingReconfirmationsLapsedProcessed +InstitutionsAPI.promises = { + getInstitutionAffiliations: promisify( + InstitutionsAPI.getInstitutionAffiliations + ), + getConfirmedInstitutionAffiliations: promisify( + InstitutionsAPI.getConfirmedInstitutionAffiliations + ), + getInstitutionAffiliationsCounts: promisify( + InstitutionsAPI.getInstitutionAffiliationsCounts + ), + getLicencesForAnalytics: promisify(InstitutionsAPI.getLicencesForAnalytics), + getUserAffiliations: promisify(InstitutionsAPI.getUserAffiliations), + getUsersNeedingReconfirmationsLapsedProcessed, + addAffiliation, + removeAffiliation, + endorseAffiliation: promisify(InstitutionsAPI.endorseAffiliation), + deleteAffiliations: promisify(InstitutionsAPI.deleteAffiliations), + addEntitlement: promisify(InstitutionsAPI.addEntitlement), + removeEntitlement: promisify(InstitutionsAPI.removeEntitlement), + sendUsersWithReconfirmationsLapsedProcessed: promisify( + InstitutionsAPI.sendUsersWithReconfirmationsLapsedProcessed + ), +} export default InstitutionsAPI diff --git a/services/web/app/src/Features/Spelling/SpellingHandler.mjs b/services/web/app/src/Features/Spelling/SpellingHandler.mjs index f9ee3253bc..3775f63032 100644 --- a/services/web/app/src/Features/Spelling/SpellingHandler.mjs +++ b/services/web/app/src/Features/Spelling/SpellingHandler.mjs @@ -1,6 +1,6 @@ import OError from '@overleaf/o-error' import Metrics from '@overleaf/metrics' -import { promisifyAll } from '@overleaf/promise-utils' +import { promisify } from '@overleaf/promise-utils' import LearnedWordsManager from './LearnedWordsManager.mjs' const SpellingHandler = { @@ -26,4 +26,13 @@ const SpellingHandler = { }, } -export default { ...SpellingHandler, promises: promisifyAll(SpellingHandler) } +export default { + ...SpellingHandler, + promises: { + getUserDictionary: promisify(SpellingHandler.getUserDictionary), + deleteWordFromUserDictionary: promisify( + SpellingHandler.deleteWordFromUserDictionary + ), + deleteUserDictionary: promisify(SpellingHandler.deleteUserDictionary), + }, +} diff --git a/services/web/app/src/Features/Subscription/V1SubscriptionManager.mjs b/services/web/app/src/Features/Subscription/V1SubscriptionManager.mjs index bc4d1a4b33..641a6c6658 100644 --- a/services/web/app/src/Features/Subscription/V1SubscriptionManager.mjs +++ b/services/web/app/src/Features/Subscription/V1SubscriptionManager.mjs @@ -2,7 +2,7 @@ import UserGetter from '../User/UserGetter.mjs' import request from 'requestretry' import settings from '@overleaf/settings' import { V1ConnectionError, NotFoundError } from '../Errors/Errors.js' -import { promisifyAll } from '@overleaf/promise-utils' +import { promisify } from '@overleaf/promise-utils' const V1SubscriptionManager = { cancelV1Subscription(userId, callback) { @@ -117,8 +117,9 @@ const V1SubscriptionManager = { }, } -V1SubscriptionManager.promises = promisifyAll(V1SubscriptionManager, { - without: ['getGrandfatheredFeaturesForV1User'], -}) +V1SubscriptionManager.promises = { + cancelV1Subscription: promisify(V1SubscriptionManager.cancelV1Subscription), + v1IdForUser: promisify(V1SubscriptionManager.v1IdForUser), +} export default V1SubscriptionManager diff --git a/services/web/app/src/Features/Uploads/ArchiveManager.mjs b/services/web/app/src/Features/Uploads/ArchiveManager.mjs index 24eac59f8b..0982727484 100644 --- a/services/web/app/src/Features/Uploads/ArchiveManager.mjs +++ b/services/web/app/src/Features/Uploads/ArchiveManager.mjs @@ -26,7 +26,7 @@ import { ZipContentsTooLargeError, } from './ArchiveErrors.mjs' import _ from 'lodash' -import { promisifyAll } from '@overleaf/promise-utils' +import { promisify } from '@overleaf/promise-utils' const ONE_MEG = 1024 * 1024 @@ -267,5 +267,8 @@ const ArchiveManager = { }, } -ArchiveManager.promises = promisifyAll(ArchiveManager) +ArchiveManager.promises = { + extractZipArchive: promisify(ArchiveManager.extractZipArchive), + findTopLevelDirectory: promisify(ArchiveManager.findTopLevelDirectory), +} export default ArchiveManager diff --git a/services/web/app/src/Features/V1/V1Api.mjs b/services/web/app/src/Features/V1/V1Api.mjs index a81719b3c3..639dc6c556 100644 --- a/services/web/app/src/Features/V1/V1Api.mjs +++ b/services/web/app/src/Features/V1/V1Api.mjs @@ -11,7 +11,7 @@ import request from 'request' import settings from '@overleaf/settings' import Errors from '../Errors/Errors.js' -import { promisifyAll } from '@overleaf/promise-utils' +import { promisifyMultiResult } from '@overleaf/promise-utils' // TODO: check what happens when these settings aren't defined const DEFAULT_V1_PARAMS = { @@ -98,10 +98,8 @@ const V1Api = { }, } -V1Api.promises = promisifyAll(V1Api, { - multiResult: { - request: ['response', 'body'], - oauthRequest: ['response', 'body'], - }, -}) +V1Api.promises = { + request: promisifyMultiResult(V1Api.request, ['response', 'body']), + oauthRequest: promisifyMultiResult(V1Api.oauthRequest, ['response', 'body']), +} export default V1Api diff --git a/services/web/app/src/infrastructure/FileWriter.mjs b/services/web/app/src/infrastructure/FileWriter.mjs index 12cf89fdd7..aee445569f 100644 --- a/services/web/app/src/infrastructure/FileWriter.mjs +++ b/services/web/app/src/infrastructure/FileWriter.mjs @@ -15,7 +15,7 @@ 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' +import { promisify } from '@overleaf/promise-utils' export class SizeLimitedStream extends Transform { constructor(options) { @@ -180,8 +180,11 @@ const FileWriter = { }, } -FileWriter.promises = promisifyAll(FileWriter, { - without: ['ensureDumpFolderExists'], -}) +FileWriter.promises = { + writeLinesToDisk: promisify(FileWriter.writeLinesToDisk), + writeContentToDisk: promisify(FileWriter.writeContentToDisk), + writeStreamToDisk: promisify(FileWriter.writeStreamToDisk), + writeUrlToDisk: promisify(FileWriter.writeUrlToDisk), +} export default FileWriter