From a8e47da9e98f3c461893233603296253ea18b77e Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Tue, 26 Jan 2021 11:04:33 +0000 Subject: [PATCH 1/2] Revert "Merge pull request #205 from overleaf/revert-200-bg-decaff-cleanup" This reverts commit 76d8d3181b9464d1e1bbc713a2729ca269d9c047, reversing changes made to 31a8dc3a98d73c2707d633712f0ef7207013e78b. --- services/clsi/app/js/ResourceStateManager.js | 85 +++++--------------- 1 file changed, 21 insertions(+), 64 deletions(-) diff --git a/services/clsi/app/js/ResourceStateManager.js b/services/clsi/app/js/ResourceStateManager.js index 07cc78571e..c77c254b05 100644 --- a/services/clsi/app/js/ResourceStateManager.js +++ b/services/clsi/app/js/ResourceStateManager.js @@ -1,27 +1,10 @@ -/* eslint-disable - handle-callback-err, - no-unused-vars, -*/ -// TODO: This file was created by bulk-decaffeinate. -// Fix any style issues and re-enable lint. -/* - * decaffeinate suggestions: - * DS101: Remove unnecessary use of Array.from - * DS102: Remove unnecessary code created because of implicit returns - * DS103: Rewrite code to no longer use __guard__ - * DS201: Simplify complex destructure assignments - * DS207: Consider shorter variations of null checks - * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md - */ -let ResourceStateManager const Path = require('path') const fs = require('fs') const logger = require('logger-sharelatex') -const settings = require('settings-sharelatex') const Errors = require('./Errors') const SafeReader = require('./SafeReader') -module.exports = ResourceStateManager = { +module.exports = { // The sync state is an identifier which must match for an // incremental update to be allowed. // @@ -40,15 +23,12 @@ module.exports = ResourceStateManager = { SYNC_STATE_MAX_SIZE: 128 * 1024, saveProjectState(state, resources, basePath, callback) { - if (callback == null) { - callback = function (error) {} - } const stateFile = Path.join(basePath, this.SYNC_STATE_FILE) if (state == null) { // remove the file if no state passed in logger.log({ state, basePath }, 'clearing sync state') - return fs.unlink(stateFile, function (err) { - if (err != null && err.code !== 'ENOENT') { + fs.unlink(stateFile, function (err) { + if (err && err.code !== 'ENOENT') { return callback(err) } else { return callback() @@ -56,29 +36,24 @@ module.exports = ResourceStateManager = { }) } else { logger.log({ state, basePath }, 'writing sync state') - const resourceList = Array.from(resources).map( - (resource) => resource.path - ) - return fs.writeFile( + const resourceList = resources.map((resource) => resource.path) + fs.writeFile( stateFile, - [...Array.from(resourceList), `stateHash:${state}`].join('\n'), + [...resourceList, `stateHash:${state}`].join('\n'), callback ) } }, checkProjectStateMatches(state, basePath, callback) { - if (callback == null) { - callback = function (error, resources) {} - } const stateFile = Path.join(basePath, this.SYNC_STATE_FILE) const size = this.SYNC_STATE_MAX_SIZE - return SafeReader.readFile(stateFile, size, 'utf8', function ( + SafeReader.readFile(stateFile, size, 'utf8', function ( err, result, bytesRead ) { - if (err != null) { + if (err) { return callback(err) } if (bytesRead === size) { @@ -87,10 +62,7 @@ module.exports = ResourceStateManager = { 'project state file truncated' ) } - const array = - __guard__(result != null ? result.toString() : undefined, (x) => - x.split('\n') - ) || [] + const array = result.toString().split('\n') const adjustedLength = Math.max(array.length, 1) const resourceList = array.slice(0, adjustedLength - 1) const oldState = array[adjustedLength - 1] @@ -104,36 +76,27 @@ module.exports = ResourceStateManager = { new Errors.FilesOutOfSyncError('invalid state for incremental update') ) } else { - const resources = Array.from(resourceList).map((path) => ({ path })) - return callback(null, resources) + const resources = resourceList.map((path) => ({ path })) + callback(null, resources) } }) }, checkResourceFiles(resources, allFiles, basePath, callback) { // check the paths are all relative to current directory - let file - if (callback == null) { - callback = function (error) {} + const containsRelativePath = (resource) => { + const dirs = resource.path.split('/') + return dirs.indexOf('..') !== -1 } - for (file of Array.from(resources || [])) { - for (const dir of Array.from( - __guard__(file != null ? file.path : undefined, (x) => x.split('/')) - )) { - if (dir === '..') { - return callback(new Error('relative path in resource file list')) - } - } + if (resources.some(containsRelativePath)) { + return callback(new Error('relative path in resource file list')) } // check if any of the input files are not present in list of files - const seenFile = {} - for (file of Array.from(allFiles)) { - seenFile[file] = true - } - const missingFiles = Array.from(resources) - .filter((resource) => !seenFile[resource.path]) + const seenFiles = new Set(allFiles) + const missingFiles = resources .map((resource) => resource.path) - if ((missingFiles != null ? missingFiles.length : undefined) > 0) { + .filter((path) => !seenFiles.has(path)) + if (missingFiles.length > 0) { logger.err( { missingFiles, basePath, allFiles, resources }, 'missing input files for project' @@ -144,13 +107,7 @@ module.exports = ResourceStateManager = { ) ) } else { - return callback() + callback() } } } - -function __guard__(value, transform) { - return typeof value !== 'undefined' && value !== null - ? transform(value) - : undefined -} From 865e68051e46a54abc1ae8a6cf82f86176417bf8 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Tue, 26 Jan 2021 13:59:28 +0000 Subject: [PATCH 2/2] include fallback for missing state file --- services/clsi/app/js/ResourceStateManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/clsi/app/js/ResourceStateManager.js b/services/clsi/app/js/ResourceStateManager.js index c77c254b05..e36f19ed67 100644 --- a/services/clsi/app/js/ResourceStateManager.js +++ b/services/clsi/app/js/ResourceStateManager.js @@ -62,7 +62,7 @@ module.exports = { 'project state file truncated' ) } - const array = result.toString().split('\n') + const array = result ? result.toString().split('\n') : [] const adjustedLength = Math.max(array.length, 1) const resourceList = array.slice(0, adjustedLength - 1) const oldState = array[adjustedLength - 1]