Merge pull request #21202 from overleaf/ls-scripts-to-esm-2

Migrate scripts folder to esm 2/x

GitOrigin-RevId: 1698bc4f13e026fa281d37a4914a2f997849c761
This commit is contained in:
Liangjun Song 2024-10-22 09:21:39 +01:00 committed by Copybot
parent f2ec640b06
commit 902ae750dc
21 changed files with 184 additions and 184 deletions

View file

@ -8,7 +8,7 @@
* or "hello <name>", when User.findOne() finds something.
*/
import runScript from '../scripts/example/script_for_migration.js'
import runScript from '../scripts/example/script_for_migration.mjs'
const tags = []

View file

@ -46,7 +46,7 @@ undo the changes made in `migrate`.
#### Running scripts as a migration
To run a script in a migration file, look at `migrations/20190730093801_script_example.js`, which runs the script
`scripts/example/script_for_migration.js`. This uses a method where the script can be run standalone via `node`, or
`scripts/example/script_for_migration.mjs`. This uses a method where the script can be run standalone via `node`, or
through the migrations' mechanism.
### Running migrations

View file

@ -1,4 +1,4 @@
const GoogleBigQuery = require('@google-cloud/bigquery').BigQuery
import { BigQuery as GoogleBigQuery } from '@google-cloud/bigquery'
let dataset = null
@ -25,6 +25,6 @@ async function query(query) {
return rows
}
module.exports = {
export default {
query,
}

View file

@ -1,13 +1,13 @@
const GoogleBigQueryHelper = require('./helpers/GoogleBigQueryHelper')
const { Subscription } = require('../../app/src/models/Subscription')
const { waitForDb } = require('../../app/src/infrastructure/mongodb')
const AnalyticsManager = require('../../app/src/Features/Analytics/AnalyticsManager')
const {
DeletedSubscription,
} = require('../../app/src/models/DeletedSubscription')
const minimist = require('minimist')
const _ = require('lodash')
const { ObjectId } = require('mongodb-legacy')
import GoogleBigQueryHelper from './helpers/GoogleBigQueryHelper.mjs'
import { Subscription } from '../../app/src/models/Subscription.js'
import { waitForDb } from '../../app/src/infrastructure/mongodb.js'
import AnalyticsManager from '../../app/src/Features/Analytics/AnalyticsManager.js'
import { DeletedSubscription } from '../../app/src/models/DeletedSubscription.js'
import minimist from 'minimist'
import _ from 'lodash'
import mongodb from 'mongodb-legacy'
const { ObjectId } = mongodb
let FETCH_LIMIT, COMMIT, VERBOSE
@ -260,12 +260,11 @@ const setup = () => {
}
setup()
main()
.then(() => {
try {
await main()
console.error('Done.')
process.exit(0)
})
.catch(error => {
} catch (error) {
console.error({ error })
process.exit(1)
})
}

View file

@ -1,5 +1,5 @@
const { db, waitForDb } = require('../../app/src/infrastructure/mongodb')
const minimist = require('minimist')
import { db, waitForDb } from '../../app/src/infrastructure/mongodb.js'
import minimist from 'minimist'
const argv = minimist(process.argv.slice(2))
const commit = argv.commit !== undefined

View file

@ -1,16 +1,14 @@
'use strict'
const fs = require('fs')
const minimist = require('minimist')
const readline = require('readline')
const {
import fs from 'fs'
import minimist from 'minimist'
import readline from 'readline'
import {
db,
ObjectId,
waitForDb,
} = require('../../app/src/infrastructure/mongodb')
const DocstoreManager =
require('../../app/src/Features/Docstore/DocstoreManager').promises
} from '../../app/src/infrastructure/mongodb.js'
import DocstoreManagerModule from '../../app/src/Features/Docstore/DocstoreManager.js'
const { promises: DocstoreManager } = DocstoreManagerModule
const argv = minimist(process.argv.slice(2))
const commit = argv.commit !== undefined

View file

@ -6,7 +6,9 @@
* in the migrations directory.
*/
const { User } = require('../../app/src/models/User')
import { User } from '../../app/src/models/User.js'
import { fileURLToPath } from 'url'
// const somePackage = require('some-package')
const runScript = async () => {
@ -15,13 +17,14 @@ const runScript = async () => {
console.log(`Hello ${name}!`)
}
if (require.main === module) {
runScript()
.then(() => process.exit())
.catch(err => {
console.error(err)
if (fileURLToPath(import.meta.url) === process.argv[1]) {
try {
await runScript()
process.exit()
} catch (error) {
console.error(error)
process.exit(1)
})
}
}
module.exports = runScript
export default runScript

View file

@ -1,6 +1,9 @@
// Increase default mongo query timeout from 1min to 1h
process.env.MONGO_SOCKET_TIMEOUT = process.env.MONGO_SOCKET_TIMEOUT || '360000'
const { waitForDb, db } = require('../../app/src/infrastructure/mongodb')
import { waitForDb, db } from '../../app/src/infrastructure/mongodb.js'
import { ensureMongoTimeout } from '../helpers/env_variable_helper.mjs'
// Ensure default mongo query timeout has been increased 1h
if (!process.env.MONGO_SOCKET_TIMEOUT) {
ensureMongoTimeout(360000)
}
async function main() {
await checkAllProjectsAreMigrated()

View file

@ -1,6 +1,6 @@
const HistoryRangesSupportMigration = require('../../app/src/Features/History/HistoryRangesSupportMigration')
const { waitForDb } = require('../../app/src/infrastructure/mongodb')
const minimist = require('minimist')
import HistoryRangesSupportMigration from '../../app/src/Features/History/HistoryRangesSupportMigration.mjs'
import { waitForDb } from '../../app/src/infrastructure/mongodb.js'
import minimist from 'minimist'
async function main() {
await waitForDb()
@ -31,7 +31,7 @@ async function main() {
}
function usage() {
console.error(`Usage: migrate_ranges_support.js [OPTIONS]
console.error(`Usage: migrate_ranges_support.mjs [OPTIONS]
Options:
@ -112,11 +112,10 @@ function arrayOpt(value) {
}
}
main()
.then(() => {
try {
await main()
process.exit(0)
})
.catch(err => {
console.error(err)
} catch (error) {
console.error(error)
process.exit(1)
})
}

View file

@ -6,9 +6,10 @@
// node scripts/merge_group_subscription_members \
// --target [targetSubscriptionId] --source [sourceSubscriptionId] --commit
const { db, ObjectId, waitForDb } = require('../app/src/infrastructure/mongodb')
const SubscriptionUpdater = require('../app/src/Features/Subscription/SubscriptionUpdater')
const minimist = require('minimist')
import { db, ObjectId, waitForDb } from '../app/src/infrastructure/mongodb.js'
import SubscriptionUpdater from '../app/src/Features/Subscription/SubscriptionUpdater.js'
import minimist from 'minimist'
const argv = minimist(process.argv.slice(2), {
string: ['target', 'source'],
boolean: ['commit'],
@ -93,12 +94,11 @@ async function main() {
}
}
main()
.then(() => {
try {
await main()
console.error('Done.')
process.exit(0)
})
.catch(error => {
} catch (error) {
console.error({ error })
process.exit(1)
})
}

View file

@ -1,11 +1,9 @@
const {
import {
db,
waitForDb,
READ_PREFERENCE_SECONDARY,
} = require('../../app/src/infrastructure/mongodb')
const {
hashSecret,
} = require('../../modules/oauth2-server/app/src/SecretsHelper')
} from '../../app/src/infrastructure/mongodb.js'
import { hashSecret } from '../../modules/oauth2-server/app/src/SecretsHelper.js'
async function main() {
await waitForDb()
@ -38,11 +36,10 @@ async function hashSecrets(collection, field) {
console.log(`${hashedCount} secrets hashed`)
}
main()
.then(() => {
try {
await main()
process.exit(0)
})
.catch(err => {
console.error(err)
} catch (error) {
console.error(error)
process.exit(1)
})
}

View file

@ -1,8 +1,6 @@
const minimist = require('minimist')
const { waitForDb, db } = require('../../app/src/infrastructure/mongodb')
const {
hashSecret,
} = require('../../modules/oauth2-server/app/src/SecretsHelper')
import minimist from 'minimist'
import { waitForDb, db } from '../../app/src/infrastructure/mongodb.js'
import { hashSecret } from '../../modules/oauth2-server/app/src/SecretsHelper.js'
async function main() {
const opts = parseArgs()
@ -91,11 +89,10 @@ Options:
`)
}
main()
.then(() => {
try {
await main()
process.exit(0)
})
.catch(err => {
console.error(err)
} catch (error) {
console.error(error)
process.exit(1)
})
}

View file

@ -1,9 +1,9 @@
const minimist = require('minimist')
const { ObjectId } = require('mongodb-legacy')
const { waitForDb, db } = require('../../app/src/infrastructure/mongodb')
const {
hashSecret,
} = require('../../modules/oauth2-server/app/src/SecretsHelper')
import minimist from 'minimist'
import mongodb from 'mongodb-legacy'
import { waitForDb, db } from '../../app/src/infrastructure/mongodb.js'
import { hashSecret } from '../../modules/oauth2-server/app/src/SecretsHelper.js'
const { ObjectId } = mongodb
async function main() {
const opts = parseArgs()
@ -121,11 +121,10 @@ function toArray(value) {
}
}
main()
.then(() => {
try {
await main()
process.exit(0)
})
.catch(err => {
console.error(err)
} catch (error) {
console.error(error)
process.exit(1)
})
}

View file

@ -1,9 +1,9 @@
const minimist = require('minimist')
const {
import minimist from 'minimist'
import {
waitForDb,
db,
READ_PREFERENCE_SECONDARY,
} = require('../../app/src/infrastructure/mongodb')
} from '../../app/src/infrastructure/mongodb.js'
async function main() {
const opts = parseArgs()
@ -114,11 +114,10 @@ Options:
`)
}
main()
.then(() => {
try {
await main()
process.exit(0)
})
.catch(err => {
console.error(err)
} catch (error) {
console.error(error)
process.exit(1)
})
}

View file

@ -1,10 +1,11 @@
const RedisWrapper = require('@overleaf/redis-wrapper')
const Settings = require('@overleaf/settings')
const SessionManager = require('../app/src/Features/Authentication/SessionManager')
import RedisWrapper from '@overleaf/redis-wrapper'
import Settings from '@overleaf/settings'
import SessionManager from '../app/src/Features/Authentication/SessionManager.js'
import minimist from 'minimist'
const redis = RedisWrapper.createClient(Settings.redis.websessions)
const argv = require('minimist')(process.argv.slice(2), {
const argv = minimist(process.argv.slice(2), {
string: ['count'],
boolean: ['dry-run', 'help'],
alias: {
@ -92,7 +93,9 @@ async function scanAndPurge() {
redis.quit()
}
scanAndPurge().catch(err => {
console.error(err)
try {
await scanAndPurge()
} catch (error) {
console.error(error)
process.exit()
})
}

View file

@ -1,12 +1,13 @@
// recover docs from redis where there is no doc in mongo but the project exists
const minimist = require('minimist')
const { db, waitForDb, ObjectId } = require('../app/src/infrastructure/mongodb')
const ProjectEntityUpdateHandler = require('../app/src/Features/Project/ProjectEntityUpdateHandler')
const ProjectEntityRestoreHandler = require('../app/src/Features/Project/ProjectEntityRestoreHandler')
const RedisWrapper = require('@overleaf/redis-wrapper')
const Settings = require('@overleaf/settings')
const logger = require('@overleaf/logger')
import minimist from 'minimist'
import { db, waitForDb, ObjectId } from '../app/src/infrastructure/mongodb.js'
import ProjectEntityUpdateHandler from '../app/src/Features/Project/ProjectEntityUpdateHandler.js'
import ProjectEntityRestoreHandler from '../app/src/Features/Project/ProjectEntityRestoreHandler.js'
import RedisWrapper from '@overleaf/redis-wrapper'
import Settings from '@overleaf/settings'
import logger from '@overleaf/logger'
const opts = parseArgs()
const redis = RedisWrapper.createClient(Settings.redis.web)
@ -172,11 +173,10 @@ async function deleteDocFromRedis(projectId, docId) {
await redis.srem(`DocsIn:{${projectId}}`, projectId)
}
main()
.then(() => {
try {
await main()
process.exit(0)
})
.catch(err => {
console.error(err)
} catch (error) {
console.error(error)
process.exit(1)
})
}

View file

@ -1,9 +1,10 @@
const RecurlyWrapper = require('../../app/src/Features/Subscription/RecurlyWrapper')
const minimist = require('minimist')
const logger = require('@overleaf/logger')
import RecurlyWrapper from '../../app/src/Features/Subscription/RecurlyWrapper.js'
import minimist from 'minimist'
import logger from '@overleaf/logger'
import { fileURLToPath } from 'url'
const waitMs =
require.main === module
fileURLToPath(import.meta.url) === process.argv[1]
? timeout => new Promise(resolve => setTimeout(() => resolve(), timeout))
: () => Promise.resolve()
@ -116,16 +117,15 @@ const main = async () => {
}
}
if (require.main === module) {
main()
.then(() => {
if (fileURLToPath(import.meta.url) === process.argv[1]) {
try {
await main()
logger.info('Done.')
process.exit(0)
})
.catch(err => {
logger.error({ err }, 'Error')
} catch (error) {
logger.error({ error }, 'Error')
process.exit(1)
})
}
}
module.exports = { main }
export default { main }

View file

@ -1,6 +1,6 @@
const RecurlyWrapper = require('../../app/src/Features/Subscription/RecurlyWrapper')
const async = require('async')
const CSVParser = require('json2csv').Parser
import RecurlyWrapper from '../../app/src/Features/Subscription/RecurlyWrapper.js'
import async from 'async'
import { Parser as CSVParser } from 'json2csv'
const NOW = new Date()

View file

@ -2,10 +2,11 @@
// app/templates/plans/groups.json
//
// Usage example:
// node scripts/recurly/get_recurly_group_prices.js
// node scripts/recurly/get_recurly_group_prices.mjs
const recurly = require('recurly')
const Settings = require('@overleaf/settings')
import recurly from 'recurly'
import Settings from '@overleaf/settings'
const recurlySettings = Settings.apis.recurly
const recurlyApiKey = recurlySettings ? recurlySettings.apiKey : undefined
@ -37,11 +38,10 @@ async function main() {
console.log(JSON.stringify(prices, undefined, 2))
}
main()
.then(() => {
try {
await main()
process.exit(0)
})
.catch(error => {
} catch (error) {
console.error({ error })
process.exit(1)
})
}

View file

@ -1,18 +1,11 @@
const { waitForDb } = require('../app/src/infrastructure/mongodb')
const minimist = require('minimist')
const InstitutionsManager = require('../app/src/Features/Institutions/InstitutionsManager')
import { waitForDb } from '../app/src/infrastructure/mongodb.js'
import minimist from 'minimist'
import InstitutionsManager from '../app/src/Features/Institutions/InstitutionsManager.js'
const institutionId = parseInt(process.argv[2])
if (isNaN(institutionId)) throw new Error('No institution id')
console.log('Refreshing users at institution', institutionId)
waitForDb()
.then(main)
.catch(err => {
console.error(err)
process.exit(1)
})
function main() {
const argv = minimist(process.argv.slice(2))
if (!argv.notify) {
@ -37,3 +30,11 @@ function main() {
}
)
}
try {
await waitForDb()
await main()
} catch (error) {
console.error(error)
process.exit(1)
}

View file

@ -2,10 +2,12 @@ import sinon from 'sinon'
import chai, { expect } from 'chai'
import chaiAsPromised from 'chai-as-promised'
import sinonChai from 'sinon-chai'
import { main } from '../../../scripts/recurly/collect_paypal_past_due_invoice.js'
import CollectPaypalPastDueInvoice from '../../../scripts/recurly/collect_paypal_past_due_invoice.mjs'
import RecurlyWrapper from '../../../app/src/Features/Subscription/RecurlyWrapper.js'
import OError from '@overleaf/o-error'
const { main } = CollectPaypalPastDueInvoice
chai.use(chaiAsPromised)
chai.use(sinonChai)