diff --git a/services/web/.eslintrc b/services/web/.eslintrc index fdbf504c06..43eb77555e 100644 --- a/services/web/.eslintrc +++ b/services/web/.eslintrc @@ -43,7 +43,6 @@ // TODO: re-enable and fix "no-prototype-builtins": "off", "no-var": "off", - "prefer-const": "off", "array-callback-return": "off", "no-unreachable-loop": "off", "no-loss-of-precision": "off", diff --git a/services/web/app/src/Features/Authentication/AuthenticationController.js b/services/web/app/src/Features/Authentication/AuthenticationController.js index 572e82616a..8dfc47e1e0 100644 --- a/services/web/app/src/Features/Authentication/AuthenticationController.js +++ b/services/web/app/src/Features/Authentication/AuthenticationController.js @@ -187,7 +187,7 @@ const AuthenticationController = { if (!sessionUser) { return } - for (let key in props) { + for (const key in props) { const value = props[key] sessionUser[key] = value } @@ -362,7 +362,7 @@ const AuthenticationController = { }, httpAuth: basicAuth(function (user, pass) { - let expectedPassword = Settings.httpAuthUsers[user] + const expectedPassword = Settings.httpAuthUsers[user] const isValid = expectedPassword && expectedPassword.length === pass.length && @@ -499,7 +499,7 @@ function _afterLoginSessionSetup(req, user, callback) { req.sessionStore.generate(req) // Note: the validation token is not writable, so it does not get // transferred to the new session below. - for (let key in oldSession) { + for (const key in oldSession) { const value = oldSession[key] if (key !== '__tmp' && key !== 'csrfSecret') { req.session[key] = value diff --git a/services/web/app/src/Features/Collaborators/CollaboratorsGetter.js b/services/web/app/src/Features/Collaborators/CollaboratorsGetter.js index 6f63573cc3..3519045187 100644 --- a/services/web/app/src/Features/Collaborators/CollaboratorsGetter.js +++ b/services/web/app/src/Features/Collaborators/CollaboratorsGetter.js @@ -86,7 +86,7 @@ async function getInvitedMembersWithPrivilegeLevelsFromFields( collaboratorIds, readOnlyIds ) { - let members = _getMemberIdsWithPrivilegeLevelsFromFields( + const members = _getMemberIdsWithPrivilegeLevelsFromFields( ownerId, collaboratorIds, readOnlyIds, diff --git a/services/web/app/src/Features/Compile/ClsiManager.js b/services/web/app/src/Features/Compile/ClsiManager.js index 096cd3ad78..5c9323e33f 100644 --- a/services/web/app/src/Features/Compile/ClsiManager.js +++ b/services/web/app/src/Features/Compile/ClsiManager.js @@ -651,7 +651,7 @@ const ClsiManager = { ) } const docs = {} - for (let doc of docUpdaterDocs || []) { + for (const doc of docUpdaterDocs || []) { const path = docPath[doc._id] docs[path] = doc } diff --git a/services/web/app/src/Features/Compile/ClsiStateManager.js b/services/web/app/src/Features/Compile/ClsiStateManager.js index 364ed9f124..b5ac0a85ac 100644 --- a/services/web/app/src/Features/Compile/ClsiStateManager.js +++ b/services/web/app/src/Features/Compile/ClsiStateManager.js @@ -59,7 +59,7 @@ module.exports = ClsiStateManager = { const optionsList = (() => { const result = [] const object = options || {} - for (let key in object) { + for (const key in object) { const value = object[key] if (!['isAutoCompile'].includes(key)) { result.push(`option ${key}:${value}`) diff --git a/services/web/app/src/Features/Compile/CompileController.js b/services/web/app/src/Features/Compile/CompileController.js index f274018c90..5a3a91b76c 100644 --- a/services/web/app/src/Features/Compile/CompileController.js +++ b/services/web/app/src/Features/Compile/CompileController.js @@ -526,7 +526,7 @@ module.exports = CompileController = { // do not send any others, there's a proxying loop if Host: is passed! if (req.query != null ? req.query.pdfng : undefined) { const newHeaders = {} - for (let h in req.headers) { + for (const h in req.headers) { const v = req.headers[h] if (/^(If-|Range)/i.test(h)) { newHeaders[h] = req.headers[h] diff --git a/services/web/app/src/Features/Compile/CompileManager.js b/services/web/app/src/Features/Compile/CompileManager.js index b4e687cfd5..474b77e03e 100644 --- a/services/web/app/src/Features/Compile/CompileManager.js +++ b/services/web/app/src/Features/Compile/CompileManager.js @@ -69,7 +69,7 @@ module.exports = CompileManager = { if (error != null) { return callback(error) } - for (let key in limits) { + for (const key in limits) { const value = limits[key] options[key] = value } @@ -175,7 +175,7 @@ module.exports = CompileManager = { if (error != null) { return callback(error) } - let ownerFeatures = (owner && owner.features) || {} + const ownerFeatures = (owner && owner.features) || {} // put alpha users into their own compile group if (owner && owner.alphaProgram) { ownerFeatures.compileGroup = 'alpha' diff --git a/services/web/app/src/Features/Documents/DocumentHelper.js b/services/web/app/src/Features/Documents/DocumentHelper.js index 9d3bcd93b3..be9840bb64 100644 --- a/services/web/app/src/Features/Documents/DocumentHelper.js +++ b/services/web/app/src/Features/Documents/DocumentHelper.js @@ -19,7 +19,7 @@ module.exports = DocumentHelper = { } const TITLE_WITH_CURLY_BRACES = /\\[tT]itle\*?\s*{([^}]+)}/ const TITLE_WITH_SQUARE_BRACES = /\\[tT]itle\s*\[([^\]]+)\]/ - for (let line of Array.from( + for (const line of Array.from( DocumentHelper._getLinesFromContent(content, maxContentToScan) )) { var match @@ -39,7 +39,7 @@ module.exports = DocumentHelper = { if (maxContentToScan == null) { maxContentToScan = 30000 } - for (let line of Array.from( + for (const line of Array.from( DocumentHelper._getLinesFromContent(content, maxContentToScan) )) { // We've had problems with this regex locking up CPU. diff --git a/services/web/app/src/Features/Downloads/ProjectZipStreamManager.js b/services/web/app/src/Features/Downloads/ProjectZipStreamManager.js index 7066187054..162c5cb6a5 100644 --- a/services/web/app/src/Features/Downloads/ProjectZipStreamManager.js +++ b/services/web/app/src/Features/Downloads/ProjectZipStreamManager.js @@ -38,7 +38,7 @@ module.exports = ProjectZipStreamManager = { callback(null, archive) const jobs = [] - for (let project_id of Array.from(project_ids || [])) { + for (const project_id of Array.from(project_ids || [])) { ;(project_id => jobs.push(callback => ProjectGetter.getProject( @@ -123,7 +123,7 @@ module.exports = ProjectZipStreamManager = { return callback(error) } const jobs = [] - for (let path in docs) { + for (const path in docs) { const doc = docs[path] ;(function (path, doc) { if (path[0] === '/') { @@ -151,7 +151,7 @@ module.exports = ProjectZipStreamManager = { return callback(error) } const jobs = [] - for (let path in files) { + for (const path in files) { const file = files[path] ;((path, file) => jobs.push(callback => diff --git a/services/web/app/src/Features/Email/EmailSender.js b/services/web/app/src/Features/Email/EmailSender.js index c8b06f1209..f3a049937b 100644 --- a/services/web/app/src/Features/Email/EmailSender.js +++ b/services/web/app/src/Features/Email/EmailSender.js @@ -83,7 +83,7 @@ async function sendEmail(options) { throw new OError('rate limit hit sending email') } metrics.inc('email') - let sendMailOptions = { + const sendMailOptions = { to: options.to, from: EMAIL_SETTINGS.fromAddress || '', subject: options.subject, diff --git a/services/web/app/src/Features/Institutions/InstitutionsManager.js b/services/web/app/src/Features/Institutions/InstitutionsManager.js index 05aa482e7d..16e2b4baeb 100644 --- a/services/web/app/src/Features/Institutions/InstitutionsManager.js +++ b/services/web/app/src/Features/Institutions/InstitutionsManager.js @@ -168,7 +168,7 @@ var checkFeatures = function (institutionId, users) { }, } users.forEach(function (user) { - let isSSOEntitled = SAMLIdentityManager.userHasEntitlement( + const isSSOEntitled = SAMLIdentityManager.userHasEntitlement( user, institutionId ) diff --git a/services/web/app/src/Features/Metadata/MetaHandler.js b/services/web/app/src/Features/Metadata/MetaHandler.js index 1efe443e7f..c65e30051e 100644 --- a/services/web/app/src/Features/Metadata/MetaHandler.js +++ b/services/web/app/src/Features/Metadata/MetaHandler.js @@ -85,7 +85,7 @@ module.exports = MetaHandler = { const label_re = MetaHandler.labelRegex() const package_re = MetaHandler.usepackageRegex() const req_package_re = MetaHandler.ReqPackageRegex() - for (let line of Array.from(lines)) { + for (const line of Array.from(lines)) { var labelMatch var clean, messy, packageMatch while ((labelMatch = label_re.exec(line))) { @@ -123,7 +123,7 @@ module.exports = MetaHandler = { extractMetaFromProjectDocs(projectDocs) { const projectMeta = {} - for (let _path in projectDocs) { + for (const _path in projectDocs) { const doc = projectDocs[_path] projectMeta[doc._id] = MetaHandler.extractMetaFromDoc(doc.lines) } diff --git a/services/web/app/src/Features/PasswordReset/PasswordResetController.js b/services/web/app/src/Features/PasswordReset/PasswordResetController.js index c8b5806c58..07071e602c 100644 --- a/services/web/app/src/Features/PasswordReset/PasswordResetController.js +++ b/services/web/app/src/Features/PasswordReset/PasswordResetController.js @@ -30,7 +30,7 @@ async function setNewUserPassword(req, res, next) { password, auditLog ) - let { found, reset, userId } = result + const { found, reset, userId } = result if (!found) return res.sendStatus(404) if (!reset) return res.sendStatus(500) await UserSessionsManager.promises.revokeAllUserSessions( diff --git a/services/web/app/src/Features/Project/ProjectCollabratecDetailsHandler.js b/services/web/app/src/Features/Project/ProjectCollabratecDetailsHandler.js index 12879c2ca2..0235942856 100644 --- a/services/web/app/src/Features/Project/ProjectCollabratecDetailsHandler.js +++ b/services/web/app/src/Features/Project/ProjectCollabratecDetailsHandler.js @@ -113,7 +113,7 @@ module.exports = ProjectCollabratecDetailsHandler = { if (!Array.isArray(collabratec_users)) { callback(new Error('collabratec_users must be array')) } - for (let collabratec_user of Array.from(collabratec_users)) { + for (const collabratec_user of Array.from(collabratec_users)) { try { collabratec_user.user_id = ObjectId(collabratec_user.user_id) } catch (error1) { diff --git a/services/web/app/src/Features/Project/ProjectController.js b/services/web/app/src/Features/Project/ProjectController.js index aab3c6c665..5892546683 100644 --- a/services/web/app/src/Features/Project/ProjectController.js +++ b/services/web/app/src/Features/Project/ProjectController.js @@ -1035,7 +1035,7 @@ const ProjectController = { affiliations = [] } const portalTemplates = [] - for (let aff of affiliations) { + for (const aff of affiliations) { if ( aff.portal && aff.portal.slug && @@ -1082,7 +1082,7 @@ function generateThemeList() { Path.join(__dirname, '/../../../../node_modules/ace-builds/src-noconflict') ) const result = [] - for (let file of files) { + for (const file of files) { if (file.slice(-2) === 'js' && /^theme-/.test(file)) { const cleanName = file.slice(0, -3).slice(6) result.push(THEME_LIST.push(cleanName)) diff --git a/services/web/app/src/Features/Project/ProjectDeleter.js b/services/web/app/src/Features/Project/ProjectDeleter.js index 502561b221..4718081ee1 100644 --- a/services/web/app/src/Features/Project/ProjectDeleter.js +++ b/services/web/app/src/Features/Project/ProjectDeleter.js @@ -111,7 +111,7 @@ async function restoreProject(projectId) { async function archiveProject(projectId, userId) { try { - let project = await Project.findOne({ _id: projectId }).exec() + const project = await Project.findOne({ _id: projectId }).exec() if (!project) { throw new Errors.NotFoundError('project not found') } @@ -133,7 +133,7 @@ async function archiveProject(projectId, userId) { async function unarchiveProject(projectId, userId) { try { - let project = await Project.findOne({ _id: projectId }).exec() + const project = await Project.findOne({ _id: projectId }).exec() if (!project) { throw new Errors.NotFoundError('project not found') } @@ -156,7 +156,7 @@ async function unarchiveProject(projectId, userId) { async function trashProject(projectId, userId) { try { - let project = await Project.findOne({ _id: projectId }).exec() + const project = await Project.findOne({ _id: projectId }).exec() if (!project) { throw new Errors.NotFoundError('project not found') } @@ -182,7 +182,7 @@ async function trashProject(projectId, userId) { async function untrashProject(projectId, userId) { try { - let project = await Project.findOne({ _id: projectId }).exec() + const project = await Project.findOne({ _id: projectId }).exec() if (!project) { throw new Errors.NotFoundError('project not found') } @@ -279,7 +279,7 @@ async function deleteProject(projectId, options = {}) { async function undeleteProject(projectId, options = {}) { projectId = ObjectId(projectId) - let deletedProject = await DeletedProject.findOne({ + const deletedProject = await DeletedProject.findOne({ 'deleterData.deletedProjectId': projectId, }).exec() @@ -291,7 +291,7 @@ async function undeleteProject(projectId, options = {}) { throw new Errors.NotFoundError('project_too_old_to_restore') } - let restored = new Project(deletedProject.project) + const restored = new Project(deletedProject.project) if (options.userId) { restored.owner_ref = options.userId diff --git a/services/web/app/src/Features/Project/ProjectEditorHandler.js b/services/web/app/src/Features/Project/ProjectEditorHandler.js index ee1c3683d1..3645e11dff 100644 --- a/services/web/app/src/Features/Project/ProjectEditorHandler.js +++ b/services/web/app/src/Features/Project/ProjectEditorHandler.js @@ -100,7 +100,7 @@ module.exports = ProjectEditorHandler = { let owner = null let ownerFeatures = null const filteredMembers = [] - for (let member of Array.from(members || [])) { + for (const member of Array.from(members || [])) { if (member.privilegeLevel === 'owner') { ownerFeatures = member.user.features owner = this.buildUserModelView(member.user, 'owner') diff --git a/services/web/app/src/Features/Project/ProjectEntityHandler.js b/services/web/app/src/Features/Project/ProjectEntityHandler.js index 9d5c946857..f8fac67ca1 100644 --- a/services/web/app/src/Features/Project/ProjectEntityHandler.js +++ b/services/web/app/src/Features/Project/ProjectEntityHandler.js @@ -15,7 +15,7 @@ const ProjectEntityHandler = { // Turn array from docstore into a dictionary based on doc id const docContents = {} - for (let docContent of docContentsArray) { + for (const docContent of docContentsArray) { docContents[docContent._id] = docContent } @@ -27,9 +27,9 @@ const ProjectEntityHandler = { return callback(error) } const docs = {} - for (let folderPath in folders) { + for (const folderPath in folders) { const folder = folders[folderPath] - for (let doc of folder.docs || []) { + for (const doc of folder.docs || []) { const content = docContents[doc._id.toString()] if (content != null) { docs[path.join(folderPath, doc.name)] = { @@ -56,9 +56,9 @@ const ProjectEntityHandler = { return callback(err) } const files = {} - for (let folderPath in folders) { + for (const folderPath in folders) { const folder = folders[folderPath] - for (let file of folder.fileRefs || []) { + for (const file of folder.fileRefs || []) { if (file != null) { files[path.join(folderPath, file.name)] = file } @@ -91,14 +91,14 @@ const ProjectEntityHandler = { } const docs = [] const files = [] - for (let folderPath in folders) { + for (const folderPath in folders) { const folder = folders[folderPath] - for (let doc of folder.docs || []) { + for (const doc of folder.docs || []) { if (doc != null) { docs.push({ path: path.join(folderPath, doc.name), doc }) } } - for (let file of folder.fileRefs || []) { + for (const file of folder.fileRefs || []) { if (file != null) { files.push({ path: path.join(folderPath, file.name), file }) } @@ -129,9 +129,9 @@ const ProjectEntityHandler = { return callback(err) } const docPath = {} - for (let folderPath in folders) { + for (const folderPath in folders) { const folder = folders[folderPath] - for (let doc of folder.docs || []) { + for (const doc of folder.docs || []) { docPath[doc._id] = path.join(folderPath, doc.name) } } @@ -160,7 +160,7 @@ const ProjectEntityHandler = { return callback(new Errors.NotFoundError('no project')) } function recursivelyFindDocInFolder(basePath, docId, folder) { - let docInCurrentFolder = (folder.docs || []).find( + const docInCurrentFolder = (folder.docs || []).find( currentDoc => currentDoc._id.toString() === docId.toString() ) if (docInCurrentFolder != null) { @@ -208,7 +208,7 @@ const ProjectEntityHandler = { const folders = {} function processFolder(basePath, folder) { folders[basePath] = folder - for (let childFolder of folder.folders || []) { + for (const childFolder of folder.folders || []) { if (childFolder.name != null) { processFolder(path.join(basePath, childFolder.name), childFolder) } diff --git a/services/web/app/src/Features/Project/ProjectEntityUpdateHandler.js b/services/web/app/src/Features/Project/ProjectEntityUpdateHandler.js index 0d6570d606..13e82b99d5 100644 --- a/services/web/app/src/Features/Project/ProjectEntityUpdateHandler.js +++ b/services/web/app/src/Features/Project/ProjectEntityUpdateHandler.js @@ -1175,7 +1175,7 @@ const ProjectEntityUpdateHandler = { ), mkdirp: wrapWithLock(function (projectId, path, callback) { - for (let folder of path.split('/')) { + for (const folder of path.split('/')) { if (folder.length > 0 && !SafePath.isCleanFilename(folder)) { return callback(new Errors.InvalidNameError('invalid element name')) } @@ -1189,7 +1189,7 @@ const ProjectEntityUpdateHandler = { }), mkdirpWithExactCase: wrapWithLock(function (projectId, path, callback) { - for (let folder of path.split('/')) { + for (const folder of path.split('/')) { if (folder.length > 0 && !SafePath.isCleanFilename(folder)) { return callback(new Errors.InvalidNameError('invalid element name')) } @@ -1381,7 +1381,7 @@ const ProjectEntityUpdateHandler = { ), isPathValidForRootDoc(docPath) { - let docExtension = Path.extname(docPath) + const docExtension = Path.extname(docPath) return VALID_ROOT_DOC_REGEXP.test(docExtension) }, @@ -1458,10 +1458,10 @@ const ProjectEntityUpdateHandler = { } else if (entityType.indexOf('folder') !== -1) { changes = { oldDocs: [], oldFiles: [] } const _recurseFolder = (folder, folderPath) => { - for (let doc of folder.docs) { + for (const doc of folder.docs) { changes.oldDocs.push({ doc, path: Path.join(folderPath, doc.name) }) } - for (let file of folder.fileRefs) { + for (const file of folder.fileRefs) { changes.oldFiles.push({ file, path: Path.join(folderPath, file.name), diff --git a/services/web/app/src/Features/Project/ProjectLocator.js b/services/web/app/src/Features/Project/ProjectLocator.js index 8d22ba0b94..e62b4dccae 100644 --- a/services/web/app/src/Features/Project/ProjectLocator.js +++ b/services/web/app/src/Features/Project/ProjectLocator.js @@ -46,7 +46,7 @@ function findElement(options, _callback) { return } const newPath = {} - for (let key of Object.keys(path)) { + for (const key of Object.keys(path)) { const value = path[key] newPath[key] = value } // make a value copy of the string @@ -179,7 +179,7 @@ function _findElementByPathWithProject( } const needleFolderName = foldersList[level] let found = false - for (let folder of haystackFolder.folders) { + for (const folder of haystackFolder.folders) { if (matchFn(folder.name, needleFolderName)) { found = true if (level === foldersList.length - 1) { @@ -203,19 +203,19 @@ function _findElementByPathWithProject( if (entityName == null) { return cb(null, folder, 'folder') } - for (let file of folder.fileRefs || []) { + for (const file of folder.fileRefs || []) { if (matchFn(file != null ? file.name : undefined, entityName)) { result = file type = 'file' } } - for (let doc of folder.docs || []) { + for (const doc of folder.docs || []) { if (matchFn(doc != null ? doc.name : undefined, entityName)) { result = doc type = 'doc' } } - for (let childFolder of folder.folders || []) { + for (const childFolder of folder.folders || []) { if ( matchFn(childFolder != null ? childFolder.name : undefined, entityName) ) { diff --git a/services/web/app/src/Features/Project/ProjectRootDocManager.js b/services/web/app/src/Features/Project/ProjectRootDocManager.js index c4f2fcbbd1..df2fdb9871 100644 --- a/services/web/app/src/Features/Project/ProjectRootDocManager.js +++ b/services/web/app/src/Features/Project/ProjectRootDocManager.js @@ -228,7 +228,7 @@ module.exports = ProjectRootDocManager = { return callback(error) } let rootDocValid = false - for (let doc_id in docPaths) { + for (const doc_id in docPaths) { const _path = docPaths[doc_id] if (doc_id === project.rootDoc_id) { rootDocValid = true diff --git a/services/web/app/src/Features/Project/SafePath.js b/services/web/app/src/Features/Project/SafePath.js index f2e487bf64..10267f7857 100644 --- a/services/web/app/src/Features/Project/SafePath.js +++ b/services/web/app/src/Features/Project/SafePath.js @@ -112,7 +112,7 @@ prototype\ return false } - for (let element of Array.from(elements)) { + for (const element of Array.from(elements)) { if (element.length > 0 && !SafePath.isCleanFilename(element)) { return false } diff --git a/services/web/app/src/Features/Subscription/FeaturesUpdater.js b/services/web/app/src/Features/Subscription/FeaturesUpdater.js index ecab290d77..5802e980e0 100644 --- a/services/web/app/src/Features/Subscription/FeaturesUpdater.js +++ b/services/web/app/src/Features/Subscription/FeaturesUpdater.js @@ -139,8 +139,8 @@ const FeaturesUpdater = { ) { return callback(null, {}) } - let activeFeaturesOverrides = [] - for (let featuresOverride of user.featuresOverrides) { + const activeFeaturesOverrides = [] + for (const featuresOverride of user.featuresOverrides) { if ( !featuresOverride.expiresAt || featuresOverride.expiresAt > new Date() @@ -181,7 +181,7 @@ const FeaturesUpdater = { _mergeFeatures(featuresA, featuresB) { const features = Object.assign({}, featuresA) - for (let key in featuresB) { + for (const key in featuresB) { // Special merging logic for non-boolean features if (key === 'compileGroup') { if ( @@ -239,7 +239,7 @@ const FeaturesUpdater = { return {} } - let mismatchReasons = {} + const mismatchReasons = {} const featureKeys = [ ...new Set([ ...Object.keys(currentFeatures), diff --git a/services/web/app/src/Features/Subscription/PlansLocator.js b/services/web/app/src/Features/Subscription/PlansLocator.js index 86e1f1e390..0fb5b1549d 100644 --- a/services/web/app/src/Features/Subscription/PlansLocator.js +++ b/services/web/app/src/Features/Subscription/PlansLocator.js @@ -11,7 +11,7 @@ function ensurePlansAreSetupCorrectly() { } function findLocalPlanInSettings(planCode) { - for (let plan of Settings.plans) { + for (const plan of Settings.plans) { if (plan.planCode === planCode) { return plan } diff --git a/services/web/app/src/Features/Subscription/SubscriptionUpdater.js b/services/web/app/src/Features/Subscription/SubscriptionUpdater.js index a18fed6cb9..5a8ce958fa 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionUpdater.js +++ b/services/web/app/src/Features/Subscription/SubscriptionUpdater.js @@ -184,7 +184,7 @@ const SubscriptionUpdater = { if (err) { return callback(err) } - let subscription = deletedSubscription.subscription + const subscription = deletedSubscription.subscription async.series( [ cb => diff --git a/services/web/app/src/Features/Subscription/UserFeaturesUpdater.js b/services/web/app/src/Features/Subscription/UserFeaturesUpdater.js index 2629a48ac5..a1f8f431cb 100644 --- a/services/web/app/src/Features/Subscription/UserFeaturesUpdater.js +++ b/services/web/app/src/Features/Subscription/UserFeaturesUpdater.js @@ -4,7 +4,7 @@ module.exports = { updateFeatures(userId, features, callback) { const conditions = { _id: userId } const update = {} - for (let key in features) { + for (const key in features) { const value = features[key] update[`features.${key}`] = value } diff --git a/services/web/app/src/Features/Templates/TemplatesManager.js b/services/web/app/src/Features/Templates/TemplatesManager.js index 8488c845b8..3d732ce9e1 100644 --- a/services/web/app/src/Features/Templates/TemplatesManager.js +++ b/services/web/app/src/Features/Templates/TemplatesManager.js @@ -168,7 +168,7 @@ const TemplatesManager = { promises: { async fetchFromV1(templateId) { - let { body, statusCode } = await requestPromise({ + const { body, statusCode } = await requestPromise({ baseUrl: settings.apis.v1.url, url: `/api/v2/templates/${templateId}`, method: 'GET', diff --git a/services/web/app/src/Features/Uploads/ArchiveManager.js b/services/web/app/src/Features/Uploads/ArchiveManager.js index b932b4200c..9962b4ea4e 100644 --- a/services/web/app/src/Features/Uploads/ArchiveManager.js +++ b/services/web/app/src/Features/Uploads/ArchiveManager.js @@ -88,7 +88,7 @@ const ArchiveManager = { return callback() // don't give a destfile for directory } // check that the file does not use a relative path - for (let dir of Array.from(transformedFilename.split('/'))) { + for (const dir of Array.from(transformedFilename.split('/'))) { if (dir === '..') { return callback(new Error('relative path')) } diff --git a/services/web/app/src/Features/Uploads/FileTypeManager.js b/services/web/app/src/Features/Uploads/FileTypeManager.js index a172a5de7f..824d910383 100644 --- a/services/web/app/src/Features/Uploads/FileTypeManager.js +++ b/services/web/app/src/Features/Uploads/FileTypeManager.js @@ -99,7 +99,7 @@ const FileTypeManager = { shouldIgnore(path, callback) { const name = Path.basename(path) - let extension = Path.extname(name).toLowerCase() + const extension = Path.extname(name).toLowerCase() let ignore = false if (name.startsWith('.') && name !== '.latexmkrc') { ignore = true diff --git a/services/web/app/src/Features/User/UserController.js b/services/web/app/src/Features/User/UserController.js index 7b522a6574..08df1f9d5e 100644 --- a/services/web/app/src/Features/User/UserController.js +++ b/services/web/app/src/Features/User/UserController.js @@ -216,7 +216,7 @@ const UserController = { { deleterUser: user, ipAddress: req.ip }, err => { if (err) { - let errorData = { + const errorData = { message: 'error while deleting user account', info: { userId }, } diff --git a/services/web/app/src/Features/User/UserDeleter.js b/services/web/app/src/Features/User/UserDeleter.js index 531dc8af95..a183978cb8 100644 --- a/services/web/app/src/Features/User/UserDeleter.js +++ b/services/web/app/src/Features/User/UserDeleter.js @@ -36,7 +36,7 @@ async function deleteUser(userId, options = {}) { } try { - let user = await User.findById(userId).exec() + const user = await User.findById(userId).exec() logger.log({ user }, 'deleting user') await ensureCanDeleteUser(user) @@ -62,7 +62,7 @@ async function deleteMongoUser(userId) { } async function expireDeletedUser(userId) { - let deletedUser = await DeletedUser.findOne({ + const deletedUser = await DeletedUser.findOne({ 'deleterData.deletedUserId': userId, }).exec() @@ -73,7 +73,7 @@ async function expireDeletedUser(userId) { async function expireDeletedUsersAfterDuration() { const DURATION = 90 - let deletedUsers = await DeletedUser.find({ + const deletedUsers = await DeletedUser.find({ 'deleterData.deletedAt': { $lt: new Date(moment().subtract(DURATION, 'days')), }, diff --git a/services/web/app/src/Features/User/UserInfoController.js b/services/web/app/src/Features/User/UserInfoController.js index b1f06915ae..a1142872ed 100644 --- a/services/web/app/src/Features/User/UserInfoController.js +++ b/services/web/app/src/Features/User/UserInfoController.js @@ -65,7 +65,7 @@ module.exports = UserController = { return {} } const formattedUser = { id: user._id.toString() } - for (let key of [ + for (const key of [ 'first_name', 'last_name', 'email', diff --git a/services/web/app/src/Features/User/UserPagesController.js b/services/web/app/src/Features/User/UserPagesController.js index dd4a7811ff..299e0cdd9f 100644 --- a/services/web/app/src/Features/User/UserPagesController.js +++ b/services/web/app/src/Features/User/UserPagesController.js @@ -173,7 +173,7 @@ const UserPagesController = { _translateProviderDescriptions(providers, req) { const result = {} if (providers) { - for (let provider in providers) { + for (const provider in providers) { const data = providers[provider] data.description = req.i18n.translate( data.descriptionKey, diff --git a/services/web/app/src/Features/User/UserSessionsManager.js b/services/web/app/src/Features/User/UserSessionsManager.js index 43a1bec3d3..94b46134c2 100644 --- a/services/web/app/src/Features/User/UserSessionsManager.js +++ b/services/web/app/src/Features/User/UserSessionsManager.js @@ -1,4 +1,3 @@ -let UserSessionsManager const OError = require('@overleaf/o-error') const Settings = require('settings-sharelatex') const logger = require('logger-sharelatex') @@ -8,7 +7,7 @@ const { promisify } = require('util') const UserSessionsRedis = require('./UserSessionsRedis') const rclient = UserSessionsRedis.client() -UserSessionsManager = { +const UserSessionsManager = { // mimic the key used by the express sessions _sessionKey(sessionId) { return `sess:${sessionId}` diff --git a/services/web/app/src/Features/UserMembership/UserMembershipAuthorization.js b/services/web/app/src/Features/UserMembership/UserMembershipAuthorization.js index b8e7f007bb..23530c3a40 100644 --- a/services/web/app/src/Features/UserMembership/UserMembershipAuthorization.js +++ b/services/web/app/src/Features/UserMembership/UserMembershipAuthorization.js @@ -1,4 +1,4 @@ -let UserMembershipAuthorization = { +const UserMembershipAuthorization = { hasStaffAccess(requiredStaffAccess) { return req => { if (!req.user) { diff --git a/services/web/app/src/Features/UserMembership/UserMembershipHandler.js b/services/web/app/src/Features/UserMembership/UserMembershipHandler.js index 4e7e5039b3..7c224dec61 100644 --- a/services/web/app/src/Features/UserMembership/UserMembershipHandler.js +++ b/services/web/app/src/Features/UserMembership/UserMembershipHandler.js @@ -94,8 +94,8 @@ var getPopulatedListOfMembers = function (entity, attributes, callback) { } const userObjects = [] - for (let attribute of Array.from(attributes)) { - for (let userObject of Array.from(entity[attribute] || [])) { + for (const attribute of Array.from(attributes)) { + for (const userObject of Array.from(entity[attribute] || [])) { // userObject can be an email as String, a user id as ObjectId or an // invite as Object with an email attribute as String. We want to pass to // UserMembershipViewModel either an email as (String) or a user id (ObjectId) diff --git a/services/web/app/src/Features/UserMembership/UserMembershipMiddleware.js b/services/web/app/src/Features/UserMembership/UserMembershipMiddleware.js index 436b0f8c24..76f9e8285b 100644 --- a/services/web/app/src/Features/UserMembership/UserMembershipMiddleware.js +++ b/services/web/app/src/Features/UserMembership/UserMembershipMiddleware.js @@ -10,7 +10,7 @@ const TemplatesManager = require('../Templates/TemplatesManager') // set of middleware arrays or functions that checks user access to an entity // (publisher, institution, group, template, etc.) -let UserMembershipMiddleware = { +const UserMembershipMiddleware = { requireTeamMetricsAccess: [ AuthenticationController.requireLogin(), fetchEntityConfig('team'), @@ -198,7 +198,7 @@ function fetchEntityConfig(entityName) { // fetch the entity with id and config, and set it in the request function fetchEntity() { return expressify(async (req, res, next) => { - let entity = await UserMembershipHandler.promises.getEntityWithoutAuthorizationCheck( + const entity = await UserMembershipHandler.promises.getEntityWithoutAuthorizationCheck( req.params.id, req.entityConfig ) @@ -281,7 +281,7 @@ function requireV1Template() { // retur values is truly. Redirect to restricted otherwise function allowAccessIfAny(accessFunctions) { return (req, res, next) => { - for (let accessFunction of accessFunctions) { + for (const accessFunction of accessFunctions) { if (accessFunction(req)) { return next() } diff --git a/services/web/app/src/Features/UserMembership/UserMembershipsHandler.js b/services/web/app/src/Features/UserMembership/UserMembershipsHandler.js index 03442a57fd..004d8acdac 100644 --- a/services/web/app/src/Features/UserMembership/UserMembershipsHandler.js +++ b/services/web/app/src/Features/UserMembership/UserMembershipsHandler.js @@ -26,7 +26,7 @@ const UserMembershipsHandler = { callback = function (error) {} } const entityConfigs = [] - for (let key in UserMembershipEntityConfigs) { + for (const key in UserMembershipEntityConfigs) { const entityConfig = UserMembershipEntityConfigs[key] if (entityConfig.fields && entityConfig.fields.write != null) { entityConfigs.push(entityConfig) diff --git a/services/web/app/src/infrastructure/ExpressLocals.js b/services/web/app/src/infrastructure/ExpressLocals.js index 81b1f907d0..90a0eb21ba 100644 --- a/services/web/app/src/infrastructure/ExpressLocals.js +++ b/services/web/app/src/infrastructure/ExpressLocals.js @@ -299,7 +299,7 @@ module.exports = function (webRouter, privateApiRouter, publicApiRouter) { webRouter.use(function (req, res, next) { // Clone the nav settings so they can be modified for each request res.locals.nav = {} - for (let key in Settings.nav) { + for (const key in Settings.nav) { res.locals.nav[key] = _.clone(Settings.nav[key]) } res.locals.templates = Settings.templateLinks diff --git a/services/web/app/src/infrastructure/Modules.js b/services/web/app/src/infrastructure/Modules.js index 0a648ee14f..d68803e783 100644 --- a/services/web/app/src/infrastructure/Modules.js +++ b/services/web/app/src/infrastructure/Modules.js @@ -12,7 +12,7 @@ const _hooks = {} let _viewIncludes = {} function loadModules() { - for (let moduleName of fs.readdirSync(MODULE_BASE_PATH)) { + for (const moduleName of fs.readdirSync(MODULE_BASE_PATH)) { if (fs.existsSync(Path.join(MODULE_BASE_PATH, moduleName, 'index.js'))) { const loadedModule = require(Path.join( MODULE_BASE_PATH, @@ -35,7 +35,7 @@ function applyRouter(webRouter, privateApiRouter, publicApiRouter) { } function applyNonCsrfRouter(webRouter, privateApiRouter, publicApiRouter) { - for (let module of _modules) { + for (const module of _modules) { if (module.nonCsrfRouter != null) { module.nonCsrfRouter.apply(webRouter, privateApiRouter, publicApiRouter) } @@ -53,7 +53,7 @@ function loadViewIncludes(app) { _viewIncludes = {} for (const module of _modules) { const object = module.viewIncludes || {} - for (let view in object) { + for (const view in object) { const partial = object[view] if (!_viewIncludes[view]) { _viewIncludes[view] = [] @@ -77,7 +77,7 @@ function loadViewIncludes(app) { function moduleIncludes(view, locals) { const compiledPartials = _viewIncludes[view] || [] let html = '' - for (let compiledPartial of compiledPartials) { + for (const compiledPartial of compiledPartials) { html += compiledPartial(locals) } return html @@ -89,8 +89,8 @@ function moduleIncludesAvailable(view) { function linkedFileAgentsIncludes() { const agents = {} - for (let module of _modules) { - for (let name in module.linkedFileAgents) { + for (const module of _modules) { + for (const name in module.linkedFileAgents) { const agentFunction = module.linkedFileAgents[name] agents[name] = agentFunction() } @@ -101,7 +101,7 @@ function linkedFileAgentsIncludes() { function attachHooks() { for (var module of _modules) { if (module.hooks != null) { - for (let hook in module.hooks) { + for (const hook in module.hooks) { const method = module.hooks[hook] attachHook(hook, method) } diff --git a/services/web/app/src/infrastructure/Views.js b/services/web/app/src/infrastructure/Views.js index badf4b2b22..89956df638 100644 --- a/services/web/app/src/infrastructure/Views.js +++ b/services/web/app/src/infrastructure/Views.js @@ -28,11 +28,11 @@ const viewList = globby module.exports = { precompileViews(app) { - let startTime = Date.now() + const startTime = Date.now() let success = 0 let failures = 0 viewList.forEach(view => { - let filename = path.resolve(view + '.pug') // express views are cached using the absolute path + const filename = path.resolve(view + '.pug') // express views are cached using the absolute path try { pug.compileFile(filename, { cache: true, diff --git a/services/web/frontend/js/directives/asyncForm.js b/services/web/frontend/js/directives/asyncForm.js index 1a40043d73..a50b09abf3 100644 --- a/services/web/frontend/js/directives/asyncForm.js +++ b/services/web/frontend/js/directives/asyncForm.js @@ -36,7 +36,7 @@ App.directive('asyncForm', ($http, validateCaptcha, validateCaptchaV3) => ({ const submitRequest = function (grecaptchaResponse) { const formData = {} - for (let data of Array.from(element.serializeArray())) { + for (const data of Array.from(element.serializeArray())) { formData[data.name] = data.value } diff --git a/services/web/frontend/js/directives/focus.js b/services/web/frontend/js/directives/focus.js index 34b627e7b0..17ce160e7b 100644 --- a/services/web/frontend/js/directives/focus.js +++ b/services/web/frontend/js/directives/focus.js @@ -10,7 +10,6 @@ * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ import App from '../base' -let selectName App.directive('focusWhen', $timeout => ({ restrict: 'A', link(scope, element, attr) { @@ -79,7 +78,7 @@ App.directive('focus', $timeout => ({ }, })) -selectName = function (element) { +function selectName(element) { // Select up to last '.'. I.e. everything except the file extension element.focus() const name = element.val() diff --git a/services/web/frontend/js/features/chat/components/message-content.js b/services/web/frontend/js/features/chat/components/message-content.js index d02c5344f2..9691bc1743 100644 --- a/services/web/frontend/js/features/chat/components/message-content.js +++ b/services/web/frontend/js/features/chat/components/message-content.js @@ -25,7 +25,7 @@ function MessageContent({ content }) { useEffect(() => { // adds attributes to all the links generated by , required due to https://github.com/tasti/react-linkify/issues/99 - for (let a of root.current.getElementsByTagName('a')) { + for (const a of root.current.getElementsByTagName('a')) { a.setAttribute('target', '_blank') a.setAttribute('rel', 'noreferrer noopener') } diff --git a/services/web/frontend/js/features/file-tree/util/find-in-tree.js b/services/web/frontend/js/features/file-tree/util/find-in-tree.js index 6bfa9542f1..9e82c25a08 100644 --- a/services/web/frontend/js/features/file-tree/util/find-in-tree.js +++ b/services/web/frontend/js/features/file-tree/util/find-in-tree.js @@ -7,7 +7,7 @@ export function findInTreeOrThrow(tree, id) { } export function findAllInTreeOrThrow(tree, ids) { - let list = new Set() + const list = new Set() ids.forEach(id => { list.add(findInTreeOrThrow(tree, id)) }) @@ -26,7 +26,7 @@ export function findAllFolderIdsInFolder(folder) { } export function findAllFolderIdsInFolders(folders) { - let list = new Set() + const list = new Set() folders.forEach(folder => { findAllFolderIdsInFolder(folder).forEach(folderId => { list.add(folderId) diff --git a/services/web/frontend/js/features/file-tree/util/safe-path.js b/services/web/frontend/js/features/file-tree/util/safe-path.js index c8950595eb..26f76b4cad 100644 --- a/services/web/frontend/js/features/file-tree/util/safe-path.js +++ b/services/web/frontend/js/features/file-tree/util/safe-path.js @@ -91,7 +91,7 @@ export function isCleanPath(path) { return false } - for (let element of Array.from(elements)) { + for (const element of Array.from(elements)) { if (element.length > 0 && !isCleanFilename(element)) { return false } diff --git a/services/web/frontend/js/features/outline/outline-parser.js b/services/web/frontend/js/features/outline/outline-parser.js index 80e3ec8e23..dbd876cbcf 100644 --- a/services/web/frontend/js/features/outline/outline-parser.js +++ b/services/web/frontend/js/features/outline/outline-parser.js @@ -94,8 +94,8 @@ function matchDisplayTitle(title) { } function nestOutline(flatOutline) { - let parentOutlines = {} - let nestedOutlines = [] + const parentOutlines = {} + const nestedOutlines = [] flatOutline.forEach(outline => { const parentOutlineLevels = Object.keys(parentOutlines) diff --git a/services/web/frontend/js/features/preview/components/preview-toolbar.js b/services/web/frontend/js/features/preview/components/preview-toolbar.js index e3e3d11b0f..157bf8e789 100644 --- a/services/web/frontend/js/features/preview/components/preview-toolbar.js +++ b/services/web/frontend/js/features/preview/components/preview-toolbar.js @@ -95,7 +95,7 @@ function PreviewToolbar({ itemsWidth += 10 // add extra for some spacing between items - let canShowText = itemsWidth < toolbarWidth + const canShowText = itemsWidth < toolbarWidth if (!canShowText) { _checkToggleText( diff --git a/services/web/frontend/js/ide.js b/services/web/frontend/js/ide.js index a800875438..aa44621065 100644 --- a/services/web/frontend/js/ide.js +++ b/services/web/frontend/js/ide.js @@ -176,7 +176,7 @@ App.controller( ide.validFileRegex = '^[^*/]*$' // Don't allow * and / - let useFallbackWebsocket = + const useFallbackWebsocket = window.location && window.location.search && window.location.search.match(/ws=fallback/) diff --git a/services/web/frontend/js/ide/colors/ColorManager.js b/services/web/frontend/js/ide/colors/ColorManager.js index 95f1fcc04f..78a5a6545d 100644 --- a/services/web/frontend/js/ide/colors/ColorManager.js +++ b/services/web/frontend/js/ide/colors/ColorManager.js @@ -82,7 +82,7 @@ export default ColorManager = { getHueForId(id) { const hash = CryptoJS(id) - let hue = + const hue = parseInt(hash.toString().slice(0, 8), 16) % (this.TOTAL_HUES - this.OWN_HUE_BLOCKED_SIZE * 2) return hue diff --git a/services/web/frontend/js/ide/connection/ConnectionManager.js b/services/web/frontend/js/ide/connection/ConnectionManager.js index abac867785..577ac2c409 100644 --- a/services/web/frontend/js/ide/connection/ConnectionManager.js +++ b/services/web/frontend/js/ide/connection/ConnectionManager.js @@ -140,7 +140,7 @@ export default ConnectionManager = (function () { // handle network-level websocket errors (e.g. failed dns lookups) let connectionAttempt = 1 - let connectionErrorHandler = err => { + const connectionErrorHandler = err => { if ( window.wsRetryHandshake && connectionAttempt++ < window.wsRetryHandshake @@ -195,7 +195,7 @@ export default ConnectionManager = (function () { }) // we have passed authentication so we can now join the project - let connectionJobId = this.$scope.connection.jobId + const connectionJobId = this.$scope.connection.jobId setTimeout(() => { this.joinProject(connectionJobId) }, 100) @@ -279,7 +279,7 @@ The editor will refresh automatically in ${delay} seconds.\ updateConnectionManagerState(state) { this.$scope.$apply(() => { this.$scope.connection.jobId += 1 - let jobId = this.$scope.connection.jobId + const jobId = this.$scope.connection.jobId sl_console.log( `[updateConnectionManagerState ${jobId}] from ${this.$scope.connection.state} to ${state}` ) @@ -473,7 +473,7 @@ Something went wrong connecting to your project. Please refresh if this continue startAutoReconnectCountdown() { this.updateConnectionManagerState('waitingCountdown') - let connectionId = this.$scope.connection.jobId + const connectionId = this.$scope.connection.jobId let countdown sl_console.log('[ConnectionManager] starting autoreconnect countdown') const twoMinutes = 2 * 60 * 1000 diff --git a/services/web/frontend/js/ide/connection/SocketIoShim.js b/services/web/frontend/js/ide/connection/SocketIoShim.js index 77d2009047..7000bec859 100644 --- a/services/web/frontend/js/ide/connection/SocketIoShim.js +++ b/services/web/frontend/js/ide/connection/SocketIoShim.js @@ -16,7 +16,7 @@ const transparentMethods = [ 'on', 'removeListener', ] -for (let method of transparentMethods) { +for (const method of transparentMethods) { SocketShimBase.prototype[method] = function () { this._socket[method].apply(this._socket, arguments) } diff --git a/services/web/frontend/js/ide/directives/layout.js b/services/web/frontend/js/ide/directives/layout.js index 7bcaef0e7c..d340e9f5f9 100644 --- a/services/web/frontend/js/ide/directives/layout.js +++ b/services/web/frontend/js/ide/directives/layout.js @@ -169,7 +169,7 @@ export default App.directive('layout', ($parse, $compile, ide) => ({ element.layout().resizeAll() if (attrs.resizeOn != null) { - for (let event of Array.from(attrs.resizeOn.split(','))) { + for (const event of Array.from(attrs.resizeOn.split(','))) { scope.$on(event, () => onExternalResize()) } } diff --git a/services/web/frontend/js/ide/editor/Document.js b/services/web/frontend/js/ide/editor/Document.js index fb2f80d9b9..d9b454398c 100644 --- a/services/web/frontend/js/ide/editor/Document.js +++ b/services/web/frontend/js/ide/editor/Document.js @@ -57,7 +57,7 @@ export default Document = (function () { static hasUnsavedChanges() { const object = this.openDocs || {} - for (let doc_id in object) { + for (const doc_id in object) { const doc = object[doc_id] if (doc.hasBufferedOps()) { return true @@ -69,7 +69,7 @@ export default Document = (function () { static flushAll() { return (() => { const result = [] - for (let doc_id in this.openDocs) { + for (const doc_id in this.openDocs) { const doc = this.openDocs[doc_id] result.push(doc.flush()) } @@ -464,7 +464,7 @@ export default Document = (function () { } _callJoinCallbacks() { - for (let callback of Array.from(this._joinCallbacks || [])) { + for (const callback of Array.from(this._joinCallbacks || [])) { callback() } return delete this._joinCallbacks @@ -537,7 +537,7 @@ export default Document = (function () { _decodeRanges(ranges) { const decodeFromWebsockets = text => decodeURIComponent(escape(text)) try { - for (let change of Array.from(ranges.changes || [])) { + for (const change of Array.from(ranges.changes || [])) { if (change.op.i != null) { change.op.i = decodeFromWebsockets(change.op.i) } @@ -547,7 +547,7 @@ export default Document = (function () { } return (() => { const result = [] - for (let comment of Array.from(ranges.comments || [])) { + for (const comment of Array.from(ranges.comments || [])) { if (comment.op.c != null) { result.push((comment.op.c = decodeFromWebsockets(comment.op.c))) } else { @@ -717,7 +717,7 @@ export default Document = (function () { ;({ track_changes_as } = this) } this.ranges.track_changes = track_changes_as != null - for (let op of Array.from(ops)) { + for (const op of Array.from(ops)) { this.ranges.applyOp(op, { user_id: track_changes_as }) } if (old_id_seed != null) { diff --git a/services/web/frontend/js/ide/editor/ShareJsDoc.js b/services/web/frontend/js/ide/editor/ShareJsDoc.js index b9644f05bd..2e560b73b5 100644 --- a/services/web/frontend/js/ide/editor/ShareJsDoc.js +++ b/services/web/frontend/js/ide/editor/ShareJsDoc.js @@ -320,7 +320,7 @@ export default ShareJsDoc = (function () { // compute size of an op from its components // (total number of characters inserted and deleted) let size = 0 - for (let component of Array.from(op || [])) { + for (const component of Array.from(op || [])) { if ((component != null ? component.i : undefined) != null) { size += component.i.length } diff --git a/services/web/frontend/js/ide/editor/controllers/SavingNotificationController.js b/services/web/frontend/js/ide/editor/controllers/SavingNotificationController.js index fc96cc668f..9dea747dd2 100644 --- a/services/web/frontend/js/ide/editor/controllers/SavingNotificationController.js +++ b/services/web/frontend/js/ide/editor/controllers/SavingNotificationController.js @@ -37,7 +37,7 @@ export default App.controller( let newUnsavedCount = 0 let maxUnsavedSeconds = 0 - for (let doc_id in Document.openDocs) { + for (const doc_id in Document.openDocs) { const doc = Document.openDocs[doc_id] const saving = doc.pollSavedStatus() if (!saving) { diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor.js b/services/web/frontend/js/ide/editor/directives/aceEditor.js index 8f06f10da5..f32efa0393 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor.js @@ -408,7 +408,7 @@ App.directive( } if (attrs.resizeOn != null) { - for (let event of Array.from(attrs.resizeOn.split(','))) { + for (const event of Array.from(attrs.resizeOn.split(','))) { scope.$on(event, function () { scope.$applyAsync(() => { const previousScreenPosition = getCursorScreenPosition() diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/AutoCompleteManager.js b/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/AutoCompleteManager.js index 85943d7dbd..b508ee159c 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/AutoCompleteManager.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/AutoCompleteManager.js @@ -69,12 +69,12 @@ class AutoCompleteManager { ) if (match) { // eslint-disable-next-line no-unused-vars - let commandName = match[1] + const commandName = match[1] const graphicsPaths = Preamble.getGraphicsPaths() const result = [] - for (let graphic of Graphics.getGraphicsFiles()) { + for (const graphic of Graphics.getGraphicsFiles()) { let { path } = graphic - for (let graphicsPath of graphicsPaths) { + for (const graphicsPath of graphicsPaths) { if (path.indexOf(graphicsPath) === 0) { path = path.slice(graphicsPath.length) break @@ -103,10 +103,10 @@ class AutoCompleteManager { // eslint-disable-next-line no-unused-vars const commandName = match[1] const result = [] - for (let file of Files.getTeXFiles()) { + for (const file of Files.getTeXFiles()) { if (file.id !== this.$scope.docId && !file.deleted && file.path) { const { path } = file - let cleanPath = path.replace(/(.+)\.tex$/i, '$1') + const cleanPath = path.replace(/(.+)\.tex$/i, '$1') result.push({ caption: `\\${commandName}{${path}}`, value: `\\${commandName}{${cleanPath}}`, @@ -141,7 +141,7 @@ class AutoCompleteManager { score: 60, }) } - for (let label of metadataManager.getAllLabels()) { + for (const label of metadataManager.getAllLabels()) { result.push({ caption: `\\${commandName}{${label}}`, value: `\\${commandName}{${label}}`, @@ -414,7 +414,6 @@ class AutoCompleteManager { Autocomplete.startCommand = { name: 'startAutocomplete', exec: editor => { - let filtered if (!editor.completer) { editor.completer = new Autocomplete() } @@ -429,7 +428,7 @@ class AutoCompleteManager { ) container.css({ 'font-size': this.$scope.fontSize + 'px' }) // Dynamically set width of autocomplete popup - filtered = + const filtered = editor.completer.completions && editor.completer.completions.filtered if (filtered) { diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/CommandManager.js b/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/CommandManager.js index 13feec55d1..69cb23a396 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/CommandManager.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/CommandManager.js @@ -152,7 +152,7 @@ export default CommandManager = class CommandManager { const packages = this.metadataManager.getAllPackages() const packageCommands = [] - for (let pkg in packages) { + for (const pkg in packages) { const snippets = packages[pkg] for (snippet of Array.from(snippets)) { packageCommands.push(snippet) @@ -164,7 +164,7 @@ export default CommandManager = class CommandManager { const parser = new Parser(doc, prefix) const commands = parser.parse() let completions = [] - for (let command of Array.from(commands)) { + for (const command of Array.from(commands)) { if (!commandNames[command[0]]) { let caption = `\\${command[0]}` const score = caption === prefix ? 99 : 50 diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/EnvironmentManager.js b/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/EnvironmentManager.js index 153230d781..119356dbd6 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/EnvironmentManager.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/EnvironmentManager.js @@ -201,10 +201,10 @@ class EnvironmentManager { } const parsedItemsMap = {} - for (let environment of Array.from(customEnvironments)) { + for (const environment of Array.from(customEnvironments)) { parsedItemsMap[environment.name] = environment } - for (let command of Array.from(beginCommands)) { + for (const command of Array.from(beginCommands)) { parsedItemsMap[command.name] = command } const parsedItems = _.values(parsedItemsMap) diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/PackageManager.js b/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/PackageManager.js index 13de3a0ed7..5b23099104 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/PackageManager.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor/auto-complete/PackageManager.js @@ -120,7 +120,7 @@ class PackageManager { getCompletions(editor, session, pos, prefix, callback) { const usedPackages = Object.keys(this.metadataManager.getAllPackages()) const packageSnippets = [] - for (let pkg of Array.from(packages)) { + for (const pkg of Array.from(packages)) { if (!Array.from(usedPackages).includes(pkg)) { packageSnippets.push({ caption: `\\usepackage{${pkg}}`, diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor/highlights/HighlightsManager.js b/services/web/frontend/js/ide/editor/directives/aceEditor/highlights/HighlightsManager.js index beceea00d7..e66c6a5131 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor/highlights/HighlightsManager.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor/highlights/HighlightsManager.js @@ -109,7 +109,7 @@ export default HighlightsManager = class HighlightsManager { this._clearMarkers() this._clearLabels() - for (let annotation of Array.from(this.$scope.highlights || [])) { + for (const annotation of Array.from(this.$scope.highlights || [])) { ;(annotation => { const colorScheme = ColorManager.getColorScheme( annotation.hue, @@ -161,7 +161,7 @@ export default HighlightsManager = class HighlightsManager { showAnnotationLabels(position) { let labelToShow = null - for (let label of Array.from(this.labels || [])) { + for (const label of Array.from(this.labels || [])) { if (label.range.contains(position.row, position.column)) { labelToShow = label } @@ -252,7 +252,7 @@ export default HighlightsManager = class HighlightsManager { let highlightsAfter = 0 this.lastHiddenHighlightBefore = null this.firstHiddenHighlightAfter = null - for (let annotation of Array.from(this.$scope.highlights || [])) { + for (const annotation of Array.from(this.$scope.highlights || [])) { const range = annotation.highlight || annotation.strikeThrough if (range == null) { continue @@ -281,7 +281,7 @@ export default HighlightsManager = class HighlightsManager { scrollToFirstHighlight() { return (() => { const result = [] - for (let annotation of Array.from(this.$scope.highlights || [])) { + for (const annotation of Array.from(this.$scope.highlights || [])) { const range = annotation.highlight || annotation.strikeThrough if (range == null) { continue @@ -294,7 +294,7 @@ export default HighlightsManager = class HighlightsManager { } _clearMarkers() { - for (let marker_id of Array.from(this.markerIds)) { + for (const marker_id of Array.from(this.markerIds)) { this.editor.getSession().removeMarker(marker_id) } return (this.markerIds = []) diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.js b/services/web/frontend/js/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.js index ba3df6e9d1..caaad3986d 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.js @@ -298,7 +298,7 @@ class SpellCheckManager { return null } const misspelled = [] - for (let misspelling of result.misspellings) { + for (const misspelling of result.misspellings) { word = words[misspelling.index] const position = positions[misspelling.index] misspelled[misspelling.index] = true @@ -360,7 +360,7 @@ class SpellCheckManager { const positions = [] for (let row = 0; row < lines.length; row++) { let line = lines[row] - let rowIdx = rowNumsToCheck[row] + const rowIdx = rowNumsToCheck[row] line = this.blankOutBlacklistedCommands(line) var result WORD_REGEX.lastIndex = 0 // reset global stateful regexp for this usage diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor/track-changes/TrackChangesAdapter.js b/services/web/frontend/js/ide/editor/directives/aceEditor/track-changes/TrackChangesAdapter.js index 01f57e6786..c6cb1211ed 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor/track-changes/TrackChangesAdapter.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor/track-changes/TrackChangesAdapter.js @@ -16,9 +16,9 @@ class TrackChangesAdapter { clearAnnotations() { const session = this.editor.getSession() - for (let change_id in this.changeIdToMarkerIdMap) { + for (const change_id in this.changeIdToMarkerIdMap) { const markers = this.changeIdToMarkerIdMap[change_id] - for (let marker_name in markers) { + for (const marker_name in markers) { const marker_id = markers[marker_name] session.removeMarker(marker_id) } diff --git a/services/web/frontend/js/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.js b/services/web/frontend/js/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.js index cf4155b6f1..013bb147c5 100644 --- a/services/web/frontend/js/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.js +++ b/services/web/frontend/js/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.js @@ -160,7 +160,7 @@ class TrackChangesManager { } redrawAnnotations() { - for (let change of Array.from(this.rangesTracker.changes)) { + for (const change of Array.from(this.rangesTracker.changes)) { if (change.op.i != null) { this.adapter.onInsertAdded(change) } else if (change.op.d != null) { @@ -350,7 +350,7 @@ class TrackChangesManager { changes.sort((a, b) => b.op.p - a.op.p) const session = this.editor.getSession() - for (let change of Array.from(changes)) { + for (const change of Array.from(changes)) { if (change.op.d != null) { const content = change.op.d const position = this.adapter.shareJsOffsetToRowColumn(change.op.p) @@ -387,12 +387,12 @@ class TrackChangesManager { hideCommentsByThreadIds(thread_ids) { const resolve_ids = {} - let comments = this.rangesTracker.comments || [] - for (let id of Array.from(thread_ids)) { + const comments = this.rangesTracker.comments || [] + for (const id of Array.from(thread_ids)) { resolve_ids[id] = true } - for (let comment of comments) { + for (const comment of comments) { if (resolve_ids[comment.op.t]) { this.adapter.onCommentRemoved(comment) } @@ -401,8 +401,8 @@ class TrackChangesManager { } showCommentByThreadId(thread_id) { - let comments = this.rangesTracker.comments || [] - for (let comment of comments) { + const comments = this.rangesTracker.comments || [] + for (const comment of comments) { if (comment.op.t === thread_id && !this.isCommentResolved(comment)) { this.adapter.onCommentAdded(comment) } @@ -427,7 +427,7 @@ class TrackChangesManager { this._cutState.docId = this.$scope.docId return (() => { const result = [] - for (let comment of Array.from(this.rangesTracker.comments)) { + for (const comment of Array.from(this.rangesTracker.comments)) { const comment_start = comment.op.p const comment_end = comment_start + comment.op.c.length if (selection_start <= comment_start && comment_end <= selection_end) { @@ -465,7 +465,7 @@ class TrackChangesManager { pasted_text === this._cutState.text && this.$scope.docId === this._cutState.docId ) { - for (let { comment, offset, text } of Array.from( + for (const { comment, offset, text } of Array.from( this._cutState.comments )) { const op = { c: text, p: paste_offset + offset, t: comment.id } @@ -519,7 +519,7 @@ class TrackChangesManager { } } - for (let comment of Array.from(this.rangesTracker.comments)) { + for (const comment of Array.from(this.rangesTracker.comments)) { if (this.adapter.changeIdToMarkerIdMap[comment.id] != null) { ;({ background_marker_id, @@ -583,7 +583,7 @@ class TrackChangesManager { const { renderer } = this.editor const entries = this._getCurrentDocEntries() const object = entries || {} - for (let entry_id in object) { + for (const entry_id in object) { const entry = object[entry_id] const doc_position = this.adapter.shareJsOffsetToRowColumn(entry.offset) const screen_position = session.documentToScreenPosition( @@ -612,7 +612,7 @@ class TrackChangesManager { const entries = this._getCurrentDocEntries() || {} const entriesLength = Object.keys(entries).length let changed = false - for (let entry_id in entries) { + for (const entry_id in entries) { const entry = entries[entry_id] const old = entry.visible entry.visible = diff --git a/services/web/frontend/js/ide/file-tree/FileTreeManager.js b/services/web/frontend/js/ide/file-tree/FileTreeManager.js index 8825afa19d..ddb16036bb 100644 --- a/services/web/frontend/js/ide/file-tree/FileTreeManager.js +++ b/services/web/frontend/js/ide/file-tree/FileTreeManager.js @@ -275,7 +275,7 @@ export default FileTreeManager = class FileTreeManager { } _findEntityByIdInFolder(folder, id) { - for (let entity of Array.from(folder.children || [])) { + for (const entity of Array.from(folder.children || [])) { if (entity.id === id) { return entity } else if (entity.children != null) { @@ -309,7 +309,7 @@ export default FileTreeManager = class FileTreeManager { return this._findEntityByPathInFolder(folder, rest) } - for (let entity of Array.from(folder.children)) { + for (const entity of Array.from(folder.children)) { if (entity.name === name) { if (rest === '') { return entity @@ -329,7 +329,7 @@ export default FileTreeManager = class FileTreeManager { return (() => { const result = [] - for (let entity of Array.from(this.$scope.deletedDocs || [])) { + for (const entity of Array.from(this.$scope.deletedDocs || [])) { result.push(callback(entity)) } return result @@ -339,7 +339,7 @@ export default FileTreeManager = class FileTreeManager { _forEachEntityInFolder(folder, path, callback) { return (() => { const result = [] - for (let entity of Array.from(folder.children || [])) { + for (const entity of Array.from(folder.children || [])) { var childPath if (path != null) { childPath = path + '/' + entity.name @@ -362,7 +362,7 @@ export default FileTreeManager = class FileTreeManager { } _getEntityPathInFolder(folder, entity) { - for (let child of Array.from(folder.children || [])) { + for (const child of Array.from(folder.children || [])) { if (child === entity) { return entity.name } else if (child.type === 'folder') { @@ -417,7 +417,7 @@ export default FileTreeManager = class FileTreeManager { selected: rawFolder._id === this.selected_entity_id, } - for (let doc of Array.from(rawFolder.docs || [])) { + for (const doc of Array.from(rawFolder.docs || [])) { folder.children.push({ name: doc.name, id: doc._id, @@ -426,7 +426,7 @@ export default FileTreeManager = class FileTreeManager { }) } - for (let file of Array.from(rawFolder.fileRefs || [])) { + for (const file of Array.from(rawFolder.fileRefs || [])) { folder.children.push({ name: file.name, id: file._id, @@ -437,7 +437,7 @@ export default FileTreeManager = class FileTreeManager { }) } - for (let childFolder of Array.from(rawFolder.folders || [])) { + for (const childFolder of Array.from(rawFolder.folders || [])) { folder.children.push(this._parseFolder(childFolder)) } @@ -487,7 +487,7 @@ export default FileTreeManager = class FileTreeManager { } _getEntityPathInFolder(folder, entity) { - for (let child of Array.from(folder.children || [])) { + for (const child of Array.from(folder.children || [])) { if (child === entity) { return entity.name } else if (child.type === 'folder') { @@ -511,7 +511,7 @@ export default FileTreeManager = class FileTreeManager { if (startFolder == null) { startFolder = this.$scope.rootFolder } - for (let entity of Array.from(startFolder.children || [])) { + for (const entity of Array.from(startFolder.children || [])) { // The 'current' folder is either the one selected, or // the one containing the selected doc/file if (entity.selected) { @@ -534,7 +534,7 @@ export default FileTreeManager = class FileTreeManager { } projectContainsFolder() { - for (let entity of Array.from(this.$scope.rootFolder.children)) { + for (const entity of Array.from(this.$scope.rootFolder.children)) { if (entity.type === 'folder') { return true } @@ -543,7 +543,7 @@ export default FileTreeManager = class FileTreeManager { } existsInThisFolder(folder, name) { - for (let entity of Array.from( + for (const entity of Array.from( (folder != null ? folder.children : undefined) || [] )) { if (entity.name === name) { diff --git a/services/web/frontend/js/ide/file-tree/controllers/FileTreeEntityController.js b/services/web/frontend/js/ide/file-tree/controllers/FileTreeEntityController.js index 9602a1424d..5806939e20 100644 --- a/services/web/frontend/js/ide/file-tree/controllers/FileTreeEntityController.js +++ b/services/web/frontend/js/ide/file-tree/controllers/FileTreeEntityController.js @@ -150,7 +150,7 @@ export default App.controller( $scope.delete = function () { $scope.state.inflight = true - for (let entity of Array.from($scope.entities)) { + for (const entity of Array.from($scope.entities)) { ide.fileTreeManager.deleteEntity(entity) } return $modalInstance.close() diff --git a/services/web/frontend/js/ide/file-tree/controllers/FileTreeFolderController.js b/services/web/frontend/js/ide/file-tree/controllers/FileTreeFolderController.js index 63e56c13fa..8f1e13961f 100644 --- a/services/web/frontend/js/ide/file-tree/controllers/FileTreeFolderController.js +++ b/services/web/frontend/js/ide/file-tree/controllers/FileTreeFolderController.js @@ -44,7 +44,7 @@ export default App.controller( const ids = $scope.entity.children.map(entity => entity.id) - for (let dropped_entity of Array.from(entities)) { + for (const dropped_entity of Array.from(entities)) { if (!ids.includes(dropped_entity.id)) { try { ide.fileTreeManager.moveEntity(dropped_entity, $scope.entity) diff --git a/services/web/frontend/js/ide/file-tree/controllers/FileTreeRootFolderController.js b/services/web/frontend/js/ide/file-tree/controllers/FileTreeRootFolderController.js index 7e31d42ce5..2f49b6513f 100644 --- a/services/web/frontend/js/ide/file-tree/controllers/FileTreeRootFolderController.js +++ b/services/web/frontend/js/ide/file-tree/controllers/FileTreeRootFolderController.js @@ -27,7 +27,7 @@ export default App.controller( const ids = rootFolder.children.map(entity => entity.id) - for (let dropped_entity of Array.from(entities)) { + for (const dropped_entity of Array.from(entities)) { if (!ids.includes(dropped_entity.id)) { try { ide.fileTreeManager.moveEntity(dropped_entity, rootFolder) diff --git a/services/web/frontend/js/ide/files/services/files.js b/services/web/frontend/js/ide/files/services/files.js index c71735ecab..c881f60e0a 100644 --- a/services/web/frontend/js/ide/files/services/files.js +++ b/services/web/frontend/js/ide/files/services/files.js @@ -4,7 +4,7 @@ import App from '../../../base' export default App.factory('files', function (ide) { const Files = { getTeXFiles() { - let texFiles = [] + const texFiles = [] ide.fileTreeManager.forEachEntity(function (entity, _folder, path) { if ( entity.type === 'doc' && diff --git a/services/web/frontend/js/ide/history/HistoryManager.js b/services/web/frontend/js/ide/history/HistoryManager.js index d4881bf7cb..0c77de7cbc 100644 --- a/services/web/frontend/js/ide/history/HistoryManager.js +++ b/services/web/frontend/js/ide/history/HistoryManager.js @@ -273,10 +273,10 @@ export default HistoryManager = (function () { this.$scope.history.updates.length - 1 ] - for (let update of Array.from(updates)) { + for (const update of Array.from(updates)) { update.pathnames = [] // Used for display const object = update.docs || {} - for (let doc_id in object) { + for (const doc_id in object) { const doc = object[doc_id] doc.entity = this.ide.fileTreeManager.findEntityById(doc_id, { includeDeleted: true, @@ -284,7 +284,7 @@ export default HistoryManager = (function () { update.pathnames.push(doc.entity.name) } - for (let user of Array.from(update.meta.users || [])) { + for (const user of Array.from(update.meta.users || [])) { if (user != null) { user.hue = ColorManager.getHueForUserId(user.id) } @@ -322,10 +322,10 @@ export default HistoryManager = (function () { ? this.$scope.history.selection.doc.id : undefined - for (let update of Array.from( + for (const update of Array.from( this.$scope.history.selection.updates || [] )) { - for (let doc_id in update.docs) { + for (const doc_id in update.docs) { const doc = update.docs[doc_id] if (doc_id === selected_doc_id) { if (fromV != null && toV != null) { @@ -353,7 +353,7 @@ export default HistoryManager = (function () { _selectDocFromUpdates() { let doc, doc_id const affected_docs = {} - for (let update of Array.from(this.$scope.history.selection.updates)) { + for (const update of Array.from(this.$scope.history.selection.updates)) { for (doc_id in update.docs) { doc = update.docs[doc_id] affected_docs[doc_id] = doc.entity @@ -376,7 +376,7 @@ export default HistoryManager = (function () { } _updateContainsUserId(update, user_id) { - for (let user of Array.from(update.meta.users)) { + for (const user of Array.from(update.meta.users)) { if ((user != null ? user.id : undefined) === user_id) { return true } diff --git a/services/web/frontend/js/ide/history/HistoryV2Manager.js b/services/web/frontend/js/ide/history/HistoryV2Manager.js index 51af6b2b2d..833bda490c 100644 --- a/services/web/frontend/js/ide/history/HistoryV2Manager.js +++ b/services/web/frontend/js/ide/history/HistoryV2Manager.js @@ -71,7 +71,7 @@ export default HistoryManager = (function () { } this.$scope.isHistoryLoading = () => { - let selection = this.$scope.history.selection + const selection = this.$scope.history.selection return ( this.$scope.history.loadingFileTree || (this.$scope.history.viewMode === HistoryViewModes.POINT_IN_TIME && @@ -153,7 +153,7 @@ export default HistoryManager = (function () { labels: null, loadingFileTree: true, } - let _deregisterFeatureWatcher = this.$scope.$watch( + const _deregisterFeatureWatcher = this.$scope.$watch( 'project.features.versioning', hasVersioning => { if (hasVersioning != null) { @@ -222,21 +222,21 @@ export default HistoryManager = (function () { } setHoverFrom(fromV) { - let selection = this.$scope.history.selection + const selection = this.$scope.history.selection selection.hoveredRange.fromV = fromV selection.hoveredRange.toV = selection.range.toV this.$scope.history.hoveringOverListSelectors = true } setHoverTo(toV) { - let selection = this.$scope.history.selection + const selection = this.$scope.history.selection selection.hoveredRange.toV = toV selection.hoveredRange.fromV = selection.range.fromV this.$scope.history.hoveringOverListSelectors = true } resetHover() { - let selection = this.$scope.history.selection + const selection = this.$scope.history.selection selection.hoveredRange.toV = null selection.hoveredRange.fromV = null this.$scope.history.hoveringOverListSelectors = false @@ -278,7 +278,7 @@ export default HistoryManager = (function () { _loadFileTree(toV, fromV) { let url = `/project/${this.$scope.project_id}/filetree/diff` - let selection = this.$scope.history.selection + const selection = this.$scope.history.selection const query = [`from=${fromV}`, `to=${toV}`] url += `?${query.join('&')}` @@ -300,7 +300,7 @@ export default HistoryManager = (function () { .get(url, { timeout: this._loadFileTreeRequestCanceller.promise }) .then(response => { this.$scope.history.selection.files = response.data.diff - for (let file of this.$scope.history.selection.files) { + for (const file of this.$scope.history.selection.files) { if (file.newPathname != null) { file.oldPathname = file.pathname file.pathname = file.newPathname @@ -334,12 +334,12 @@ export default HistoryManager = (function () { } autoSelectFile() { - let selectedPathname = null - let files = this.$scope.history.selection.files + const selectedPathname = null + const files = this.$scope.history.selection.files let fileToSelect = null let previouslySelectedFile = null let previouslySelectedFileHasOp = false - let filesWithOps = this._getFilesWithOps() + const filesWithOps = this._getFilesWithOps() const orderedOpTypes = ['edited', 'added', 'renamed', 'removed'] if (this._previouslySelectedPathname != null) { @@ -353,8 +353,8 @@ export default HistoryManager = (function () { if (previouslySelectedFile != null && previouslySelectedFileHasOp) { fileToSelect = previouslySelectedFile } else { - for (let opType of orderedOpTypes) { - let fileWithMatchingOpType = _.find(filesWithOps, { + for (const opType of orderedOpTypes) { + const fileWithMatchingOpType = _.find(filesWithOps, { operation: opType, }) if (fileWithMatchingOpType != null) { @@ -368,13 +368,13 @@ export default HistoryManager = (function () { if (previouslySelectedFile != null) { fileToSelect = previouslySelectedFile } else { - let mainFile = _.find(files, function (file) { + const mainFile = _.find(files, function (file) { return /main\.tex$/.test(file.pathname) }) if (mainFile != null) { fileToSelect = mainFile } else { - let anyTeXFile = _.find(files, function (file) { + const anyTeXFile = _.find(files, function (file) { return /\.tex$/.test(file.pathname) }) if (anyTeXFile != null) { @@ -393,18 +393,18 @@ export default HistoryManager = (function () { _getFilesWithOps() { let filesWithOps if (this.$scope.history.viewMode === HistoryViewModes.POINT_IN_TIME) { - let currentUpdate = this.getUpdateForVersion( + const currentUpdate = this.getUpdateForVersion( this.$scope.history.selection.range.toV ) filesWithOps = [] if (currentUpdate != null) { - for (let pathname of currentUpdate.pathnames) { + for (const pathname of currentUpdate.pathnames) { filesWithOps.push({ pathname: pathname, operation: 'edited', }) } - for (let op of currentUpdate.project_ops) { + for (const op of currentUpdate.project_ops) { let fileWithOp if (op.add != null) { fileWithOp = { @@ -450,7 +450,7 @@ export default HistoryManager = (function () { return } - let toV = this.$scope.history.updates[0].toV + const toV = this.$scope.history.updates[0].toV let fromV = null let indexOfLastUpdateNotByMe = 0 @@ -474,7 +474,7 @@ export default HistoryManager = (function () { return } let versionToSelect = this.$scope.history.updates[0].toV - let range = this.$scope.history.selection.range + const range = this.$scope.history.selection.range if ( range.toV != null && range.fromV != null && @@ -504,7 +504,7 @@ export default HistoryManager = (function () { } selectVersionForPointInTime(version) { - let selection = this.$scope.history.selection + const selection = this.$scope.history.selection if ( selection.range.toV !== version && selection.range.fromV !== version @@ -516,7 +516,7 @@ export default HistoryManager = (function () { } selectVersionsForCompare(toV, fromV) { - let range = this.$scope.history.selection.range + const range = this.$scope.history.selection.range if (range.toV !== toV || range.fromV !== fromV) { range.toV = toV range.fromV = fromV @@ -559,7 +559,7 @@ export default HistoryManager = (function () { return } - for (let update of Array.from(this.$scope.history.updates)) { + for (const update of Array.from(this.$scope.history.updates)) { if (update.toV === labelToSelect.version) { updateToSelect = update break @@ -569,7 +569,7 @@ export default HistoryManager = (function () { if (updateToSelect != null) { this.selectVersionForPointInTime(updateToSelect.toV) } else { - let selection = this.$scope.history.selection + const selection = this.$scope.history.selection selection.range.toV = labelToSelect.version selection.range.fromV = labelToSelect.version this.loadFileTreeForVersion(labelToSelect.version) @@ -577,7 +577,7 @@ export default HistoryManager = (function () { } getUpdateForVersion(version) { - for (let update of this.$scope.history.updates) { + for (const update of this.$scope.history.updates) { if (update.toV === version) { return update } @@ -585,7 +585,7 @@ export default HistoryManager = (function () { } autoSelectLabelsForComparison() { - let labels = this.$scope.history.labels + const labels = this.$scope.history.labels let nLabels = 0 if (Array.isArray(labels)) { nLabels = labels.length @@ -657,11 +657,11 @@ export default HistoryManager = (function () { } _loadLabels(labels, lastUpdateToV) { - let sortedLabels = this._sortLabelsByVersionAndDate(labels) - let labelsWithoutPseudoLabel = this._deletePseudoCurrentStateLabelIfExistent( + const sortedLabels = this._sortLabelsByVersionAndDate(labels) + const labelsWithoutPseudoLabel = this._deletePseudoCurrentStateLabelIfExistent( sortedLabels ) - let labelsWithPseudoLabelIfNeeded = this._addPseudoCurrentStateLabelIfNeeded( + const labelsWithPseudoLabelIfNeeded = this._addPseudoCurrentStateLabelIfNeeded( labelsWithoutPseudoLabel, lastUpdateToV ) @@ -680,7 +680,7 @@ export default HistoryManager = (function () { (labels.length && labels[0].version !== mostRecentVersion) || labels.length === 0 ) { - let pseudoCurrentStateLabel = { + const pseudoCurrentStateLabel = { id: '1', isPseudoCurrentStateLabel: true, version: mostRecentVersion, @@ -911,7 +911,7 @@ export default HistoryManager = (function () { const iterable = updates || [] for (let i = 0; i < iterable.length; i++) { const update = iterable[i] - for (let user of Array.from(update.meta.users || [])) { + for (const user of Array.from(update.meta.users || [])) { if (user != null) { user.hue = ColorManager.getHueForUserId(user.id) } @@ -986,7 +986,7 @@ export default HistoryManager = (function () { } _updateContainsUserId(update, user_id) { - for (let user of Array.from(update.meta.users)) { + for (const user of Array.from(update.meta.users)) { if ((user != null ? user.id : undefined) === user_id) { return true } diff --git a/services/web/frontend/js/ide/history/components/historyFileEntity.js b/services/web/frontend/js/ide/history/components/historyFileEntity.js index c9a833ad5f..912a49d30b 100644 --- a/services/web/frontend/js/ide/history/components/historyFileEntity.js +++ b/services/web/frontend/js/ide/history/components/historyFileEntity.js @@ -16,7 +16,7 @@ const historyFileEntityController = function ($scope, $element, $attrs) { const ctrl = this ctrl.hasOperation = false ctrl.getRenameTooltip = i18nRenamedStr => { - let [simplifiedOldPathname, simplifiedPathname] = _getSimplifiedPaths( + const [simplifiedOldPathname, simplifiedPathname] = _getSimplifiedPaths( ctrl.fileEntity.oldPathname, ctrl.fileEntity.pathname ) @@ -37,9 +37,9 @@ const historyFileEntityController = function ($scope, $element, $attrs) { } const _getSimplifiedPaths = (path1, path2) => { - let path1Parts = path1.split('/') - let path2Parts = path2.split('/') - let maxIterations = Math.min(path1Parts.length, path2Parts.length) - 1 + const path1Parts = path1.split('/') + const path2Parts = path2.split('/') + const maxIterations = Math.min(path1Parts.length, path2Parts.length) - 1 for ( var commonPartIndex = 0; commonPartIndex < maxIterations; diff --git a/services/web/frontend/js/ide/history/controllers/HistoryListController.js b/services/web/frontend/js/ide/history/controllers/HistoryListController.js index 871cd0c974..bc8c12fc99 100644 --- a/services/web/frontend/js/ide/history/controllers/HistoryListController.js +++ b/services/web/frontend/js/ide/history/controllers/HistoryListController.js @@ -61,7 +61,7 @@ App.controller('HistoryListController', function ($scope, $modal, ide) { $scope.history.selection.updates = [] return (() => { const result = [] - for (let update of Array.from($scope.history.updates)) { + for (const update of Array.from($scope.history.updates)) { var inSelection if (update.selectedTo) { inSelection = true @@ -140,7 +140,7 @@ App.controller('HistoryListController', function ($scope, $modal, ide) { $scope.resetHoverState = () => (() => { const result = [] - for (let update of Array.from($scope.history.updates)) { + for (const update of Array.from($scope.history.updates)) { delete update.hoverSelectedFrom delete update.hoverSelectedTo result.push(delete update.inHoverSelection) @@ -160,7 +160,7 @@ export default App.controller( 'update.selectedFrom', function (selectedFrom, oldSelectedFrom) { if (selectedFrom) { - for (let update of Array.from($scope.history.updates)) { + for (const update of Array.from($scope.history.updates)) { if (update !== $scope.update) { update.selectedFrom = false } @@ -172,7 +172,7 @@ export default App.controller( $scope.$watch('update.selectedTo', function (selectedTo, oldSelectedTo) { if (selectedTo) { - for (let update of Array.from($scope.history.updates)) { + for (const update of Array.from($scope.history.updates)) { if (update !== $scope.update) { update.selectedTo = false } diff --git a/services/web/frontend/js/ide/history/controllers/HistoryV2ToolbarController.js b/services/web/frontend/js/ide/history/controllers/HistoryV2ToolbarController.js index 36173b3924..9014486715 100644 --- a/services/web/frontend/js/ide/history/controllers/HistoryV2ToolbarController.js +++ b/services/web/frontend/js/ide/history/controllers/HistoryV2ToolbarController.js @@ -15,8 +15,6 @@ import App from '../../../base' export default App.controller( 'HistoryV2ToolbarController', ($scope, $modal, ide, eventTracking, waitFor) => { - let openEntity - $scope.currentUpdate = null $scope.currentLabel = null @@ -29,7 +27,7 @@ export default App.controller( showOnlyLabels: false, } - let _deregistershowOnlyLabelsWatcher = $scope.$watch( + const _deregistershowOnlyLabelsWatcher = $scope.$watch( 'history.showOnlyLabels', showOnlyLabels => { if (showOnlyLabels != null) { @@ -103,7 +101,7 @@ export default App.controller( }) } - openEntity = function (data) { + function openEntity(data) { const { id, type } = data return waitFor(() => ide.fileTreeManager.findEntityById(id), 3000) .then(function (entity) { diff --git a/services/web/frontend/js/ide/human-readable-logs/HumanReadableLogs.js b/services/web/frontend/js/ide/human-readable-logs/HumanReadableLogs.js index 9e2a7bed54..f2896a7e27 100644 --- a/services/web/frontend/js/ide/human-readable-logs/HumanReadableLogs.js +++ b/services/web/frontend/js/ide/human-readable-logs/HumanReadableLogs.js @@ -11,7 +11,7 @@ export default { } const _getRule = function (logMessage) { - for (let rule of ruleset) { + for (const rule of ruleset) { if (rule.regexToMatch.test(logMessage)) { return rule } @@ -20,7 +20,7 @@ export default { const seenErrorTypes = {} // keep track of types of errors seen - for (let entry of parsedLogEntries.all) { + for (const entry of parsedLogEntries.all) { const ruleDetails = _getRule(entry.message) if (ruleDetails != null) { @@ -70,7 +70,7 @@ export default { } // filter out the suppressed errors (from the array entries in parsedLogEntries) - for (let key in parsedLogEntries) { + for (const key in parsedLogEntries) { const errors = parsedLogEntries[key] if (typeof errors === 'object' && errors.length > 0) { parsedLogEntries[key] = Array.from(errors).filter( diff --git a/services/web/frontend/js/ide/metadata/services/metadata.js b/services/web/frontend/js/ide/metadata/services/metadata.js index 11a99c4895..279109518f 100644 --- a/services/web/frontend/js/ide/metadata/services/metadata.js +++ b/services/web/frontend/js/ide/metadata/services/metadata.js @@ -42,7 +42,7 @@ export default App.factory('metadata', function ($http, ide) { _.flattenDeep( (() => { const result = [] - for (let docId in state.documents) { + for (const docId in state.documents) { const meta = state.documents[docId] result.push(meta.labels) } @@ -52,9 +52,9 @@ export default App.factory('metadata', function ($http, ide) { metadata.getAllPackages = function () { const packageCommandMapping = {} - for (let _docId in state.documents) { + for (const _docId in state.documents) { const meta = state.documents[_docId] - for (let packageName in meta.packages) { + for (const packageName in meta.packages) { const commandSnippets = meta.packages[packageName] packageCommandMapping[packageName] = commandSnippets } @@ -70,7 +70,7 @@ export default App.factory('metadata', function ($http, ide) { if (data.projectMeta) { return (() => { const result = [] - for (let docId in data.projectMeta) { + for (const docId in data.projectMeta) { const docMeta = data.projectMeta[docId] result.push((state.documents[docId] = docMeta)) } diff --git a/services/web/frontend/js/ide/online-users/OnlineUsersManager.js b/services/web/frontend/js/ide/online-users/OnlineUsersManager.js index f4903a8510..8b3af10cac 100644 --- a/services/web/frontend/js/ide/online-users/OnlineUsersManager.js +++ b/services/web/frontend/js/ide/online-users/OnlineUsersManager.js @@ -43,7 +43,7 @@ export default OnlineUsersManager = (function () { 'clientTracking.getConnectedUsers', (error, connectedUsers) => { this.$scope.onlineUsers = {} - for (let user of Array.from(connectedUsers || [])) { + for (const user of Array.from(connectedUsers || [])) { if (user.client_id === this.ide.socket.publicId) { // Don't store myself continue diff --git a/services/web/frontend/js/ide/pdf/controllers/PdfController.js b/services/web/frontend/js/ide/pdf/controllers/PdfController.js index f07856faf8..68bcbf154c 100644 --- a/services/web/frontend/js/ide/pdf/controllers/PdfController.js +++ b/services/web/frontend/js/ide/pdf/controllers/PdfController.js @@ -565,10 +565,10 @@ App.controller( } function accumulateResults(newEntries) { - for (let key of ['all', 'errors', 'warnings', 'typesetting']) { + for (const key of ['all', 'errors', 'warnings', 'typesetting']) { if (newEntries[key]) { if (newEntries.type != null) { - for (let entry of newEntries[key]) { + for (const entry of newEntries[key]) { entry.type = newEntries.type } } @@ -590,7 +590,7 @@ App.controller( function processChkTex(log) { const errors = [] const warnings = [] - for (let line of log.split('\n')) { + for (const line of log.split('\n')) { var m if ((m = line.match(/^(\S+):(\d+):(\d+): (Error|Warning): (.*)/))) { const result = { @@ -731,7 +731,7 @@ App.controller( if (doc == null) { return null } - for (let line of doc.split('\n')) { + for (const line of doc.split('\n')) { if (/^[^%]*\\documentclass/.test(line)) { return ide.editorManager.getCurrentDocId() } diff --git a/services/web/frontend/js/ide/pdfng/directives/pdfAnnotations.js b/services/web/frontend/js/ide/pdfng/directives/pdfAnnotations.js index 46769cd215..5b49acac0c 100644 --- a/services/web/frontend/js/ide/pdfng/directives/pdfAnnotations.js +++ b/services/web/frontend/js/ide/pdfng/directives/pdfAnnotations.js @@ -13,7 +13,7 @@ App.factory('pdfAnnotations', function () { setAnnotations(annotations) { const result = [] - for (let annotation of annotations) { + for (const annotation of annotations) { switch (annotation.subtype) { case 'Link': result.push(this.addLink(annotation)) diff --git a/services/web/frontend/js/ide/pdfng/directives/pdfHighlights.js b/services/web/frontend/js/ide/pdfng/directives/pdfHighlights.js index 1232bb91cf..10e52fb938 100644 --- a/services/web/frontend/js/ide/pdfng/directives/pdfHighlights.js +++ b/services/web/frontend/js/ide/pdfng/directives/pdfHighlights.js @@ -42,7 +42,7 @@ export default App.factory('pdfHighlights', function () { } clearHighlights() { - for (let h of Array.from(this.highlightElements)) { + for (const h of Array.from(this.highlightElements)) { if (h != null) { h.parentNode.removeChild(h) } diff --git a/services/web/frontend/js/ide/pdfng/directives/pdfJs.js b/services/web/frontend/js/ide/pdfng/directives/pdfJs.js index fe393a7cee..ea86faad27 100644 --- a/services/web/frontend/js/ide/pdfng/directives/pdfJs.js +++ b/services/web/frontend/js/ide/pdfng/directives/pdfJs.js @@ -124,7 +124,7 @@ export default App.directive('pdfng', ($timeout, localStorage) => ({ } if (attrs.resizeOn != null) { - for (let event of Array.from(attrs.resizeOn.split(','))) { + for (const event of Array.from(attrs.resizeOn.split(','))) { scope.$on(event, function (e) {}) } } diff --git a/services/web/frontend/js/ide/pdfng/directives/pdfPage.js b/services/web/frontend/js/ide/pdfng/directives/pdfPage.js index 4ac4335bff..fbef075c21 100644 --- a/services/web/frontend/js/ide/pdfng/directives/pdfPage.js +++ b/services/web/frontend/js/ide/pdfng/directives/pdfPage.js @@ -133,7 +133,7 @@ export default App.directive( scope.document.getPdfViewport(scope.page.pageNum).then(viewport => (() => { const result1 = [] - for (let hl of Array.from(pageHighlights)) { + for (const hl of Array.from(pageHighlights)) { // console.log 'adding highlight', h, viewport const top = viewport.viewBox[3] - hl.v result1.push( diff --git a/services/web/frontend/js/ide/pdfng/directives/pdfRenderer.js b/services/web/frontend/js/ide/pdfng/directives/pdfRenderer.js index 52f924175d..01a5f52ee0 100644 --- a/services/web/frontend/js/ide/pdfng/directives/pdfRenderer.js +++ b/services/web/frontend/js/ide/pdfng/directives/pdfRenderer.js @@ -95,10 +95,10 @@ export default App.factory( clearTimeout(this.queueTimer) } // clear any existing timers, render tasks - for (let timer of Array.from(this.spinTimer || [])) { + for (const timer of Array.from(this.spinTimer || [])) { clearTimeout(timer) } - for (let page of Array.from(this.pageState || [])) { + for (const page of Array.from(this.pageState || [])) { __guard__(page != null ? page.loadTask : undefined, x => x.cancel()) __guard__(page != null ? page.renderTask : undefined, x1 => x1.cancel() @@ -233,7 +233,7 @@ export default App.factory( this.queuedPages[page.pagenum] = true } // clear any unfinished spinner timers on pages that aren't in the queue any more - for (let pagenum in this.spinTimer) { + for (const pagenum in this.spinTimer) { if (!this.queuedPages[pagenum]) { clearTimeout(this.spinTimer[pagenum]) delete this.spinTimer[pagenum] @@ -258,7 +258,7 @@ export default App.factory( const [canvas, pagenum] = Array.from(this.getPageDetails(page)) canvas.addClass('pdfng-loading') return (this.spinTimer[pagenum] = setTimeout(() => { - for (let queuedPage of Array.from(this.renderQueue)) { + for (const queuedPage of Array.from(this.renderQueue)) { if (pagenum === queuedPage.pagenum) { this.spinner.add(canvas, { static: true }) this.spinTimerDone[pagenum] = true diff --git a/services/web/frontend/js/ide/pdfng/directives/pdfViewer.js b/services/web/frontend/js/ide/pdfng/directives/pdfViewer.js index 158c450b42..a8193ebd90 100644 --- a/services/web/frontend/js/ide/pdfng/directives/pdfViewer.js +++ b/services/web/frontend/js/ide/pdfng/directives/pdfViewer.js @@ -829,9 +829,9 @@ export default App.directive('pdfViewer', ($q, $timeout, pdfSpinner) => ({ })) function __range__(left, right, inclusive) { - let range = [] - let ascending = left < right - let end = !inclusive ? right : ascending ? right + 1 : right - 1 + const range = [] + const ascending = left < right + const end = !inclusive ? right : ascending ? right + 1 : right - 1 for (let i = left; ascending ? i < end : i > end; ascending ? i++ : i--) { range.push(i) } diff --git a/services/web/frontend/js/ide/review-panel/RangesTracker.js b/services/web/frontend/js/ide/review-panel/RangesTracker.js index e52b3c4203..6add6d35b7 100644 --- a/services/web/frontend/js/ide/review-panel/RangesTracker.js +++ b/services/web/frontend/js/ide/review-panel/RangesTracker.js @@ -106,7 +106,7 @@ export default RangesTracker = class RangesTracker { getComment(comment_id) { let comment = null - for (let c of Array.from(this.comments)) { + for (const c of Array.from(this.comments)) { if (c.id === comment_id) { comment = c break @@ -127,7 +127,7 @@ export default RangesTracker = class RangesTracker { moveCommentId(comment_id, position, text) { return (() => { const result = [] - for (let comment of Array.from(this.comments)) { + for (const comment of Array.from(this.comments)) { if (comment.id === comment_id) { comment.op.p = position comment.op.c = text @@ -142,7 +142,7 @@ export default RangesTracker = class RangesTracker { getChange(change_id) { let change = null - for (let c of Array.from(this.changes)) { + for (const c of Array.from(this.changes)) { if (c.id === change_id) { change = c break @@ -155,11 +155,11 @@ export default RangesTracker = class RangesTracker { const changes_response = [] const ids_map = {} - for (let change_id of Array.from(change_ids)) { + for (const change_id of Array.from(change_ids)) { ids_map[change_id] = true } - for (let change of Array.from(this.changes)) { + for (const change of Array.from(this.changes)) { if (ids_map[change.id]) { delete ids_map[change.id] changes_response.push(change) @@ -187,13 +187,13 @@ export default RangesTracker = class RangesTracker { } const i = this.changes.length const remove_change_id = {} - for (let change_id of Array.from(change_to_remove_ids)) { + for (const change_id of Array.from(change_to_remove_ids)) { remove_change_id[change_id] = true } const remaining_changes = [] - for (let change of Array.from(this.changes)) { + for (const change of Array.from(this.changes)) { if (remove_change_id[change.id]) { delete remove_change_id[change.id] this._markAsDirty(change, 'change', 'removed') @@ -207,7 +207,7 @@ export default RangesTracker = class RangesTracker { validate(text) { let content - for (let change of Array.from(this.changes)) { + for (const change of Array.from(this.changes)) { if (change.op.i != null) { content = text.slice(change.op.p, change.op.p + change.op.i.length) if (content !== change.op.i) { @@ -219,7 +219,7 @@ export default RangesTracker = class RangesTracker { } } } - for (let comment of Array.from(this.comments)) { + for (const comment of Array.from(this.comments)) { content = text.slice(comment.op.p, comment.op.p + comment.op.c.length) if (content !== comment.op.c) { throw new Error( @@ -287,7 +287,7 @@ export default RangesTracker = class RangesTracker { applyInsertToComments(op) { return (() => { const result = [] - for (let comment of Array.from(this.comments)) { + for (const comment of Array.from(this.comments)) { if (op.p <= comment.op.p) { comment.op.p += op.i.length result.push(this._markAsDirty(comment, 'comment', 'moved')) @@ -312,7 +312,7 @@ export default RangesTracker = class RangesTracker { const op_end = op.p + op_length return (() => { const result = [] - for (let comment of Array.from(this.comments)) { + for (const comment of Array.from(this.comments)) { const comment_start = comment.op.p const comment_end = comment.op.p + comment.op.c.length const comment_length = comment_end - comment_start @@ -492,7 +492,7 @@ export default RangesTracker = class RangesTracker { }, metadata: {}, } - for (let key in change.metadata) { + for (const key in change.metadata) { const value = change.metadata[key] after_change.metadata[key] = value } @@ -736,7 +736,7 @@ export default RangesTracker = class RangesTracker { } }) - for (let modification of Array.from(op_modifications)) { + for (const modification of Array.from(op_modifications)) { if (modification.i != null) { content = content.slice(0, modification.p) + @@ -770,7 +770,7 @@ export default RangesTracker = class RangesTracker { let previous_change = null const remove_changes = [] const moved_changes = [] - for (let change of Array.from(this.changes)) { + for (const change of Array.from(this.changes)) { if ( (previous_change != null ? previous_change.op.i : undefined) != null && change.op.i != null @@ -830,7 +830,7 @@ export default RangesTracker = class RangesTracker { _clone(object) { const clone = {} - for (let k in object) { + for (const k in object) { const v = object[k] clone[k] = v } diff --git a/services/web/frontend/js/ide/review-panel/controllers/ReviewPanelController.js b/services/web/frontend/js/ide/review-panel/controllers/ReviewPanelController.js index 9023a5959a..9c09692de4 100644 --- a/services/web/frontend/js/ide/review-panel/controllers/ReviewPanelController.js +++ b/services/web/frontend/js/ide/review-panel/controllers/ReviewPanelController.js @@ -51,7 +51,7 @@ export default App.controller( ) { return UserTypes.MEMBER } - for (let member of Array.from(project.members)) { + for (const member of Array.from(project.members)) { if (member._id === user_id) { return UserTypes.MEMBER } @@ -106,7 +106,7 @@ export default App.controller( window.addEventListener('beforeunload', function () { const collapsedStates = {} - for (let doc in $scope.reviewPanel.overview.docsCollapsedState) { + for (const doc in $scope.reviewPanel.overview.docsCollapsedState) { const state = $scope.reviewPanel.overview.docsCollapsedState[doc] if (state) { collapsedStates[doc] = state @@ -159,7 +159,7 @@ export default App.controller( ) { return (() => { const result = [] - for (let member of Array.from(members)) { + for (const member of Array.from(members)) { if (member.privileges === 'readAndWrite') { if ($scope.reviewPanel.trackChangesState[member._id] == null) { // An added member will have track changes enabled if track changes is on for everyone @@ -347,7 +347,7 @@ export default App.controller( const entries = $scope.reviewPanel.entries[$scope.editor.open_doc_id] || {} const permEntries = {} - for (let entry in entries) { + for (const entry in entries) { const entryData = entries[entry] if (!['add-comment', 'bulk-actions'].includes(entry)) { permEntries[entry] = entryData @@ -374,7 +374,7 @@ export default App.controller( const docs = response.data return (() => { const result = [] - for (let doc of Array.from(docs)) { + for (const doc of Array.from(docs)) { if ( $scope.reviewPanel.overview.docsCollapsedState[doc.id] == null ) { @@ -485,7 +485,7 @@ export default App.controller( ensureThreadsAreLoaded() } - for (let comment of Array.from(rangesTracker.comments)) { + for (const comment of Array.from(rangesTracker.comments)) { var new_comment changed = true delete delete_changes[comment.id] @@ -515,7 +515,7 @@ export default App.controller( } } - for (let change_id in delete_changes) { + for (const change_id in delete_changes) { const _ = delete_changes[change_id] changed = true delete entries[change_id] @@ -567,7 +567,7 @@ export default App.controller( } } - for (let id in entries) { + for (const id in entries) { const entry = entries[id] let isChangeEntryAndWithinSelection = false if ( @@ -604,7 +604,7 @@ export default App.controller( } if (isChangeEntryAndWithinSelection) { - for (let entry_id of Array.from(entry.entry_ids)) { + for (const entry_id of Array.from(entry.entry_ids)) { $scope.reviewPanel.selectedEntryIds.push(entry_id) } $scope.reviewPanel.nVisibleSelectedChanges++ @@ -841,7 +841,7 @@ export default App.controller( if (thread == null) { return } - for (let message of Array.from(thread.messages)) { + for (const message of Array.from(thread.messages)) { if (message.id === comment_id) { message.content = content } @@ -955,7 +955,7 @@ export default App.controller( } $scope.reviewPanel.trackChangesOnForEveryone = newValue const { project } = $scope - for (let member of Array.from(project.members)) { + for (const member of Array.from(project.members)) { _setUserTCState(member._id, newValue, isLocal) } _setGuestsTCState(newValue, isLocal) @@ -981,7 +981,7 @@ export default App.controller( data.on = true } else { data.on_for = {} - for (let userId in $scope.reviewPanel.trackChangesState) { + for (const userId in $scope.reviewPanel.trackChangesState) { const userState = $scope.reviewPanel.trackChangesState[userId] data.on_for[userId] = userState.value } @@ -1001,7 +1001,7 @@ export default App.controller( const { project } = $scope $scope.reviewPanel.trackChangesOnForEveryone = false _setGuestsTCState(state.__guests__ === true) - for (let member of Array.from(project.members)) { + for (const member of Array.from(project.members)) { _setUserTCState( member._id, state[member._id] != null ? state[member._id] : false @@ -1130,7 +1130,7 @@ export default App.controller( } return (() => { const result = [] - for (let user of Array.from(users)) { + for (const user of Array.from(users)) { if (user.id != null) { result.push(($scope.users[user.id] = formatUser(user))) } else { @@ -1162,7 +1162,7 @@ export default App.controller( } for (thread_id in threads) { const thread = threads[thread_id] - for (let comment of Array.from(thread.messages)) { + for (const comment of Array.from(thread.messages)) { formatComment(comment) } if (thread.resolved_by_user != null) { diff --git a/services/web/frontend/js/ide/review-panel/directives/resolvedCommentsDropdown.js b/services/web/frontend/js/ide/review-panel/directives/resolvedCommentsDropdown.js index 224865e82f..da37b51964 100644 --- a/services/web/frontend/js/ide/review-panel/directives/resolvedCommentsDropdown.js +++ b/services/web/frontend/js/ide/review-panel/directives/resolvedCommentsDropdown.js @@ -75,7 +75,7 @@ export default App.directive('resolvedCommentsDropdown', () => ({ result.push( (() => { const result1 = [] - for (let entryId in docEntries) { + for (const entryId in docEntries) { const entry = docEntries[entryId] if ( entry.type === 'comment' && diff --git a/services/web/frontend/js/ide/review-panel/directives/reviewPanelSorted.js b/services/web/frontend/js/ide/review-panel/directives/reviewPanelSorted.js index 0d375e688a..01861316c3 100644 --- a/services/web/frontend/js/ide/review-panel/directives/reviewPanelSorted.js +++ b/services/web/frontend/js/ide/review-panel/directives/reviewPanelSorted.js @@ -48,7 +48,7 @@ export default App.directive('reviewPanelSorted', $timeout => ({ } const entries = [] - for (let el of Array.from(element.find('.rp-entry-wrapper'))) { + for (const el of Array.from(element.find('.rp-entry-wrapper'))) { entry = { $indicator_el: $(el).find('.rp-entry-indicator'), $box_el: $(el).find('.rp-entry'), diff --git a/services/web/frontend/js/ide/review-panel/filters/orderOverviewEntries.js b/services/web/frontend/js/ide/review-panel/filters/orderOverviewEntries.js index f8526bd54a..7ba26cdc47 100644 --- a/services/web/frontend/js/ide/review-panel/filters/orderOverviewEntries.js +++ b/services/web/frontend/js/ide/review-panel/filters/orderOverviewEntries.js @@ -12,7 +12,7 @@ export default App.filter( () => function (items) { const array = [] - for (let key in items) { + for (const key in items) { const value = items[key] value.entry_id = key array.push(value) diff --git a/services/web/frontend/js/ide/services/ide.js b/services/web/frontend/js/ide/services/ide.js index 0a8cb421d7..2a3ccd596c 100644 --- a/services/web/frontend/js/ide/services/ide.js +++ b/services/web/frontend/js/ide/services/ide.js @@ -66,7 +66,7 @@ App.factory( meta.recent_events = this.recentEvents const errorObj = {} if (typeof error === 'object') { - for (let key of Array.from(Object.getOwnPropertyNames(error))) { + for (const key of Array.from(Object.getOwnPropertyNames(error))) { errorObj[key] = error[key] } } else if (typeof error === 'string') { diff --git a/services/web/frontend/js/ide/settings/services/settings.js b/services/web/frontend/js/ide/settings/services/settings.js index e76ee76689..8b96aeb017 100644 --- a/services/web/frontend/js/ide/settings/services/settings.js +++ b/services/web/frontend/js/ide/settings/services/settings.js @@ -15,7 +15,7 @@ import App from '../../../base' export default App.factory('settings', (ide, eventTracking) => ({ saveSettings(data) { // Tracking code. - for (let key of Array.from(Object.keys(data))) { + for (const key of Array.from(Object.keys(data))) { const changedSetting = key const changedSettingVal = data[key] eventTracking.sendMB('setting-changed', { diff --git a/services/web/frontend/js/ide/share/controllers/ShareProjectModalController.js b/services/web/frontend/js/ide/share/controllers/ShareProjectModalController.js index e0681a5019..944bfcc8c1 100644 --- a/services/web/frontend/js/ide/share/controllers/ShareProjectModalController.js +++ b/services/web/frontend/js/ide/share/controllers/ShareProjectModalController.js @@ -69,7 +69,7 @@ App.controller('ShareProjectModalController', function ( function processContactsResponse(response) { const { data } = response $scope.autocompleteContacts = data.contacts || [] - for (let contact of $scope.autocompleteContacts) { + for (const contact of $scope.autocompleteContacts) { if (contact.type === 'user') { if ( contact.first_name === contact.email.split('@')[0] && @@ -103,7 +103,7 @@ App.controller('ShareProjectModalController', function ( ) { return false } - for (let text of [contact.name, contact.email]) { + for (const text of [contact.name, contact.email]) { if ( text != null && text.toLowerCase().indexOf($query.toLowerCase()) > -1 diff --git a/services/web/frontend/js/main/account-upgrade.js b/services/web/frontend/js/main/account-upgrade.js index feda5129b6..5b66dff9af 100644 --- a/services/web/frontend/js/main/account-upgrade.js +++ b/services/web/frontend/js/main/account-upgrade.js @@ -30,11 +30,10 @@ function startFreeTrial(source, version, $scope, eventTracking) { function upgradePlan(source, $scope) { const w = window.open() const go = function () { - let url if (typeof ga === 'function') { ga('send', 'event', 'subscription-funnel', 'upgraded-plan', source) } - url = '/user/subscription' + const url = '/user/subscription' if ($scope) { $scope.startedFreeTrial = true diff --git a/services/web/frontend/js/main/affiliations/controllers/UserAffiliationsController.js b/services/web/frontend/js/main/affiliations/controllers/UserAffiliationsController.js index 070d64bfe3..1666416b01 100644 --- a/services/web/frontend/js/main/affiliations/controllers/UserAffiliationsController.js +++ b/services/web/frontend/js/main/affiliations/controllers/UserAffiliationsController.js @@ -189,7 +189,7 @@ export default App.controller( _monitorRequest( UserAffiliationsDataService.setDefaultUserEmail(userEmail.email) ).then(function () { - for (let email of $scope.userEmails || []) { + for (const email of $scope.userEmails || []) { email.default = false } userEmail.default = true diff --git a/services/web/frontend/js/main/affiliations/factories/UserAffiliationsDataService.js b/services/web/frontend/js/main/affiliations/factories/UserAffiliationsDataService.js index 88a91acea0..624a41bb12 100644 --- a/services/web/frontend/js/main/affiliations/factories/UserAffiliationsDataService.js +++ b/services/web/frontend/js/main/affiliations/factories/UserAffiliationsDataService.js @@ -400,8 +400,8 @@ const commonDomains = [ 'foxmail', ] -for (let domain of commonDomains) { - for (let tld of commonTLDs) { +for (const domain of commonDomains) { + for (const tld of commonTLDs) { domainsBlackList[`${domain}.${tld}`] = true } } diff --git a/services/web/frontend/js/main/learn.js b/services/web/frontend/js/main/learn.js index 7ec9dc4651..cf66758aa1 100644 --- a/services/web/frontend/js/main/learn.js +++ b/services/web/frontend/js/main/learn.js @@ -58,7 +58,7 @@ App.controller( const lines = content.split('\n') // Only show the lines that have a highlighted match const matching_lines = [] - for (let line of Array.from(lines)) { + for (const line of Array.from(lines)) { if (!/^\[edit\]/.test(line)) { content += line + '\n' if (//.test(line)) { diff --git a/services/web/frontend/js/main/new-subscription.js b/services/web/frontend/js/main/new-subscription.js index 5b189ad798..3eff5cbc04 100644 --- a/services/web/frontend/js/main/new-subscription.js +++ b/services/web/frontend/js/main/new-subscription.js @@ -125,7 +125,7 @@ export default App.controller( $scope.monthlyBilling = pricing.items.plan.period.length === 1 $scope.availableCurrencies = {} - for (let currencyCode in pricing.items.plan.price) { + for (const currencyCode in pricing.items.plan.price) { if (MultiCurrencyPricing.plans[currencyCode]) { $scope.availableCurrencies[currencyCode] = MultiCurrencyPricing.plans[currencyCode] diff --git a/services/web/frontend/js/main/plans.js b/services/web/frontend/js/main/plans.js index d630d943a4..ec97d69b6a 100644 --- a/services/web/frontend/js/main/plans.js +++ b/services/web/frontend/js/main/plans.js @@ -244,8 +244,6 @@ App.controller( $filter, $location ) { - let switchEvent - $scope.plans = MultiCurrencyPricing.plans $scope.currencyCode = MultiCurrencyPricing.currencyCode @@ -331,7 +329,7 @@ App.controller( var eventLabel = (label, location) => label - switchEvent = function (e, label, location) { + function switchEvent(e, label, location) { e.preventDefault() const gaLabel = eventLabel(label, location) eventTracking.send('subscription-funnel', 'plans-page', gaLabel) @@ -439,7 +437,7 @@ App.controller( } $scope.recalculatePrice = function () { - let { usage, plan_code, currency, size } = $scope.selected + const { usage, plan_code, currency, size } = $scope.selected const price = $scope.prices[usage][plan_code][currency][size] const currencySymbol = $scope.options.currencySymbols[currency] $scope.displayPrice = `${currencySymbol}${price}` diff --git a/services/web/frontend/js/main/project-list/notifications-controller.js b/services/web/frontend/js/main/project-list/notifications-controller.js index bc140de963..500b712994 100644 --- a/services/web/frontend/js/main/project-list/notifications-controller.js +++ b/services/web/frontend/js/main/project-list/notifications-controller.js @@ -2,7 +2,7 @@ import App from '../../base' const ExposedSettings = window.ExposedSettings App.controller('NotificationsController', function ($scope, $http) { - for (let notification of $scope.notifications || []) { + for (const notification of $scope.notifications || []) { notification.hide = false } @@ -98,7 +98,7 @@ App.controller( } return false } - for (let userEmail of $scope.userEmails) { + for (const userEmail of $scope.userEmails) { userEmail.hide = false } diff --git a/services/web/frontend/js/main/project-list/project-list.js b/services/web/frontend/js/main/project-list/project-list.js index 9f8371f42c..8279627808 100644 --- a/services/web/frontend/js/main/project-list/project-list.js +++ b/services/web/frontend/js/main/project-list/project-list.js @@ -123,15 +123,15 @@ App.controller('ProjectPageController', function ( // Allow tags to be accessed on projects as well const projectsById = {} - for (let project of $scope.projects) { + for (const project of $scope.projects) { projectsById[project.id] = project } $scope.getProjectById = id => projectsById[id] - for (let tag of $scope.tags) { - for (let projectId of tag.project_ids || []) { - let project = projectsById[projectId] + for (const tag of $scope.tags) { + for (const projectId of tag.project_ids || []) { + const project = projectsById[projectId] if (project) { if (!project.tags) { project.tags = [] @@ -207,7 +207,7 @@ App.controller('ProjectPageController', function ( $scope.updateVisibleProjects = function () { $scope.visibleProjects = [] const selectedTag = $scope.getSelectedTag() - for (let project of $scope.projects) { + for (const project of $scope.projects) { let visible = true // Only show if it matches any search text if ($scope.searchText.value !== '') { @@ -289,7 +289,7 @@ App.controller('ProjectPageController', function ( } $scope.getSelectedTag = function () { - for (let tag of $scope.tags) { + for (const tag of $scope.tags) { if (tag.selected) { return tag } @@ -301,7 +301,7 @@ App.controller('ProjectPageController', function ( // Remove project_id from tag.project_ids const remainingProjectIds = [] const removedProjectIds = [] - for (let projectId of tag.project_ids) { + for (const projectId of tag.project_ids) { if (!removeProjectIds.includes(projectId)) { remainingProjectIds.push(projectId) } else { @@ -331,7 +331,7 @@ App.controller('ProjectPageController', function ( ) // Remove tag from project.tags - for (let project of selectedProjects) { + for (const project of selectedProjects) { if (!project.tags) { project.tags = [] } @@ -341,7 +341,7 @@ App.controller('ProjectPageController', function ( } } - for (let projectId of removedProjectIds) { + for (const projectId of removedProjectIds) { queuedHttp({ method: 'DELETE', url: `/tag/${tag._id}/project/${projectId}`, @@ -388,7 +388,7 @@ App.controller('ProjectPageController', function ( // Add project_ids into tag.project_ids const addedProjectIds = [] - for (let projectId of $scope.getSelectedProjectIds()) { + for (const projectId of $scope.getSelectedProjectIds()) { if (!tag.project_ids.includes(projectId)) { tag.project_ids.push(projectId) addedProjectIds.push(projectId) @@ -396,7 +396,7 @@ App.controller('ProjectPageController', function ( } // Add tag into each project.tags - for (let project of selectedProjects) { + for (const project of selectedProjects) { if (!project.tags) { project.tags = [] } @@ -405,7 +405,7 @@ App.controller('ProjectPageController', function ( } } - for (let projectId of addedProjectIds) { + for (const projectId of addedProjectIds) { queuedHttp.post(`/tag/${tag._id}/project/${projectId}`, { _csrf: window.csrfToken, }) @@ -484,7 +484,7 @@ App.controller('ProjectPageController', function ( .then(() => (project.name = newName)) $scope.openRenameProjectModal = function () { - let project = $scope.getFirstSelectedProject() + const project = $scope.getFirstSelectedProject() if (!project || project.accessLevel !== 'owner') { return } @@ -655,7 +655,7 @@ App.controller('ProjectPageController', function ( // $scope.archiveProjects = function (projects) { - for (let project of projects) { + for (const project of projects) { project.archived = true project.trashed = false _archiveProject(project) @@ -664,7 +664,7 @@ App.controller('ProjectPageController', function ( } $scope.unarchiveProjects = function (projects) { - for (let project of projects) { + for (const project of projects) { project.archived = false _unarchiveProject(project) } @@ -672,7 +672,7 @@ App.controller('ProjectPageController', function ( } $scope.trashProjects = function (projects) { - for (let project of projects) { + for (const project of projects) { project.trashed = true project.archived = false _trashProject(project) @@ -681,7 +681,7 @@ App.controller('ProjectPageController', function ( } $scope.untrashProjects = function (projects) { - for (let project of projects) { + for (const project of projects) { project.trashed = false _untrashProject(project) } @@ -690,7 +690,7 @@ App.controller('ProjectPageController', function ( $scope.leaveProjects = function (projects) { _deleteOrLeaveProjectsLocally(projects) - for (let project of projects) { + for (const project of projects) { _leaveProject(project) } $scope.updateVisibleProjects() @@ -698,7 +698,7 @@ App.controller('ProjectPageController', function ( $scope.deleteProjects = function (projects) { _deleteOrLeaveProjectsLocally(projects) - for (let project of projects) { + for (const project of projects) { _deleteProject(project) } $scope.updateVisibleProjects() @@ -706,7 +706,7 @@ App.controller('ProjectPageController', function ( $scope.leaveOrDeleteProjects = function (projects) { _deleteOrLeaveProjectsLocally(projects) - for (let project of projects) { + for (const project of projects) { if (project.accessLevel === 'owner') { _deleteProject(project) } else { @@ -779,10 +779,10 @@ App.controller('ProjectPageController', function ( const _deleteOrLeaveProjectsLocally = function (projects) { const projectIds = projects.map(p => p.id) - for (let tag of $scope.tags || []) { + for (const tag of $scope.tags || []) { $scope._removeProjectIdsFromTagArray(tag, projectIds) } - for (let project of projects || []) { + for (const project of projects || []) { $scope._removeProjectFromList(project) } } @@ -821,7 +821,7 @@ App.controller('ProjectPageController', function ( } const markTagAsSelected = id => { - for (let tag of $scope.tags) { + for (const tag of $scope.tags) { if (tag._id === id) { tag.selected = true } else { diff --git a/services/web/frontend/js/main/project-list/tag-controllers.js b/services/web/frontend/js/main/project-list/tag-controllers.js index 5b0adcfa5f..a2a825fcc1 100644 --- a/services/web/frontend/js/main/project-list/tag-controllers.js +++ b/services/web/frontend/js/main/project-list/tag-controllers.js @@ -54,7 +54,7 @@ App.controller('TagListController', function ($scope, $modal) { }) modalInstance.result.then(function () { // Remove tag from projects - for (let project of $scope.projects) { + for (const project of $scope.projects) { if (!project.tags) { project.tags = [] } @@ -87,7 +87,7 @@ App.controller('TagDropdownItemController', function ($scope) { $scope.recalculateProjectsInTag = function () { let partialSelection $scope.areSelectedProjectsInTag = false - for (let projectId of $scope.getSelectedProjectIds()) { + for (const projectId of $scope.getSelectedProjectIds()) { if ($scope.tag.project_ids.includes(projectId)) { $scope.areSelectedProjectsInTag = true } else { diff --git a/services/web/frontend/js/main/token-access.js b/services/web/frontend/js/main/token-access.js index 6ba0988ff5..0d9cd9a343 100644 --- a/services/web/frontend/js/main/token-access.js +++ b/services/web/frontend/js/main/token-access.js @@ -30,7 +30,7 @@ App.controller( $scope.post = () => { $scope.mode = 'accessAttempt' const textData = $('#overleaf-token-access-data').text() - let parsedData = JSON.parse(textData) + const parsedData = JSON.parse(textData) const { postUrl, csrfToken } = parsedData $scope.accessInFlight = true diff --git a/services/web/frontend/js/main/translations.js b/services/web/frontend/js/main/translations.js index 837625ce17..d790f890d0 100644 --- a/services/web/frontend/js/main/translations.js +++ b/services/web/frontend/js/main/translations.js @@ -4,11 +4,11 @@ App.controller( 'TranslationsPopupController', function ($scope, ipCookie, localStorage) { function getStoredDismissal() { - let localStore = localStorage('hide-i18n-notification') + const localStore = localStorage('hide-i18n-notification') if (localStore === null) { // Not stored in localStorage, check cookie - let cookieStore = ipCookie('hidei18nNotification') + const cookieStore = ipCookie('hidei18nNotification') // If stored in cookie, set on localStorage for forwards compat if (cookieStore) { diff --git a/services/web/frontend/js/main/user-membership.js b/services/web/frontend/js/main/user-membership.js index 2f9d5c46c0..ff521f4e13 100644 --- a/services/web/frontend/js/main/user-membership.js +++ b/services/web/frontend/js/main/user-membership.js @@ -73,7 +73,7 @@ App.controller('UserMembershipController', function ($scope, queuedHttp) { $scope.removeMembers = function () { $scope.inputs.removeMembers.error = false $scope.inputs.removeMembers.errorMessage = null - for (let user of Array.from($scope.selectedUsers)) { + for (const user of Array.from($scope.selectedUsers)) { ;(function (user) { let url if (window.paths.removeInvite && user.invite && user._id == null) { diff --git a/services/web/frontend/js/services/validateCaptcha.js b/services/web/frontend/js/services/validateCaptcha.js index cb9eff84a1..1d8a01b084 100644 --- a/services/web/frontend/js/services/validateCaptcha.js +++ b/services/web/frontend/js/services/validateCaptcha.js @@ -14,7 +14,7 @@ import App from '../base' export default App.factory('validateCaptcha', function () { let _recaptchaCallbacks = [] const onRecaptchaSubmit = function (token) { - for (let cb of _recaptchaCallbacks) { + for (const cb of _recaptchaCallbacks) { cb(token) } _recaptchaCallbacks = [] diff --git a/services/web/frontend/js/utils/EventEmitter.js b/services/web/frontend/js/utils/EventEmitter.js index e372979bfd..f2ddd5d81e 100644 --- a/services/web/frontend/js/utils/EventEmitter.js +++ b/services/web/frontend/js/utils/EventEmitter.js @@ -51,7 +51,7 @@ export default EventEmitter = class EventEmitter { } else { // Clear only namespaced listeners const remaining_events = [] - for (let callback of Array.from(this.events[event] || [])) { + for (const callback of Array.from(this.events[event] || [])) { if (callback.namespace !== namespace) { remaining_events.push(callback) } diff --git a/services/web/scripts/refresh_features.js b/services/web/scripts/refresh_features.js index 73f9f330a7..e36bff0b26 100644 --- a/services/web/scripts/refresh_features.js +++ b/services/web/scripts/refresh_features.js @@ -22,7 +22,7 @@ const ScriptLogger = { ScriptLogger.mismatchUsersCount += 1 if (user.lastLoggedIn) { - let daysSinceLastLoggedIn = + const daysSinceLastLoggedIn = (new Date() - user.lastLoggedIn) / 1000 / 3600 / 24 ScriptLogger.allDaysSinceLastLoggedIn.push(daysSinceLastLoggedIn) } @@ -59,7 +59,7 @@ const checkAndUpdateUser = (user, callback) => return callback(error) } - let mismatchReasons = FeaturesUpdater.compareFeatures( + const mismatchReasons = FeaturesUpdater.compareFeatures( user.features, freshFeatures ) diff --git a/services/web/test/acceptance/src/FeatureUpdaterTests.js b/services/web/test/acceptance/src/FeatureUpdaterTests.js index 21e4201b10..251e5cc515 100644 --- a/services/web/test/acceptance/src/FeatureUpdaterTests.js +++ b/services/web/test/acceptance/src/FeatureUpdaterTests.js @@ -370,7 +370,7 @@ describe('FeatureUpdater.refreshFeatures', function () { if (error) { throw error } - let expectedFeatures = Object.assign(settings.defaultFeatures, { + const expectedFeatures = Object.assign(settings.defaultFeatures, { github: true, trackChanges: true, }) diff --git a/services/web/test/acceptance/src/LinkedFilesTests.js b/services/web/test/acceptance/src/LinkedFilesTests.js index 712e7602d5..98569f0d3e 100644 --- a/services/web/test/acceptance/src/LinkedFilesTests.js +++ b/services/web/test/acceptance/src/LinkedFilesTests.js @@ -21,7 +21,7 @@ LinkedUrlProxy.get('/', (req, res, next) => { describe('LinkedFiles', function () { let projectOne, projectOneId, projectOneRootFolderId let projectTwo, projectTwoId, projectTwoRootFolderId - let sourceDocName = 'test.txt' + const sourceDocName = 'test.txt' let owner before(function (done) { diff --git a/services/web/test/acceptance/src/ProjectStructureTests.js b/services/web/test/acceptance/src/ProjectStructureTests.js index 9cfc7f8c21..2321a8042d 100644 --- a/services/web/test/acceptance/src/ProjectStructureTests.js +++ b/services/web/test/acceptance/src/ProjectStructureTests.js @@ -769,7 +769,7 @@ describe('ProjectStructureChanges', function () { exampleProjectId ) expect(updates.length).to.equal(1) - let update = updates[0] + const update = updates[0] expect(update.type).to.equal('rename-doc') expect(update.userId).to.equal(owner._id) expect(update.pathname).to.equal('/foo/new.tex') diff --git a/services/web/test/acceptance/src/RecurlySubscriptionUpdateTests.js b/services/web/test/acceptance/src/RecurlySubscriptionUpdateTests.js index c0c44640a2..01206aa035 100644 --- a/services/web/test/acceptance/src/RecurlySubscriptionUpdateTests.js +++ b/services/web/test/acceptance/src/RecurlySubscriptionUpdateTests.js @@ -26,7 +26,7 @@ describe('Subscriptions', function () { }) it('updates the email address for the account', function (done) { - let url = '/user/subscription/account/email' + const url = '/user/subscription/account/email' this.recurlyUser.request.post({ url }, (error, { statusCode }) => { if (error) { diff --git a/services/web/test/acceptance/src/SubscriptionDeletionTests.js b/services/web/test/acceptance/src/SubscriptionDeletionTests.js index 48ec5d0e04..2c485167b5 100644 --- a/services/web/test/acceptance/src/SubscriptionDeletionTests.js +++ b/services/web/test/acceptance/src/SubscriptionDeletionTests.js @@ -34,8 +34,8 @@ describe('Subscriptions', function () { }) it('deletes via Recurly callback', function (done) { - let url = '/user/subscription/callback' - let body = this.recurlySubscription.buildCallbackXml() + const url = '/user/subscription/callback' + const body = this.recurlySubscription.buildCallbackXml() request.post({ url, body }, (error, { statusCode }) => { if (error) { @@ -47,8 +47,8 @@ describe('Subscriptions', function () { }) it('refresh features', function (done) { - let url = '/user/subscription/callback' - let body = this.recurlySubscription.buildCallbackXml() + const url = '/user/subscription/callback' + const body = this.recurlySubscription.buildCallbackXml() request.post({ url, body }, (error, { statusCode }) => { if (error) { @@ -62,8 +62,8 @@ describe('Subscriptions', function () { }) it('allows deletion when deletedSubscription exists', function (done) { - let url = '/user/subscription/callback' - let body = this.recurlySubscription.buildCallbackXml() + const url = '/user/subscription/callback' + const body = this.recurlySubscription.buildCallbackXml() // create fake deletedSubscription SubscriptionUpdater._createDeletedSubscription( diff --git a/services/web/test/acceptance/src/TagsTests.js b/services/web/test/acceptance/src/TagsTests.js index 5ef01aee31..3a93cae926 100644 --- a/services/web/test/acceptance/src/TagsTests.js +++ b/services/web/test/acceptance/src/TagsTests.js @@ -103,7 +103,7 @@ describe('Tags', function () { expect(err).to.not.exist // Check structure of tags we just created expect(tags.length).to.equal(3) - for (let tag of tags) { + for (const tag of tags) { _expectTagStructure(tag) expect(tag.user_id).to.equal(this.user._id.toString()) } @@ -113,7 +113,7 @@ describe('Tags', function () { expect(body).to.be.an.instanceof(Array) expect(body.length).to.equal(3) // Check structure of each tag in response - for (let tag of body) { + for (const tag of body) { _expectTagStructure(tag) expect(tag.user_id).to.equal(this.user._id.toString()) } diff --git a/services/web/test/acceptance/src/TpdsUpdateTests.js b/services/web/test/acceptance/src/TpdsUpdateTests.js index 29ab490510..aa1b7aa4ce 100644 --- a/services/web/test/acceptance/src/TpdsUpdateTests.js +++ b/services/web/test/acceptance/src/TpdsUpdateTests.js @@ -101,7 +101,7 @@ describe('TpdsUpdateTests', function () { throw error } const projectFolder = project.rootFolder[0] - for (let doc of Array.from(projectFolder.docs)) { + for (const doc of Array.from(projectFolder.docs)) { if (doc.name === 'main.tex') { throw new Error('expected main.tex to have been deleted') } diff --git a/services/web/test/acceptance/src/helpers/User.js b/services/web/test/acceptance/src/helpers/User.js index 95ecd0a315..fa0f4283a4 100644 --- a/services/web/test/acceptance/src/helpers/User.js +++ b/services/web/test/acceptance/src/helpers/User.js @@ -154,7 +154,7 @@ class User { setFeatures(features, callback) { const update = {} - for (let key in features) { + for (const key in features) { const value = features[key] update[`features.${key}`] = value } diff --git a/services/web/test/acceptance/src/helpers/UserHelper.js b/services/web/test/acceptance/src/helpers/UserHelper.js index efc763b200..9e2c4e5baf 100644 --- a/services/web/test/acceptance/src/helpers/UserHelper.js +++ b/services/web/test/acceptance/src/helpers/UserHelper.js @@ -309,7 +309,7 @@ class UserHelper { } async addEmail(email) { - let response = await this.request.post({ + const response = await this.request.post({ form: { email, }, diff --git a/services/web/test/acceptance/src/mocks/MockRecurlyApi.js b/services/web/test/acceptance/src/mocks/MockRecurlyApi.js index 1510d11c36..38909c9a29 100644 --- a/services/web/test/acceptance/src/mocks/MockRecurlyApi.js +++ b/services/web/test/acceptance/src/mocks/MockRecurlyApi.js @@ -98,7 +98,7 @@ class MockRecurlyApi extends AbstractMockApi { this.app.get('/accounts/:id/redemptions', (req, res) => { const redemptions = this.redemptions[req.params.id] || [] let redemptionsListXml = '' - for (let redemption of Array.from(redemptions)) { + for (const redemption of Array.from(redemptions)) { redemptionsListXml += `\ ${redemption.state} diff --git a/services/web/test/acceptance/src/mocks/MockV1Api.js b/services/web/test/acceptance/src/mocks/MockV1Api.js index fda0e167d4..3c96431d7e 100644 --- a/services/web/test/acceptance/src/mocks/MockV1Api.js +++ b/services/web/test/acceptance/src/mocks/MockV1Api.js @@ -90,7 +90,7 @@ class MockV1Api extends AbstractMockApi { } addAffiliation(userId, email) { - let institution = {} + const institution = {} if (!email) return if (!this.affiliations[userId]) this.affiliations[userId] = [] @@ -272,7 +272,7 @@ class MockV1Api extends AbstractMockApi { }) this.app.post('/api/v1/sharelatex/login', (req, res) => { - for (let id in this.users) { + for (const id in this.users) { const user = this.users[id] if ( user && diff --git a/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.js b/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.js index a7c4b4fa5d..33a3383796 100644 --- a/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.js +++ b/services/web/test/frontend/features/share-project-modal/components/share-project-modal.test.js @@ -736,7 +736,7 @@ describe('', function () { it('handles switching between access levels', async function () { fetchMock.post('express:/project/:projectId/settings/admin', 204) - let watchCallbacks = {} + const watchCallbacks = {} const ideWithProject = project => { return { diff --git a/services/web/test/karma/ide/history/HistoryV2ManagerTests.js b/services/web/test/karma/ide/history/HistoryV2ManagerTests.js index 68eeceb401..bf5a595bac 100644 --- a/services/web/test/karma/ide/history/HistoryV2ManagerTests.js +++ b/services/web/test/karma/ide/history/HistoryV2ManagerTests.js @@ -172,9 +172,13 @@ export default describe('HistoryV2Manager', function () { }) it('should keep history updates after performing a soft reset', function () { - let historyScopeWithUpdates = Object.assign({}, this.defaultHistoryScope, { - updates: this.sampleUpdates, - }) + const historyScopeWithUpdates = Object.assign( + {}, + this.defaultHistoryScope, + { + updates: this.sampleUpdates, + } + ) this.$scope.history.updates = this.sampleUpdates this.historyManager.softReset() expect(this.$scope.history).to.deep.equal(historyScopeWithUpdates) diff --git a/services/web/test/unit/src/Collaborators/CollaboratorsHandlerTests.js b/services/web/test/unit/src/Collaborators/CollaboratorsHandlerTests.js index a5e345e2dc..89bc37cd37 100644 --- a/services/web/test/unit/src/Collaborators/CollaboratorsHandlerTests.js +++ b/services/web/test/unit/src/Collaborators/CollaboratorsHandlerTests.js @@ -116,7 +116,7 @@ describe('CollaboratorsHandler', function () { describe('an archived project, archived with a boolean value', function () { beforeEach(function () { - let archived = [ObjectId(this.userId)] + const archived = [ObjectId(this.userId)] this.ProjectHelper.calculateArchivedArray.returns(archived) this.ProjectMock.expects('findOne') diff --git a/services/web/test/unit/src/Collaborators/CollaboratorsInviteHandlerTests.js b/services/web/test/unit/src/Collaborators/CollaboratorsInviteHandlerTests.js index 506d8be571..efce33ddc8 100644 --- a/services/web/test/unit/src/Collaborators/CollaboratorsInviteHandlerTests.js +++ b/services/web/test/unit/src/Collaborators/CollaboratorsInviteHandlerTests.js @@ -41,7 +41,7 @@ describe('CollaboratorsInviteHandler', function () { options = {} } this._id = ObjectId() - for (let k in options) { + for (const k in options) { const v = options[k] this[k] = v } diff --git a/services/web/test/unit/src/Downloads/ProjectZipStreamManagerTests.js b/services/web/test/unit/src/Downloads/ProjectZipStreamManagerTests.js index 98c71e1754..99a6e654d4 100644 --- a/services/web/test/unit/src/Downloads/ProjectZipStreamManagerTests.js +++ b/services/web/test/unit/src/Downloads/ProjectZipStreamManagerTests.js @@ -317,7 +317,7 @@ describe('ProjectZipStreamManager', function () { ) return (() => { const result = [] - for (let path in this.streams) { + for (const path in this.streams) { const stream = this.streams[path] result.push(stream.emit('end')) } @@ -334,7 +334,7 @@ describe('ProjectZipStreamManager', function () { it('should get a stream for each file', function () { return (() => { const result = [] - for (let path in this.files) { + for (const path in this.files) { const file = this.files[path] result.push( this.FileStoreHandler.getFileStream diff --git a/services/web/test/unit/src/Email/EmailBuilderTests.js b/services/web/test/unit/src/Email/EmailBuilderTests.js index e0f7e8863b..c30470be7a 100644 --- a/services/web/test/unit/src/Email/EmailBuilderTests.js +++ b/services/web/test/unit/src/Email/EmailBuilderTests.js @@ -114,25 +114,25 @@ describe('EmailBuilder', function () { gmailGoToAction: () => {}, } it('should throw an error when missing title', function () { - let { title, ...missing } = content + const { title, ...missing } = content expect(() => { this.EmailBuilder.ctaTemplate(missing) }).to.throw(Error) }) it('should throw an error when missing message', function () { - let { message, ...missing } = content + const { message, ...missing } = content expect(() => { this.EmailBuilder.ctaTemplate(missing) }).to.throw(Error) }) it('should throw an error when missing ctaText', function () { - let { ctaText, ...missing } = content + const { ctaText, ...missing } = content expect(() => { this.EmailBuilder.ctaTemplate(missing) }).to.throw(Error) }) it('should throw an error when missing ctaURL', function () { - let { ctaURL, ...missing } = content + const { ctaURL, ...missing } = content expect(() => { this.EmailBuilder.ctaTemplate(missing) }).to.throw(Error) diff --git a/services/web/test/unit/src/Project/ProjectDeleterTests.js b/services/web/test/unit/src/Project/ProjectDeleterTests.js index 624c323467..9c2cbf7373 100644 --- a/services/web/test/unit/src/Project/ProjectDeleterTests.js +++ b/services/web/test/unit/src/Project/ProjectDeleterTests.js @@ -463,7 +463,7 @@ describe('ProjectDeleter', function () { describe('archiveProject', function () { beforeEach(function () { - let archived = [ObjectId(this.user._id)] + const archived = [ObjectId(this.user._id)] this.ProjectHelper.calculateArchivedArray.returns(archived) this.ProjectMock.expects('findOne') @@ -505,7 +505,7 @@ describe('ProjectDeleter', function () { describe('unarchiveProject', function () { beforeEach(function () { - let archived = [ObjectId(this.user._id)] + const archived = [ObjectId(this.user._id)] this.ProjectHelper.calculateArchivedArray.returns(archived) this.ProjectMock.expects('findOne') @@ -541,7 +541,7 @@ describe('ProjectDeleter', function () { describe('trashProject', function () { beforeEach(function () { - let archived = [ObjectId(this.user._id)] + const archived = [ObjectId(this.user._id)] this.ProjectHelper.calculateArchivedArray.returns(archived) this.ProjectMock.expects('findOne') diff --git a/services/web/test/unit/src/Project/ProjectEditorHandlerTests.js b/services/web/test/unit/src/Project/ProjectEditorHandlerTests.js index 494e4ed4f9..ade0c59a6b 100644 --- a/services/web/test/unit/src/Project/ProjectEditorHandlerTests.js +++ b/services/web/test/unit/src/Project/ProjectEditorHandlerTests.js @@ -171,7 +171,7 @@ describe('ProjectEditorHandler', function () { it('should gather readOnly_refs and collaberators_refs into a list of members', function () { const findMember = id => { - for (let member of Array.from(this.result.members)) { + for (const member of Array.from(this.result.members)) { if (member._id === id) { return member } diff --git a/services/web/test/unit/src/Subscription/SubscriptionUpdaterTests.js b/services/web/test/unit/src/Subscription/SubscriptionUpdaterTests.js index 182313a4b1..f99d76d0d4 100644 --- a/services/web/test/unit/src/Subscription/SubscriptionUpdaterTests.js +++ b/services/web/test/unit/src/Subscription/SubscriptionUpdaterTests.js @@ -41,7 +41,7 @@ describe('SubscriptionUpdater', function () { .stub() .callsArgWith(2, null, this.subscription) - let subscription = this.subscription + const subscription = this.subscription this.SubscriptionModel = class { constructor(opts) { // Always return our mock subscription when creating a new one diff --git a/services/web/test/unit/src/helpers/MockModel.js b/services/web/test/unit/src/helpers/MockModel.js index a8d0f8110c..3a34b8cfff 100644 --- a/services/web/test/unit/src/helpers/MockModel.js +++ b/services/web/test/unit/src/helpers/MockModel.js @@ -15,7 +15,7 @@ const mongoose = require('mongoose') */ module.exports = (modelName, requires = {}) => { - let model = {} + const model = {} requires['../infrastructure/Mongoose'] = { createConnection: () => {