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: () => {