Explorar el Código

Convert to ES modules

GitOrigin-RevId: ec8d55634306caa6a013daa4dc0ce0a3ffbcc3f0
Andrew Rumble hace 1 año
padre
commit
7de4133d08

+ 11 - 10
services/web/modules/server-ce-scripts/scripts/export-legacy-user-projects.mjs

@@ -1,18 +1,19 @@
-const minimist = require('minimist')
-const {
+/* eslint-disable @overleaf/require-script-runner */
+import minimist from 'minimist'
+import {
   mkdirSync,
   createWriteStream,
   existsSync,
   unlinkSync,
   renameSync,
-} = require('fs')
-const mongodb = require('../app/src/infrastructure/mongodb')
-const DocumentUpdaterHandler = require('../app/src/Features/DocumentUpdater/DocumentUpdaterHandler.js')
-const ProjectZipStreamManager = require('../app/src/Features/Downloads/ProjectZipStreamManager.js')
-const logger = require('logger-sharelatex')
-const { Project } = require('../app/src/models/Project.js')
-const { User } = require('../app/src/models/User.js')
-const readline = require('readline')
+} from 'fs'
+import mongodb from '../../../app/src/infrastructure/mongodb.js'
+import DocumentUpdaterHandler from '../../../app/src/Features/DocumentUpdater/DocumentUpdaterHandler.js'
+import ProjectZipStreamManager from '../../../app/src/Features/Downloads/ProjectZipStreamManager.js'
+import logger from 'logger-sharelatex'
+import { Project } from '../../../app/src/models/Project.js'
+import { User } from '../../../app/src/models/User.js'
+import readline from 'readline'
 
 function parseArgs() {
   return minimist(process.argv.slice(2), {

+ 14 - 11
services/web/scripts/check_project_files.mjs

@@ -1,19 +1,22 @@
-const Path = require('path')
-const DocstoreManager = require('../app/src/Features/Docstore/DocstoreManager')
-const DocumentUpdaterHandler = require('../app/src/Features/DocumentUpdater/DocumentUpdaterHandler')
-const ProjectGetter = require('../app/src/Features/Project/ProjectGetter')
-const ProjectEntityMongoUpdateHandler = require('../app/src/Features/Project/ProjectEntityMongoUpdateHandler')
-const { waitForDb, db, ObjectId } = require('../app/src/infrastructure/mongodb')
-const HistoryManager = require('../app/src/Features/History/HistoryManager')
-const logger = require('@overleaf/logger').logger
+import { scriptRunner } from './lib/ScriptRunner.mjs'
+import Path from 'node:path'
+import DocstoreManager from '../app/src/Features/Docstore/DocstoreManager.js'
+import DocumentUpdaterHandler from '../app/src/Features/DocumentUpdater/DocumentUpdaterHandler.js'
+import ProjectGetter from '../app/src/Features/Project/ProjectGetter.js'
+import ProjectEntityMongoUpdateHandler from '../app/src/Features/Project/ProjectEntityMongoUpdateHandler.js'
+import { waitForDb, db, ObjectId } from '../app/src/infrastructure/mongodb.js'
+import HistoryManager from '../app/src/Features/History/HistoryManager.js'
+import logger from '@overleaf/logger'
+import minimist from 'minimist'
 
-const args = require('minimist')(process.argv.slice(2), {
+const args = minimist(process.argv.slice(2), {
   boolean: ['verbose', 'fix'],
 })
+
 const verbose = args.verbose
 
 if (!verbose) {
-  logger.level('error')
+  logger.logger.level('error')
 }
 
 // no remaining arguments, print usage
@@ -254,7 +257,7 @@ async function main() {
   }
 }
 
-main()
+scriptRunner(main, args)
   .then(() => {
     console.log('DONE')
     process.exit(0)

+ 8 - 7
services/web/scripts/extract_day1_churn_users.mjs

@@ -1,7 +1,8 @@
-const csv = require('csv')
-const fs = require('fs')
-const minimist = require('minimist')
-const { User } = require('../app/src/models/User')
+import { scriptRunner } from './lib/ScriptRunner.mjs'
+import * as csv from 'csv'
+import fs from 'node:fs'
+import minimist from 'minimist'
+import { User } from '../app/src/models/User.js'
 
 /**
  * This script extracts users who churned after day 1 - ie. their last session was within 24 hours of registering
@@ -205,9 +206,9 @@ async function getDay1ChurnUsers({
   return allChurnUsers
 }
 
-async function runScript() {
-  const args = parseArgs()
+const args = parseArgs()
 
+async function runScript() {
   console.log(
     `Starting Day 1 churn extraction with lookback period: ${args.lookbackMonths} months`
   )
@@ -268,7 +269,7 @@ async function runScript() {
   )
 }
 
-runScript().catch(err => {
+scriptRunner(runScript, args).catch(err => {
   console.error('Script failed:', err)
   process.exit(1)
 })

+ 5 - 6
services/web/scripts/extract_onboardingdatacollection_csv.mjs

@@ -1,8 +1,7 @@
-const csv = require('csv')
-const fs = require('fs')
-const {
-  OnboardingDataCollection,
-} = require('../app/src/models/OnboardingDataCollection')
+import { scriptRunner } from './lib/ScriptRunner.mjs'
+import * as csv from 'csv'
+import fs from 'node:fs'
+import { OnboardingDataCollection } from '../app/src/models/OnboardingDataCollection.js'
 
 /**
  * This script extracts the OnboardingDataCollection collection from the database
@@ -90,7 +89,7 @@ const runScript = async () => {
   csvWriter.on('error', err => console.error('CSV Writer Error:', err))
 }
 
-runScript().catch(err => {
+scriptRunner(runScript).catch(err => {
   console.error(err)
   process.exit(1)
 })

+ 11 - 13
services/web/scripts/extract_onboardingdatacollection_never_used_latex.mjs

@@ -1,13 +1,12 @@
-const csv = require('csv')
-const fs = require('fs')
-const minimist = require('minimist')
-const {
-  OnboardingDataCollection,
-} = require('../app/src/models/OnboardingDataCollection')
-const { User } = require('../app/src/models/User')
-const SubscriptionLocator = require('../app/src/Features/Subscription/SubscriptionLocator')
-const Settings = require('@overleaf/settings')
-const { fetchJson } = require('@overleaf/fetch-utils')
+import { scriptRunner } from './lib/ScriptRunner.mjs'
+import * as csv from 'csv'
+import fs from 'node:fs'
+import minimist from 'minimist'
+import { OnboardingDataCollection } from '../app/src/models/OnboardingDataCollection.js'
+import { User } from '../app/src/models/User.js'
+import SubscriptionLocator from '../app/src/Features/Subscription/SubscriptionLocator.js'
+import Settings from '@overleaf/settings'
+import { fetchJson } from '@overleaf/fetch-utils'
 
 /**
  * This script extracts ODC data with some extra fields, and filters on registration date and LaTeX experience
@@ -146,12 +145,11 @@ async function getUserCountries(institutions) {
   }
   return countryCodes
 }
+const args = parseArgs()
 
 async function runScript() {
   const columns = ['email']
 
-  const args = parseArgs()
-
   if (args.includeSignUpDate) {
     columns.push('signUpDate')
   }
@@ -196,7 +194,7 @@ async function runScript() {
   )
 }
 
-runScript().catch(err => {
+scriptRunner(runScript, args).catch(err => {
   console.error(err)
   process.exit(1)
 })

+ 16 - 11
services/web/scripts/lezer-latex/generate.mjs

@@ -1,33 +1,35 @@
-const { buildParserFile } = require('@lezer/generator')
-const { writeFileSync, readFileSync } = require('fs')
-const path = require('path')
+/* eslint-disable @overleaf/require-script-runner */
+// This script doesn't work with ScriptRunner because it is run during the build process.
+import { buildParserFile } from '@lezer/generator'
+import { writeFileSync, readFileSync } from 'node:fs'
+import path from 'node:path'
 
 const grammars = [
   {
     grammarPath: path.resolve(
-      __dirname,
+      import.meta.dirname,
       '../../frontend/js/features/source-editor/lezer-latex/latex.grammar'
     ),
     parserOutputPath: path.resolve(
-      __dirname,
+      import.meta.dirname,
       '../../frontend/js/features/source-editor/lezer-latex/latex.mjs'
     ),
     termsOutputPath: path.resolve(
-      __dirname,
+      import.meta.dirname,
       '../../frontend/js/features/source-editor/lezer-latex/latex.terms.mjs'
     ),
   },
   {
     grammarPath: path.resolve(
-      __dirname,
+      import.meta.dirname,
       '../../frontend/js/features/source-editor/lezer-bibtex/bibtex.grammar'
     ),
     parserOutputPath: path.resolve(
-      __dirname,
+      import.meta.dirname,
       '../../frontend/js/features/source-editor/lezer-bibtex/bibtex.mjs'
     ),
     termsOutputPath: path.resolve(
-      __dirname,
+      import.meta.dirname,
       '../../frontend/js/features/source-editor/lezer-bibtex/bibtex.terms.mjs'
     ),
   },
@@ -56,9 +58,12 @@ function compile(grammar) {
   console.info('Done!')
 }
 
-module.exports = { compile, grammars }
+export default { compile, grammars }
 
-if (require.main === module) {
+if (
+  import.meta.url === process.argv[1] ||
+  import.meta.url === `file://${process.argv[1]}`
+) {
   try {
     grammars.forEach(compile)
     process.exit(0)

+ 6 - 6
services/web/scripts/recurly/setup_assistant_addon.mjs

@@ -1,9 +1,9 @@
 // @ts-check
-
-const _ = require('lodash')
-const recurly = require('recurly')
-const minimist = require('minimist')
-const Settings = require('@overleaf/settings')
+import { scriptRunner } from '../lib/ScriptRunner.mjs'
+import _ from 'lodash'
+import recurly from 'recurly'
+import minimist from 'minimist'
+import Settings from '@overleaf/settings'
 
 const ADD_ON_CODE = 'assistant'
 const ADD_ON_NAME = 'AI Assist'
@@ -209,7 +209,7 @@ function getAddOnConfig(prices) {
   }
 }
 
-main()
+scriptRunner(main)
   .then(() => {
     process.exit(0)
   })