[web] Convert some Features files to ES modules (part 2) (#28275)

* Rename files

* Rename test files

* Convert to ESM

GitOrigin-RevId: b0ee442ac8edd4ef3695f93a91ffd9521e6bf259
This commit is contained in:
Antoine Clausse
2025-09-16 08:04:59 +00:00
committed by Copybot
parent a2c0b66115
commit 723954ccc2
29 changed files with 1006 additions and 931 deletions
@@ -0,0 +1,45 @@
import { callbackify } from 'node:util'
import Path from 'node:path'
import ProjectEntityHandler from './ProjectEntityHandler.js'
import EditorController from '../Editor/EditorController.js'
// generate a new name based on the original, with an optional label.
// e.g. origname-20210101-122345.tex (default)
// origname-restored-20210101-122345.tex (label="restored")
function generateRestoredName(docName, label) {
const formattedTimestamp = new Date()
.toISOString()
.replace('T', '-')
.replace(/[^0-9-]/g, '')
const extension = Path.extname(docName)
const basename =
Path.basename(docName, extension) + (label ? `-${label}` : '')
return `${basename}-${formattedTimestamp}${extension}`
}
async function restoreDeletedDoc(projectId, docId, docName, userId) {
const deletedDoc = await ProjectEntityHandler.promises.getDoc(
projectId,
docId,
{ include_deleted: true }
)
const deletedDocName = generateRestoredName(docName)
// Create the doc and emit a websocket message.
return await EditorController.promises.addDocWithRanges(
projectId,
null,
`${deletedDocName}`,
deletedDoc.lines,
deletedDoc.ranges,
null,
userId
)
}
export default {
restoreDeletedDoc: callbackify(restoreDeletedDoc),
generateRestoredName,
promises: {
restoreDeletedDoc,
},
}