mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-29 20:11:32 +02:00
Merge pull request #3074 from overleaf/msm-update-oerror-logger-v3
Update o-error to v3 and logger-sharelatex to v3 GitOrigin-RevId: 5e6386f65b7893949336aa4ff021212aebd98f4a
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
const OError = require('@overleaf/o-error')
|
||||
const Errors = require('../Errors/Errors')
|
||||
|
||||
class InvalidEmailError extends OError {}
|
||||
class InvalidPasswordError extends OError {}
|
||||
class InvalidEmailError extends Errors.BackwardCompatibleError {}
|
||||
class InvalidPasswordError extends Errors.BackwardCompatibleError {}
|
||||
|
||||
module.exports = {
|
||||
InvalidEmailError,
|
||||
|
||||
@@ -43,10 +43,7 @@ async function getAllMembers(req, res, next) {
|
||||
try {
|
||||
members = await CollaboratorsGetter.promises.getAllInvitedMembers(projectId)
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'error getting members for project',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'error getting members for project', { projectId })
|
||||
}
|
||||
res.json({ members })
|
||||
}
|
||||
|
||||
@@ -170,10 +170,7 @@ async function getAllInvitedMembers(projectId) {
|
||||
)
|
||||
return members
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'error getting members for project',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'error getting members for project', { projectId })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -70,10 +70,10 @@ async function removeUserFromProject(projectId, userId) {
|
||||
)
|
||||
}
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'problem removing user from project collaborators',
|
||||
info: { projectId, userId }
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'problem removing user from project collaborators', {
|
||||
projectId,
|
||||
userId
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,9 +225,7 @@ async function setCollaboratorPrivilegeLevel(
|
||||
break
|
||||
}
|
||||
default: {
|
||||
throw new OError({
|
||||
message: `unknown privilege level: ${privilegeLevel}`
|
||||
})
|
||||
throw new OError(`unknown privilege level: ${privilegeLevel}`)
|
||||
}
|
||||
}
|
||||
const mongoResponse = await Project.updateOne(query, update).exec()
|
||||
@@ -255,10 +253,10 @@ async function userIsTokenMember(userId, projectId) {
|
||||
)
|
||||
return project != null
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'problem while checking if user is token member',
|
||||
info: { userId, projectId }
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'problem while checking if user is token member', {
|
||||
userId,
|
||||
projectId
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -70,10 +70,10 @@ const ClsiManager = {
|
||||
})
|
||||
} else {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'Could not build request to CLSI',
|
||||
info: { projectId, options }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'Could not build request to CLSI', {
|
||||
projectId,
|
||||
options
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -85,10 +85,7 @@ const ClsiManager = {
|
||||
(err, status, ...result) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'CLSI compile failed',
|
||||
info: { projectId, userId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'CLSI compile failed', { projectId, userId })
|
||||
)
|
||||
}
|
||||
callback(null, status, ...result)
|
||||
@@ -110,10 +107,11 @@ const ClsiManager = {
|
||||
(err, status, ...result) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'CLSI compile failed',
|
||||
info: { submissionId, clsiRequest, options }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'CLSI compile failed', {
|
||||
submissionId,
|
||||
clsiRequest,
|
||||
options
|
||||
})
|
||||
)
|
||||
}
|
||||
callback(null, status, ...result)
|
||||
@@ -157,18 +155,16 @@ const ClsiManager = {
|
||||
DocumentUpdaterHandler.clearProjectState(projectId, docUpdaterErr => {
|
||||
if (clsiErr != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'Failed to delete aux files',
|
||||
info: { projectId }
|
||||
}).withCause(clsiErr)
|
||||
OError.tag(clsiErr, 'Failed to delete aux files', { projectId })
|
||||
)
|
||||
}
|
||||
if (docUpdaterErr != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'Failed to clear project state in doc updater',
|
||||
info: { projectId }
|
||||
}).withCause(docUpdaterErr)
|
||||
OError.tag(
|
||||
docUpdaterErr,
|
||||
'Failed to clear project state in doc updater',
|
||||
{ projectId }
|
||||
)
|
||||
)
|
||||
}
|
||||
callback()
|
||||
@@ -201,10 +197,10 @@ const ClsiManager = {
|
||||
(err, validationProblems) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message:
|
||||
'could not check resources for potential problems before sending to clsi'
|
||||
}).withCause(err)
|
||||
OError.tag(
|
||||
err,
|
||||
'could not check resources for potential problems before sending to clsi'
|
||||
)
|
||||
)
|
||||
}
|
||||
if (validationProblems != null) {
|
||||
@@ -228,19 +224,16 @@ const ClsiManager = {
|
||||
(err, response) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'error sending request to clsi',
|
||||
info: { projectId, userId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'error sending request to clsi', {
|
||||
projectId,
|
||||
userId
|
||||
})
|
||||
)
|
||||
}
|
||||
ClsiCookieManager._getServerId(projectId, (err, clsiServerId) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'error getting server id',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'error getting server id', { projectId })
|
||||
)
|
||||
}
|
||||
const outputFiles = ClsiManager._parseOutputFiles(
|
||||
@@ -268,10 +261,9 @@ const ClsiManager = {
|
||||
ClsiCookieManager.getCookieJar(projectId, (err, jar) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'error getting cookie jar for CLSI request',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'error getting cookie jar for CLSI request', {
|
||||
projectId
|
||||
})
|
||||
)
|
||||
}
|
||||
opts.jar = jar
|
||||
@@ -279,10 +271,7 @@ const ClsiManager = {
|
||||
request(opts, (err, response, body) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'error making request to CLSI',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'error making request to CLSI', { projectId })
|
||||
)
|
||||
}
|
||||
timer.done()
|
||||
@@ -292,10 +281,7 @@ const ClsiManager = {
|
||||
ClsiCookieManager.setServerId(projectId, response, err => {
|
||||
if (err != null) {
|
||||
callback(
|
||||
new OError({
|
||||
message: 'error setting server id',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'error setting server id', { projectId })
|
||||
)
|
||||
} else {
|
||||
// return as soon as the standard compile has returned
|
||||
@@ -374,10 +360,9 @@ const ClsiManager = {
|
||||
NewBackendCloudClsiCookieManager.getCookieJar(projectId, (err, jar) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'error getting cookie jar for CLSI request',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'error getting cookie jar for CLSI request', {
|
||||
projectId
|
||||
})
|
||||
)
|
||||
}
|
||||
opts.jar = jar
|
||||
@@ -386,10 +371,10 @@ const ClsiManager = {
|
||||
timer.done()
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'error making request to new CLSI',
|
||||
info: { projectId, opts }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'error making request to new CLSI', {
|
||||
projectId,
|
||||
opts
|
||||
})
|
||||
)
|
||||
}
|
||||
NewBackendCloudClsiCookieManager.setServerId(
|
||||
@@ -398,10 +383,9 @@ const ClsiManager = {
|
||||
err => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'error setting server id on new backend',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'error setting server id on new backend', {
|
||||
projectId
|
||||
})
|
||||
)
|
||||
}
|
||||
callback(null, response, body)
|
||||
@@ -438,14 +422,11 @@ const ClsiManager = {
|
||||
ClsiManager._makeRequest(projectId, opts, (err, response, body) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'failed to make request to CLSI',
|
||||
info: {
|
||||
projectId,
|
||||
userId,
|
||||
compileOptions: req.compile.options,
|
||||
rootResourcePath: req.compile.rootResourcePath
|
||||
}
|
||||
new OError('failed to make request to CLSI', {
|
||||
projectId,
|
||||
userId,
|
||||
compileOptions: req.compile.options,
|
||||
rootResourcePath: req.compile.rootResourcePath
|
||||
})
|
||||
)
|
||||
}
|
||||
@@ -461,16 +442,13 @@ const ClsiManager = {
|
||||
callback(null, { compile: { status: 'unavailable' } })
|
||||
} else {
|
||||
callback(
|
||||
new OError({
|
||||
message: `CLSI returned non-success code: ${response.statusCode}`,
|
||||
info: {
|
||||
projectId,
|
||||
userId,
|
||||
compileOptions: req.compile.options,
|
||||
rootResourcePath: req.compile.rootResourcePath,
|
||||
clsiResponse: body,
|
||||
statusCode: response.statusCode
|
||||
}
|
||||
new OError(`CLSI returned non-success code: ${response.statusCode}`, {
|
||||
projectId,
|
||||
userId,
|
||||
compileOptions: req.compile.options,
|
||||
rootResourcePath: req.compile.rootResourcePath,
|
||||
clsiResponse: body,
|
||||
statusCode: response.statusCode
|
||||
})
|
||||
)
|
||||
}
|
||||
@@ -500,10 +478,7 @@ const ClsiManager = {
|
||||
(err, project) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'failed to get project',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'failed to get project', { projectId })
|
||||
)
|
||||
}
|
||||
if (project == null) {
|
||||
@@ -564,10 +539,9 @@ const ClsiManager = {
|
||||
timer.done()
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'failed to get contents from Mongo',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'failed to get contents from Mongo', {
|
||||
projectId
|
||||
})
|
||||
)
|
||||
}
|
||||
ClsiManager._finaliseRequest(
|
||||
@@ -588,10 +562,7 @@ const ClsiManager = {
|
||||
ClsiStateManager.computeHash(project, options, (err, projectStateHash) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'Failed to compute project state hash',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'Failed to compute project state hash', { projectId })
|
||||
)
|
||||
}
|
||||
DocumentUpdaterHandler.getProjectDocsIfMatch(
|
||||
@@ -600,10 +571,10 @@ const ClsiManager = {
|
||||
(err, docs) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'Failed to get project documents',
|
||||
info: { projectId, projectStateHash }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'Failed to get project documents', {
|
||||
projectId,
|
||||
projectStateHash
|
||||
})
|
||||
)
|
||||
}
|
||||
callback(null, projectStateHash, docs)
|
||||
@@ -619,10 +590,12 @@ const ClsiManager = {
|
||||
ClsiCookieManager.getCookieJar(projectId, (err, jar) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'Failed to get cookie jar',
|
||||
info: { projectId, userId, buildId, outputFilePath }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'Failed to get cookie jar', {
|
||||
projectId,
|
||||
userId,
|
||||
buildId,
|
||||
outputFilePath
|
||||
})
|
||||
)
|
||||
}
|
||||
const options = { url, method: 'GET', timeout: 60 * 1000, jar }
|
||||
@@ -642,10 +615,7 @@ const ClsiManager = {
|
||||
ProjectEntityHandler.getAllDocPathsFromProject(project, (err, docPath) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'Failed to get doc paths',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'Failed to get doc paths', { projectId })
|
||||
)
|
||||
}
|
||||
const docs = {}
|
||||
@@ -690,10 +660,9 @@ const ClsiManager = {
|
||||
ClsiManager._getContentFromMongo(projectId, (err, docs, files) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'failed to get project contents from Mongo',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'failed to get project contents from Mongo', {
|
||||
projectId
|
||||
})
|
||||
)
|
||||
}
|
||||
options = {
|
||||
@@ -716,28 +685,19 @@ const ClsiManager = {
|
||||
DocumentUpdaterHandler.flushProjectToMongo(projectId, err => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'failed to flush project to Mongo',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'failed to flush project to Mongo', { projectId })
|
||||
)
|
||||
}
|
||||
ProjectEntityHandler.getAllDocs(projectId, (err, docs) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'failed to get project docs',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'failed to get project docs', { projectId })
|
||||
)
|
||||
}
|
||||
ProjectEntityHandler.getAllFiles(projectId, (err, files) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'failed to get project files',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'failed to get project files', { projectId })
|
||||
)
|
||||
}
|
||||
if (files == null) {
|
||||
@@ -797,12 +757,7 @@ const ClsiManager = {
|
||||
rootResourcePath = path.replace(/^\//, '')
|
||||
}
|
||||
} else {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'no main file specified',
|
||||
info: { projectId }
|
||||
})
|
||||
)
|
||||
return callback(new OError('no main file specified', { projectId }))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -840,10 +795,10 @@ const ClsiManager = {
|
||||
ClsiManager._buildRequest(projectId, options, (err, req) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'Failed to build CLSI request',
|
||||
info: { projectId, options }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'Failed to build CLSI request', {
|
||||
projectId,
|
||||
options
|
||||
})
|
||||
)
|
||||
}
|
||||
const filename = file || req.compile.rootResourcePath
|
||||
@@ -863,25 +818,20 @@ const ClsiManager = {
|
||||
}
|
||||
ClsiManager._makeRequest(projectId, opts, (err, response, body) => {
|
||||
if (err != null) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'CLSI request failed',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
)
|
||||
return callback(OError.tag(err, 'CLSI request failed', { projectId }))
|
||||
}
|
||||
if (response.statusCode >= 200 && response.statusCode < 300) {
|
||||
callback(null, body)
|
||||
} else {
|
||||
callback(
|
||||
new OError({
|
||||
message: `CLSI returned non-success code: ${response.statusCode}`,
|
||||
info: {
|
||||
new OError(
|
||||
`CLSI returned non-success code: ${response.statusCode}`,
|
||||
{
|
||||
projectId,
|
||||
clsiResponse: body,
|
||||
statusCode: response.statusCode
|
||||
}
|
||||
})
|
||||
)
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -28,10 +28,9 @@ function getClient() {
|
||||
logger.log('using aws ses for email')
|
||||
client = nodemailer.createTransport(sesTransport(emailParameters))
|
||||
} else if (emailParameters.sendgridApiKey) {
|
||||
throw new OError({
|
||||
message:
|
||||
'sendgridApiKey configuration option is deprecated, use SMTP instead'
|
||||
})
|
||||
throw new OError(
|
||||
'sendgridApiKey configuration option is deprecated, use SMTP instead'
|
||||
)
|
||||
} else if (emailParameters.MandrillApiKey) {
|
||||
logger.log('using mandril for email')
|
||||
client = nodemailer.createTransport(
|
||||
@@ -79,7 +78,7 @@ async function sendEmail(options) {
|
||||
},
|
||||
'rate limit hit for sending email, not sending'
|
||||
)
|
||||
throw new OError({ message: 'rate limit hit sending email' })
|
||||
throw new OError('rate limit hit sending email')
|
||||
}
|
||||
metrics.inc('email')
|
||||
let sendMailOptions = {
|
||||
@@ -96,9 +95,7 @@ async function sendEmail(options) {
|
||||
}
|
||||
await client.sendMail(sendMailOptions)
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'error sending message'
|
||||
}).withCause(err)
|
||||
throw new OError('error sending message').withCause(err)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,15 +6,27 @@ const settings = require('settings-sharelatex')
|
||||
// of object)
|
||||
class BackwardCompatibleError extends OError {
|
||||
constructor(messageOrOptions) {
|
||||
let options
|
||||
if (typeof messageOrOptions === 'string') {
|
||||
options = { message: messageOrOptions }
|
||||
} else if (!messageOrOptions) {
|
||||
options = {}
|
||||
super(messageOrOptions)
|
||||
} else if (messageOrOptions) {
|
||||
const { message, info } = messageOrOptions
|
||||
super(message, info)
|
||||
} else {
|
||||
options = messageOrOptions
|
||||
super()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Error class that facilitates the migration to OError v3 by providing
|
||||
// a signature in which the 2nd argument can be an object containing
|
||||
// the `info` object.
|
||||
class OErrorV2CompatibleError extends OError {
|
||||
constructor(message, options) {
|
||||
if (options) {
|
||||
super(message, options.info)
|
||||
} else {
|
||||
super(message)
|
||||
}
|
||||
super(options)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,12 +54,9 @@ class V1ConnectionError extends BackwardCompatibleError {}
|
||||
|
||||
class UnconfirmedEmailError extends BackwardCompatibleError {}
|
||||
|
||||
class EmailExistsError extends OError {
|
||||
class EmailExistsError extends OErrorV2CompatibleError {
|
||||
constructor(options) {
|
||||
super({
|
||||
message: 'Email already exists',
|
||||
...options
|
||||
})
|
||||
super('Email already exists', options)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,51 +133,39 @@ class ThirdPartyUserNotFoundError extends BackwardCompatibleError {
|
||||
}
|
||||
}
|
||||
|
||||
class SubscriptionAdminDeletionError extends OError {
|
||||
class SubscriptionAdminDeletionError extends OErrorV2CompatibleError {
|
||||
constructor(options) {
|
||||
super({
|
||||
message: 'subscription admins cannot be deleted',
|
||||
...options
|
||||
})
|
||||
super('subscription admins cannot be deleted', options)
|
||||
}
|
||||
}
|
||||
|
||||
class ProjectNotFoundError extends OError {
|
||||
class ProjectNotFoundError extends OErrorV2CompatibleError {
|
||||
constructor(options) {
|
||||
super({
|
||||
message: 'project not found',
|
||||
...options
|
||||
})
|
||||
super('project not found', options)
|
||||
}
|
||||
}
|
||||
|
||||
class UserNotFoundError extends OError {
|
||||
class UserNotFoundError extends OErrorV2CompatibleError {
|
||||
constructor(options) {
|
||||
super({
|
||||
message: 'user not found',
|
||||
...options
|
||||
})
|
||||
super('user not found', options)
|
||||
}
|
||||
}
|
||||
|
||||
class UserNotCollaboratorError extends OError {
|
||||
class UserNotCollaboratorError extends OErrorV2CompatibleError {
|
||||
constructor(options) {
|
||||
super({
|
||||
message: 'user not a collaborator',
|
||||
...options
|
||||
})
|
||||
super('user not a collaborator', options)
|
||||
}
|
||||
}
|
||||
|
||||
class DocHasRangesError extends OError {
|
||||
class DocHasRangesError extends OErrorV2CompatibleError {
|
||||
constructor(options) {
|
||||
super({ message: 'document has ranges', ...options })
|
||||
super('document has ranges', options)
|
||||
}
|
||||
}
|
||||
|
||||
class InvalidQueryError extends OError {
|
||||
class InvalidQueryError extends OErrorV2CompatibleError {
|
||||
constructor(options) {
|
||||
super({ message: 'invalid search query', ...options })
|
||||
super('invalid search query', options)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ const Async = require('async')
|
||||
const FileHashManager = require('./FileHashManager')
|
||||
const { File } = require('../../models/File')
|
||||
const Errors = require('../Errors/Errors')
|
||||
const OError = require('@overleaf/o-error')
|
||||
const { promisifyAll } = require('../../util/promises')
|
||||
|
||||
const ONE_MIN_IN_MS = 60 * 1000
|
||||
@@ -193,10 +194,11 @@ const FileStoreHandler = {
|
||||
err => {
|
||||
if (err) {
|
||||
return callback(
|
||||
new Errors.OError({
|
||||
message: 'something went wrong deleting a project in filestore',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
OError.tag(
|
||||
err,
|
||||
'something went wrong deleting a project in filestore',
|
||||
{ projectId }
|
||||
)
|
||||
)
|
||||
}
|
||||
callback()
|
||||
|
||||
@@ -39,9 +39,7 @@ async function initializeProject() {
|
||||
}
|
||||
return { overleaf_id: overleafId }
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'failed to initialize project history'
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'failed to initialize project history')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,10 +49,9 @@ async function flushProject(projectId) {
|
||||
url: `${settings.apis.project_history.url}/project/${projectId}/flush`
|
||||
})
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'failed to flush project to project history',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'failed to flush project to project history', {
|
||||
projectId
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,10 +61,7 @@ async function resyncProject(projectId) {
|
||||
url: `${settings.apis.project_history.url}/project/${projectId}/resync`
|
||||
})
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'failed to resync project history',
|
||||
info: { projectId }
|
||||
})
|
||||
throw new OError('failed to resync project history', { projectId })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,10 +71,7 @@ async function deleteProject(projectId) {
|
||||
`${settings.apis.project_history.url}/project/${projectId}`
|
||||
)
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'failed to clear project history',
|
||||
info: { projectId }
|
||||
})
|
||||
throw new OError('failed to clear project history', { projectId })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,12 @@ module.exports = {
|
||||
promises: provider
|
||||
}
|
||||
|
||||
class NonFatalEmailUpdateError extends OError {
|
||||
constructor(message, oldEmail, newEmail) {
|
||||
super(message, { oldEmail, newEmail })
|
||||
}
|
||||
}
|
||||
|
||||
function getProvider() {
|
||||
if (mailchimpIsConfigured()) {
|
||||
logger.info('Using newsletter provider: mailchimp')
|
||||
@@ -49,10 +55,9 @@ function makeMailchimpProvider() {
|
||||
})
|
||||
logger.info({ user }, 'finished subscribing user to newsletter')
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'error subscribing user to newsletter',
|
||||
info: { userId: user._id }
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'error subscribing user to newsletter', {
|
||||
userId: user._id
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,10 +90,9 @@ function makeMailchimpProvider() {
|
||||
return
|
||||
}
|
||||
|
||||
throw new OError({
|
||||
message: 'error unsubscribing user from newsletter',
|
||||
info: { userId: user._id }
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'error unsubscribing user from newsletter', {
|
||||
userId: user._id
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,15 +113,14 @@ function makeMailchimpProvider() {
|
||||
await unsubscribe(user, { delete: true })
|
||||
} catch (unsubscribeError) {
|
||||
// something went wrong removing the user's address
|
||||
throw new OError({
|
||||
message:
|
||||
'error unsubscribing old email in response to email change failure',
|
||||
info: { oldEmail, newEmail, updateError }
|
||||
}).withCause(unsubscribeError)
|
||||
throw OError.tag(
|
||||
unsubscribeError,
|
||||
'error unsubscribing old email in response to email change failure',
|
||||
{ oldEmail, newEmail, updateError }
|
||||
)
|
||||
}
|
||||
|
||||
// throw the error, unless it was an expected one that we can ignore
|
||||
if (!updateError.info || !updateError.info.nonFatal) {
|
||||
if (!(updateError instanceof NonFatalEmailUpdateError)) {
|
||||
throw updateError
|
||||
}
|
||||
}
|
||||
@@ -155,19 +158,19 @@ function makeMailchimpProvider() {
|
||||
|
||||
logger.info({ oldEmail, newEmail }, message)
|
||||
|
||||
// throw a non-fatal error
|
||||
throw new OError({
|
||||
message: message,
|
||||
info: { oldEmail, newEmail, nonFatal: true }
|
||||
}).withCause(err)
|
||||
throw new NonFatalEmailUpdateError(
|
||||
message,
|
||||
oldEmail,
|
||||
newEmail
|
||||
).withCause(err)
|
||||
}
|
||||
})
|
||||
|
||||
// if we didn't find an expected error, generate something to throw
|
||||
throw new OError({
|
||||
message: 'error changing email in newsletter',
|
||||
info: { oldEmail, newEmail }
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'error changing email in newsletter', {
|
||||
oldEmail,
|
||||
newEmail
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ class FolderStructureBuilder {
|
||||
|
||||
recordEntityPath(path) {
|
||||
if (this.entityPaths.has(path)) {
|
||||
throw new OError({ message: 'entity already exists', info: { path } })
|
||||
throw new OError('entity already exists', { path })
|
||||
}
|
||||
this.entityPaths.add(path)
|
||||
}
|
||||
|
||||
@@ -35,9 +35,6 @@ async function addEntry(projectId, operation, initiatorId, info = {}) {
|
||||
}
|
||||
).exec()
|
||||
if (result.nModified === 0) {
|
||||
throw new OError({
|
||||
message: 'project not found',
|
||||
info: { projectId }
|
||||
})
|
||||
throw new OError('project not found', { projectId })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,14 +73,11 @@ async function duplicate(owner, originalProjectId, newProjectName) {
|
||||
// Clean up broken clone on error.
|
||||
// Make sure we delete the new failed project, not the original one!
|
||||
await ProjectDeleter.promises.deleteProject(newProject._id)
|
||||
throw new OError({
|
||||
message: 'error cloning project, broken clone deleted',
|
||||
info: {
|
||||
originalProjectId,
|
||||
newProjectName,
|
||||
newProjectId: newProject._id
|
||||
}
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'error cloning project, broken clone deleted', {
|
||||
originalProjectId,
|
||||
newProjectName,
|
||||
newProjectId: newProject._id
|
||||
})
|
||||
}
|
||||
return newProject
|
||||
}
|
||||
|
||||
@@ -694,17 +694,13 @@ async function createNewFolderStructure(projectId, docEntries, fileEntries) {
|
||||
}
|
||||
).exec()
|
||||
if (project == null) {
|
||||
throw new OError({
|
||||
message: 'project not found or folder structure already exists',
|
||||
info: { projectId }
|
||||
throw new OError('project not found or folder structure already exists', {
|
||||
projectId
|
||||
})
|
||||
}
|
||||
return project.version
|
||||
} catch (err) {
|
||||
throw new OError({
|
||||
message: 'failed to create folder structure',
|
||||
info: { projectId }
|
||||
}).withCause(err)
|
||||
throw OError.tag(err, 'failed to create folder structure', { projectId })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,20 +10,16 @@ module.exports = {
|
||||
request.get({ url: url, timeout: TIMEOUT }, (error, response) => {
|
||||
if (error) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'error getting user dictionary',
|
||||
info: { error, userId }
|
||||
}).withCause(error)
|
||||
OError.tag(error, 'error getting user dictionary', { error, userId })
|
||||
)
|
||||
}
|
||||
|
||||
if (response.statusCode < 200 || response.statusCode >= 300) {
|
||||
return callback(
|
||||
new OError({
|
||||
message:
|
||||
'Non-success code from spelling API when getting user dictionary',
|
||||
info: { userId, statusCode: response.statusCode }
|
||||
})
|
||||
new OError(
|
||||
'Non-success code from spelling API when getting user dictionary',
|
||||
{ userId, statusCode: response.statusCode }
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -44,20 +40,19 @@ module.exports = {
|
||||
(error, response) => {
|
||||
if (error) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'error deleting word from user dictionary',
|
||||
info: { error, userId, word }
|
||||
}).withCause(error)
|
||||
OError.tag(error, 'error deleting word from user dictionary', {
|
||||
userId,
|
||||
word
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
if (response.statusCode < 200 || response.statusCode >= 300) {
|
||||
return callback(
|
||||
new OError({
|
||||
message:
|
||||
'Non-success code from spelling API when removing word from user dictionary',
|
||||
info: { userId, word, statusCode: response.statusCode }
|
||||
})
|
||||
new OError(
|
||||
'Non-success code from spelling API when removing word from user dictionary',
|
||||
{ userId, word, statusCode: response.statusCode }
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -71,20 +66,16 @@ module.exports = {
|
||||
request.delete({ url: url, timeout: TIMEOUT }, (error, response) => {
|
||||
if (error) {
|
||||
return callback(
|
||||
new OError({
|
||||
message: 'error deleting user dictionary',
|
||||
info: { userId }
|
||||
}).withCause(error)
|
||||
OError.tag(error, 'error deleting user dictionary', { userId })
|
||||
)
|
||||
}
|
||||
|
||||
if (response.statusCode < 200 || response.statusCode >= 300) {
|
||||
return callback(
|
||||
new OError({
|
||||
message:
|
||||
'Non-success code from spelling API when removing user dictionary',
|
||||
info: { userId, statusCode: response.statusCode }
|
||||
})
|
||||
new OError(
|
||||
'Non-success code from spelling API when removing user dictionary',
|
||||
{ userId, statusCode: response.statusCode }
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
const OError = require('@overleaf/o-error')
|
||||
const Errors = require('../Errors/Errors')
|
||||
|
||||
class RecurlyTransactionError extends OError {
|
||||
class RecurlyTransactionError extends Errors.BackwardCompatibleError {
|
||||
constructor(options) {
|
||||
super({
|
||||
message: 'Unknown transaction error',
|
||||
|
||||
@@ -93,10 +93,7 @@ async function tokenAccessPage(req, res, next) {
|
||||
})
|
||||
} catch (err) {
|
||||
return next(
|
||||
new OError({
|
||||
message: 'error while rendering token access page',
|
||||
info: { token }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'error while rendering token access page', { token })
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -244,10 +241,11 @@ async function grantTokenAccessReadAndWrite(req, res, next) {
|
||||
})
|
||||
} catch (err) {
|
||||
return next(
|
||||
new OError({
|
||||
message: 'error while trying to grant read-and-write token access',
|
||||
info: { token }
|
||||
}).withCause(err)
|
||||
OError.tag(
|
||||
err,
|
||||
'error while trying to grant read-and-write token access',
|
||||
{ token }
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -290,10 +288,9 @@ async function grantTokenAccessReadOnly(req, res, next) {
|
||||
})
|
||||
} catch (err) {
|
||||
return next(
|
||||
new OError({
|
||||
message: 'error while trying to grant read-only token access',
|
||||
info: { token }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'error while trying to grant read-only token access', {
|
||||
token
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
const OError = require('@overleaf/o-error')
|
||||
const Errors = require('../Errors/Errors')
|
||||
|
||||
class InvalidZipFileError extends OError {
|
||||
class InvalidZipFileError extends Errors.BackwardCompatibleError {
|
||||
constructor(options) {
|
||||
super({
|
||||
message: 'invalid_zip_file',
|
||||
|
||||
@@ -60,7 +60,7 @@ async function _addIdentifier(
|
||||
if (err.code === 11000) {
|
||||
throw new Errors.SAMLIdentityExistsError()
|
||||
} else {
|
||||
throw new OError(err)
|
||||
throw OError.tag(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,10 +32,7 @@ async function addEntry(userId, operation, initiatorId, ipAddress, info = {}) {
|
||||
}
|
||||
).exec()
|
||||
if (result.nModified === 0) {
|
||||
throw new OError({
|
||||
message: 'user not found',
|
||||
info: { userId }
|
||||
})
|
||||
throw new OError('user not found', { userId })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -213,7 +213,7 @@ const UserController = {
|
||||
errorData.info.public = {
|
||||
error: 'SubscriptionAdminDeletionError'
|
||||
}
|
||||
logger.warn(new OError(errorData).withCause(err))
|
||||
logger.warn(OError.tag(err, errorData.message, errorData.info))
|
||||
return HttpErrorHandler.unprocessableEntity(
|
||||
req,
|
||||
res,
|
||||
@@ -221,7 +221,7 @@ const UserController = {
|
||||
errorData.info.public
|
||||
)
|
||||
} else {
|
||||
return next(new OError(errorData).withCause(err))
|
||||
return next(OError.tag(err, errorData.message, errorData.info))
|
||||
}
|
||||
}
|
||||
const sessionId = req.sessionID
|
||||
@@ -350,10 +350,10 @@ const UserController = {
|
||||
req,
|
||||
res,
|
||||
req.i18n.translate('problem_changing_email_address'),
|
||||
new OError({
|
||||
message: 'problem_changing_email_address',
|
||||
info: { userId, newEmail }
|
||||
}).withCause(err)
|
||||
OError.tag(err, 'problem_changing_email_address', {
|
||||
userId,
|
||||
newEmail
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const Settings = require('settings-sharelatex')
|
||||
const Errors = require('../Features/Errors/Errors')
|
||||
const OError = require('@overleaf/o-error')
|
||||
|
||||
// SessionAutostartMiddleware provides a mechanism to force certain routes not
|
||||
// to get an automatic session where they don't have one already. This allows us
|
||||
@@ -75,12 +75,9 @@ class SessionAutostartMiddleware {
|
||||
static genericPostGatewayMiddleware(req, res, next) {
|
||||
if (req.method !== 'POST') {
|
||||
return next(
|
||||
new Errors.OError({
|
||||
message: 'post gateway invoked for non-POST request',
|
||||
info: {
|
||||
path: req.path,
|
||||
method: req.method
|
||||
}
|
||||
new OError('post gateway invoked for non-POST request', {
|
||||
path: req.path,
|
||||
method: req.method
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
579
services/web/package-lock.json
generated
579
services/web/package-lock.json
generated
@@ -1821,14 +1821,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.4.tgz",
|
||||
"integrity": "sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ=="
|
||||
},
|
||||
"agent-base": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz",
|
||||
"integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==",
|
||||
"requires": {
|
||||
"debug": "4"
|
||||
}
|
||||
},
|
||||
"arrify": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
|
||||
@@ -1839,14 +1831,6 @@
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
|
||||
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"dot-prop": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz",
|
||||
@@ -1855,19 +1839,6 @@
|
||||
"is-obj": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"end-of-stream": {
|
||||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
|
||||
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
|
||||
"requires": {
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||
},
|
||||
"gaxios": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
|
||||
@@ -1924,16 +1895,6 @@
|
||||
"mime": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"http-proxy-agent": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
|
||||
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
|
||||
"requires": {
|
||||
"@tootallnate/once": "1",
|
||||
"agent-base": "6",
|
||||
"debug": "4"
|
||||
}
|
||||
},
|
||||
"https-proxy-agent": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
|
||||
@@ -1972,42 +1933,11 @@
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||
"requires": {
|
||||
"yallist": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"mime": {
|
||||
"version": "2.4.4",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
|
||||
"integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
|
||||
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
|
||||
},
|
||||
"node-forge": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz",
|
||||
"integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ=="
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"pumpify": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz",
|
||||
@@ -2050,9 +1980,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"safe-buffer": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
|
||||
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2069,42 +1999,37 @@
|
||||
}
|
||||
},
|
||||
"through2": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
|
||||
"integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
|
||||
"integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.4",
|
||||
"readable-stream": "2 || 3"
|
||||
},
|
||||
"dependencies": {
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"uuid": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
|
||||
"integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg=="
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@google-cloud/logging-bunyan": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/logging-bunyan/-/logging-bunyan-2.0.3.tgz",
|
||||
"integrity": "sha512-8n9MwsCRd4v8WZg17+d3m7qInud7lYTm5rpwXHY0/lzWEJYjeiztT09BiCYh56EEhHr+ynymJnzUDZKazkywlg==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/logging-bunyan/-/logging-bunyan-3.0.0.tgz",
|
||||
"integrity": "sha512-ZLVXEejNQ27ktGcA3S/sd7GPefp7kywbn+/KoBajdb1Syqcmtc98jhXpYQBXVtNP2065iyu77s4SBaiYFbTC5A==",
|
||||
"requires": {
|
||||
"@google-cloud/logging": "^7.0.0",
|
||||
"google-auth-library": "^5.0.0"
|
||||
"google-auth-library": "^6.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"agent-base": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz",
|
||||
"integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==",
|
||||
"requires": {
|
||||
"debug": "4"
|
||||
}
|
||||
},
|
||||
"arrify": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
|
||||
@@ -2115,23 +2040,15 @@
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
|
||||
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||
"bignumber.js": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
|
||||
"integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
|
||||
},
|
||||
"gaxios": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
|
||||
"integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.1.0.tgz",
|
||||
"integrity": "sha512-DDTn3KXVJJigtz+g0J3vhcfbDbKtAroSTxauWsdnP57sM5KZ3d2c/3D9RKFJ86s43hfw6WULg6TXYw/AYiBlpA==",
|
||||
"requires": {
|
||||
"abort-controller": "^3.0.0",
|
||||
"extend": "^3.0.2",
|
||||
@@ -2141,45 +2058,45 @@
|
||||
}
|
||||
},
|
||||
"gcp-metadata": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz",
|
||||
"integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==",
|
||||
"version": "4.1.4",
|
||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.1.4.tgz",
|
||||
"integrity": "sha512-5J/GIH0yWt/56R3dNaNWPGQ/zXsZOddYECfJaqxFWgrZ9HC2Kvc5vl9upOgUUHKzURjAVf2N+f6tEJiojqXUuA==",
|
||||
"requires": {
|
||||
"gaxios": "^2.1.0",
|
||||
"json-bigint": "^0.3.0"
|
||||
"gaxios": "^3.0.0",
|
||||
"json-bigint": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"google-auth-library": {
|
||||
"version": "5.10.1",
|
||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz",
|
||||
"integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==",
|
||||
"version": "6.0.6",
|
||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.0.6.tgz",
|
||||
"integrity": "sha512-fWYdRdg55HSJoRq9k568jJA1lrhg9i2xgfhVIMJbskUmbDpJGHsbv9l41DGhCDXM21F9Kn4kUwdysgxSYBYJUw==",
|
||||
"requires": {
|
||||
"arrify": "^2.0.0",
|
||||
"base64-js": "^1.3.0",
|
||||
"ecdsa-sig-formatter": "^1.0.11",
|
||||
"fast-text-encoding": "^1.0.0",
|
||||
"gaxios": "^2.1.0",
|
||||
"gcp-metadata": "^3.4.0",
|
||||
"gtoken": "^4.1.0",
|
||||
"gaxios": "^3.0.0",
|
||||
"gcp-metadata": "^4.1.0",
|
||||
"gtoken": "^5.0.0",
|
||||
"jws": "^4.0.0",
|
||||
"lru-cache": "^5.0.0"
|
||||
"lru-cache": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"google-p12-pem": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz",
|
||||
"integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==",
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.2.tgz",
|
||||
"integrity": "sha512-tbjzndQvSIHGBLzHnhDs3cL4RBjLbLXc2pYvGH+imGVu5b4RMAttUTdnmW2UH0t11QeBTXZ7wlXPS7hrypO/tg==",
|
||||
"requires": {
|
||||
"node-forge": "^0.9.0"
|
||||
}
|
||||
},
|
||||
"gtoken": {
|
||||
"version": "4.1.4",
|
||||
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz",
|
||||
"integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==",
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.0.3.tgz",
|
||||
"integrity": "sha512-Nyd1wZCMRc2dj/mAD0LlfQLcAO06uKdpKJXvK85SGrF5+5+Bpfil9u/2aw35ltvEHjvl0h5FMKN5knEU+9JrOg==",
|
||||
"requires": {
|
||||
"gaxios": "^2.1.0",
|
||||
"google-p12-pem": "^2.0.0",
|
||||
"gaxios": "^3.0.0",
|
||||
"google-p12-pem": "^3.0.0",
|
||||
"jws": "^4.0.0",
|
||||
"mime": "^2.2.0"
|
||||
}
|
||||
@@ -2198,6 +2115,14 @@
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
|
||||
"integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
|
||||
},
|
||||
"json-bigint": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
|
||||
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
|
||||
"requires": {
|
||||
"bignumber.js": "^9.0.0"
|
||||
}
|
||||
},
|
||||
"jwa": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
|
||||
@@ -2218,37 +2143,22 @@
|
||||
}
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"requires": {
|
||||
"yallist": "^3.0.2"
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"mime": {
|
||||
"version": "2.4.4",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
|
||||
"integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
|
||||
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
|
||||
},
|
||||
"node-forge": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz",
|
||||
"integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ=="
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2265,11 +2175,6 @@
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
|
||||
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2534,9 +2439,9 @@
|
||||
}
|
||||
},
|
||||
"@grpc/grpc-js": {
|
||||
"version": "0.7.9",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.7.9.tgz",
|
||||
"integrity": "sha512-ihn9xWOqubMPBlU77wcYpy7FFamGo5xtsK27EAILL/eoOvGEAq29UOrqRvqYPwWfl2+3laFmGKNR7uCdJhKu4Q==",
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.0.5.tgz",
|
||||
"integrity": "sha512-Hm+xOiqAhcpT9RYM8lc15dbQD7aQurM7ZU8ulmulepiPlN7iwBXXwP3vSBUimoFoApRqz7pSIisXU8pZaCB4og==",
|
||||
"requires": {
|
||||
"semver": "^6.2.0"
|
||||
},
|
||||
@@ -2549,9 +2454,9 @@
|
||||
}
|
||||
},
|
||||
"@grpc/proto-loader": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.4.tgz",
|
||||
"integrity": "sha512-HTM4QpI9B2XFkPz7pjwMyMgZchJ93TVkL3kWPW8GDMDKYxsMnmf4w2TNMJK7+KNiYHS5cJrCEAFlF+AwtXWVPA==",
|
||||
"version": "0.5.5",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.5.tgz",
|
||||
"integrity": "sha512-WwN9jVNdHRQoOBo9FDH7qU+mgfjPc8GygPYms3M+y3fbQLfnCe/Kv/E01t7JRgnrsOHH8euvSbed3mIalXhwqQ==",
|
||||
"requires": {
|
||||
"lodash.camelcase": "^4.3.0",
|
||||
"protobufjs": "^6.8.6"
|
||||
@@ -2733,9 +2638,9 @@
|
||||
}
|
||||
},
|
||||
"@overleaf/o-error": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@overleaf/o-error/-/o-error-2.1.0.tgz",
|
||||
"integrity": "sha512-Zd9sks9LrLw8ErHt/cXeWIkyxWAqNAvNGn7wIjLQJH6TTEEW835PWOhpch+hQwwWsTxWIx/JDj+IpZ3ouw925g=="
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@overleaf/o-error/-/o-error-3.0.0.tgz",
|
||||
"integrity": "sha512-LsM2s6Iy9G97ktPo0ys4VxtI/m3ahc1ZHwjo5XnhXtjeIkkkVAehsrcRRoV/yWepPjymB0oZonhcfojpjYR/tg=="
|
||||
},
|
||||
"@pollyjs/adapter": {
|
||||
"version": "4.2.1",
|
||||
@@ -3138,9 +3043,9 @@
|
||||
}
|
||||
},
|
||||
"@tootallnate/once": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz",
|
||||
"integrity": "sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA=="
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
|
||||
"integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
|
||||
},
|
||||
"@types/angular": {
|
||||
"version": "1.7.2",
|
||||
@@ -3191,9 +3096,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/fs-extra": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.0.tgz",
|
||||
"integrity": "sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==",
|
||||
"version": "8.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.1.tgz",
|
||||
"integrity": "sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w==",
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
@@ -3757,6 +3662,14 @@
|
||||
"integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==",
|
||||
"dev": true
|
||||
},
|
||||
"agent-base": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz",
|
||||
"integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==",
|
||||
"requires": {
|
||||
"debug": "4"
|
||||
}
|
||||
},
|
||||
"agentkeepalive": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz",
|
||||
@@ -6304,12 +6217,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"bunyan": {
|
||||
"version": "1.8.12",
|
||||
"resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz",
|
||||
"integrity": "sha512-dmDUbGHeGcvCDLRFOscZkwx1ZO/aFz3bJOCi5nCgzdhFGPxwK+y5AcDBnqagNGlJZ7lje/l6JUEz9mQcutttdg==",
|
||||
"version": "1.8.14",
|
||||
"resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.14.tgz",
|
||||
"integrity": "sha512-LlahJUxXzZLuw/hetUQJmRgZ1LF6+cr5TPpRj6jf327AsiIq2jhYEH4oqUUkVKTor+9w2BT3oxVwhzE5lw9tcg==",
|
||||
"requires": {
|
||||
"dtrace-provider": "~0.8",
|
||||
"moment": "^2.10.6",
|
||||
"moment": "^2.19.3",
|
||||
"mv": "~2",
|
||||
"safe-json-stringify": "~1"
|
||||
}
|
||||
@@ -6806,6 +6719,11 @@
|
||||
"integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==",
|
||||
"dev": true
|
||||
},
|
||||
"charenc": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
|
||||
"integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
|
||||
},
|
||||
"check-error": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
|
||||
@@ -7942,6 +7860,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"crypt": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
|
||||
"integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
|
||||
},
|
||||
"cryptiles": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz",
|
||||
@@ -8442,7 +8365,7 @@
|
||||
"d64": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/d64/-/d64-1.0.0.tgz",
|
||||
"integrity": "sha512-5eNy3WZziVYnrogqgXhcdEmqcDB2IHurTqLcrgssJsfkMVCUoUaZpK6cJjxxvLV2dUm5SuJMNcYfVGoin9UIRw=="
|
||||
"integrity": "sha1-QAKofoUMv8n52XBrYPymE6MzbpA="
|
||||
},
|
||||
"damerau-levenshtein": {
|
||||
"version": "1.0.6",
|
||||
@@ -9021,14 +8944,6 @@
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"nan": "^2.14.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"nan": {
|
||||
"version": "2.14.0",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
|
||||
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"duplexer": {
|
||||
@@ -12099,11 +12014,11 @@
|
||||
}
|
||||
},
|
||||
"google-gax": {
|
||||
"version": "1.15.2",
|
||||
"resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.2.tgz",
|
||||
"integrity": "sha512-yNNiRf9QxWpZNfQQmSPz3rIDTBDDKnLKY/QEsjCaJyDxttespr6v8WRGgU5KrU/6ZM7QRlgBAYXCkxqHhJp0wA==",
|
||||
"version": "1.15.3",
|
||||
"resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.15.3.tgz",
|
||||
"integrity": "sha512-3JKJCRumNm3x2EksUTw4P1Rad43FTpqrtW9jzpf3xSMYXx+ogaqTM1vGo7VixHB4xkAyATXVIa3OcNSh8H9zsQ==",
|
||||
"requires": {
|
||||
"@grpc/grpc-js": "^0.7.4",
|
||||
"@grpc/grpc-js": "~1.0.3",
|
||||
"@grpc/proto-loader": "^0.5.1",
|
||||
"@types/fs-extra": "^8.0.1",
|
||||
"@types/long": "^4.0.0",
|
||||
@@ -12120,14 +12035,6 @@
|
||||
"walkdir": "^0.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"agent-base": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz",
|
||||
"integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==",
|
||||
"requires": {
|
||||
"debug": "4"
|
||||
}
|
||||
},
|
||||
"arrify": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
|
||||
@@ -12138,19 +12045,6 @@
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
|
||||
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||
},
|
||||
"gaxios": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
|
||||
@@ -12240,29 +12134,6 @@
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||
"requires": {
|
||||
"yallist": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"mime": {
|
||||
"version": "2.4.4",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
|
||||
"integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
|
||||
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
|
||||
},
|
||||
"node-forge": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz",
|
||||
@@ -12272,11 +12143,6 @@
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -12958,6 +12824,16 @@
|
||||
"requires-port": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"http-proxy-agent": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
|
||||
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
|
||||
"requires": {
|
||||
"@tootallnate/once": "1",
|
||||
"agent-base": "6",
|
||||
"debug": "4"
|
||||
}
|
||||
},
|
||||
"http-proxy-middleware": {
|
||||
"version": "0.19.1",
|
||||
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
|
||||
@@ -15203,12 +15079,12 @@
|
||||
"lodash.at": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.at/-/lodash.at-4.6.0.tgz",
|
||||
"integrity": "sha512-GOTh0SEp+Yosnlpjic+8cl2WM9MykorogkGA9xyIFkkObQ3H3kNZqZ+ohuq4K3FrSVo7hMcZBMataJemrxC3BA=="
|
||||
"integrity": "sha1-k83OZk8KGZTqM9181A4jr9EbD/g="
|
||||
},
|
||||
"lodash.camelcase": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
|
||||
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
|
||||
"integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
|
||||
},
|
||||
"lodash.defaults": {
|
||||
"version": "4.2.0",
|
||||
@@ -15238,7 +15114,7 @@
|
||||
"lodash.has": {
|
||||
"version": "4.5.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz",
|
||||
"integrity": "sha512-rnYUdIo6xRCJnQmbVFEwcxF144erlD+M3YcJUVesflU9paQaE8p+fJDcIQrlMYbxoANFL+AB9hZrzSBBk5PL+g=="
|
||||
"integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI="
|
||||
},
|
||||
"lodash.includes": {
|
||||
"version": "4.3.0",
|
||||
@@ -15386,114 +15262,21 @@
|
||||
}
|
||||
},
|
||||
"logger-sharelatex": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/logger-sharelatex/-/logger-sharelatex-1.9.1.tgz",
|
||||
"integrity": "sha512-9s6JQnH/PN+Js2CmI8+J3MQCTNlRzP2Dh4pcekXrV6Jm5J4HzyPi+6d3zfBskZ4NBmaUVw9hC4p5dmdaRmh4mQ==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/logger-sharelatex/-/logger-sharelatex-2.1.1.tgz",
|
||||
"integrity": "sha512-qqSrBqUgHWnStxtTZ/fSsqPxj9Ju9onok7Vfm3bv5MS702jH+hRsCSA9oXOMvOLcWJrZFnhCZaLGeOvXToUaxw==",
|
||||
"requires": {
|
||||
"@google-cloud/logging-bunyan": "^2.0.0",
|
||||
"@overleaf/o-error": "^2.0.0",
|
||||
"bunyan": "1.8.12",
|
||||
"raven": "1.1.3",
|
||||
"request": "2.88.0",
|
||||
"yn": "^3.1.1"
|
||||
"@google-cloud/logging-bunyan": "^3.0.0",
|
||||
"@overleaf/o-error": "^3.0.0",
|
||||
"bunyan": "^1.8.14",
|
||||
"raven": "^2.6.4",
|
||||
"yn": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"aws4": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
|
||||
"integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
|
||||
},
|
||||
"combined-stream": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||
"requires": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||
},
|
||||
"form-data": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
|
||||
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
|
||||
"requires": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.6",
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.43.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
|
||||
"integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.26",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
|
||||
"integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
|
||||
"requires": {
|
||||
"mime-db": "1.43.0"
|
||||
}
|
||||
},
|
||||
"oauth-sign": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
||||
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
||||
},
|
||||
"request": {
|
||||
"version": "2.88.0",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
|
||||
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
|
||||
"requires": {
|
||||
"aws-sign2": "~0.7.0",
|
||||
"aws4": "^1.8.0",
|
||||
"caseless": "~0.12.0",
|
||||
"combined-stream": "~1.0.6",
|
||||
"extend": "~3.0.2",
|
||||
"forever-agent": "~0.6.1",
|
||||
"form-data": "~2.3.2",
|
||||
"har-validator": "~5.1.0",
|
||||
"http-signature": "~1.2.0",
|
||||
"is-typedarray": "~1.0.0",
|
||||
"isstream": "~0.1.2",
|
||||
"json-stringify-safe": "~5.0.1",
|
||||
"mime-types": "~2.1.19",
|
||||
"oauth-sign": "~0.9.0",
|
||||
"performance-now": "^2.1.0",
|
||||
"qs": "~6.5.2",
|
||||
"safe-buffer": "^5.1.2",
|
||||
"tough-cookie": "~2.4.3",
|
||||
"tunnel-agent": "^0.6.0",
|
||||
"uuid": "^3.3.2"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
|
||||
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "2.4.3",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
|
||||
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
|
||||
"requires": {
|
||||
"psl": "^1.1.24",
|
||||
"punycode": "^1.4.1"
|
||||
}
|
||||
},
|
||||
"uuid": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
||||
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
|
||||
"yn": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yn/-/yn-4.0.0.tgz",
|
||||
"integrity": "sha512-huWiiCS4TxKc4SfgmTwW1K7JmXPPAmuXWYy4j9qjQo4+27Kni8mGhAAi1cloRWmBe2EqcLgt3IGqQoRL/MtPgg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -15543,10 +15326,20 @@
|
||||
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
|
||||
"dev": true
|
||||
},
|
||||
"lsmod": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lsmod/-/lsmod-1.0.0.tgz",
|
||||
"integrity": "sha512-Y+6V75r+mGWzWEPr9h6PFmStielICu5JBHLUg18jCsD2VFmEfgHbq/EgnY4inElsUD9eKL9id1qp34w46rSIKQ=="
|
||||
"lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||
"requires": {
|
||||
"yallist": "^3.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"lynx": {
|
||||
"version": "0.1.1",
|
||||
@@ -15650,6 +15443,16 @@
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-0.3.12.tgz",
|
||||
"integrity": "sha512-k4NaW+vS7ytQn6MgJn3fYpQt20/mOgYM5Ft9BYMfQJDz2QT6yEeS9XJ8k2Nw8JTeWK/znPPW2n3UJGzyYEiMoA=="
|
||||
},
|
||||
"md5": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
|
||||
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
|
||||
"requires": {
|
||||
"charenc": "0.0.2",
|
||||
"crypt": "0.0.2",
|
||||
"is-buffer": "~1.1.6"
|
||||
}
|
||||
},
|
||||
"md5.js": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
||||
@@ -15895,8 +15698,7 @@
|
||||
"mime": {
|
||||
"version": "2.4.5",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz",
|
||||
"integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==",
|
||||
"dev": true
|
||||
"integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w=="
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.30.0",
|
||||
@@ -15996,7 +15798,6 @@
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
@@ -16615,7 +16416,7 @@
|
||||
"mv": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
|
||||
"integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==",
|
||||
"integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"mkdirp": "~0.5.1",
|
||||
@@ -16626,7 +16427,7 @@
|
||||
"glob": {
|
||||
"version": "6.0.4",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
|
||||
"integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==",
|
||||
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"inflight": "^1.0.4",
|
||||
@@ -16636,19 +16437,10 @@
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "2.4.5",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
|
||||
"integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==",
|
||||
"integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"glob": "^6.0.1"
|
||||
@@ -16656,6 +16448,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"nan": {
|
||||
"version": "2.14.1",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
|
||||
"integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
|
||||
"optional": true
|
||||
},
|
||||
"nanomatch": {
|
||||
"version": "1.2.9",
|
||||
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
|
||||
@@ -16701,7 +16499,7 @@
|
||||
"ncp": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
|
||||
"integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==",
|
||||
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
|
||||
"optional": true
|
||||
},
|
||||
"needle": {
|
||||
@@ -20477,26 +20275,26 @@
|
||||
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
|
||||
},
|
||||
"raven": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/raven/-/raven-1.1.3.tgz",
|
||||
"integrity": "sha512-RYov4wAaflZasWiCrZuizd3jNXxCOkW1WrXgWsGVb8kRpdHNZ+vPY27R6RhVtqzWp+DG9a5l6iP0QUPK4EgzaQ==",
|
||||
"version": "2.6.4",
|
||||
"resolved": "https://registry.npmjs.org/raven/-/raven-2.6.4.tgz",
|
||||
"integrity": "sha512-6PQdfC4+DQSFncowthLf+B6Hr0JpPsFBgTVYTAOq7tCmx/kR4SXbeawtPch20+3QfUcQDoJBLjWW1ybvZ4kXTw==",
|
||||
"requires": {
|
||||
"cookie": "0.3.1",
|
||||
"json-stringify-safe": "5.0.1",
|
||||
"lsmod": "1.0.0",
|
||||
"stack-trace": "0.0.9",
|
||||
"uuid": "3.0.0"
|
||||
"md5": "^2.2.1",
|
||||
"stack-trace": "0.0.10",
|
||||
"timed-out": "4.0.1",
|
||||
"uuid": "3.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"cookie": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
|
||||
"integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw=="
|
||||
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
|
||||
},
|
||||
"uuid": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.0.tgz",
|
||||
"integrity": "sha512-rqE1LoOVLv3QrZMjb4NkF5UWlkurCfPyItVnFPNKDDGkHw4dQUdE4zMcLqx28+0Kcf3+bnUk4PisaiRJT4aiaQ=="
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
|
||||
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -21818,9 +21616,9 @@
|
||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
|
||||
},
|
||||
"safe-json-stringify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.4.tgz",
|
||||
"integrity": "sha512-CnATcR047GZMrDA6Sitj7A2OdWhhG+cX7FuPv24rgv01/zPOpl/Hr8SKd/3xUppNVjTl0uugXdD0dIPLzSa6YA==",
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz",
|
||||
"integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==",
|
||||
"optional": true
|
||||
},
|
||||
"safe-regex": {
|
||||
@@ -22636,9 +22434,9 @@
|
||||
}
|
||||
},
|
||||
"snakecase-keys": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-3.1.2.tgz",
|
||||
"integrity": "sha512-NrzHj8ctStnd1LYx3+L4buS7yildFum7WAbQQxkhPCNi3Qeqv7hoBne2c9n++HWxDG9Nv23pNEyyLCITZTv24Q==",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-3.2.0.tgz",
|
||||
"integrity": "sha512-WTJ0NhCH/37J+PU3fuz0x5b6TvtWQChTcKPOndWoUy0pteKOe0hrHMzSRsJOWSIP48EQkzUEsgQPmrG3W8pFNQ==",
|
||||
"requires": {
|
||||
"map-obj": "^4.0.0",
|
||||
"to-snake-case": "^1.0.0"
|
||||
@@ -23116,9 +22914,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"stack-trace": {
|
||||
"version": "0.0.9",
|
||||
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz",
|
||||
"integrity": "sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ=="
|
||||
"version": "0.0.10",
|
||||
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
|
||||
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
|
||||
},
|
||||
"standard-as-callback": {
|
||||
"version": "2.0.1",
|
||||
@@ -23833,7 +23631,7 @@
|
||||
"stubs": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz",
|
||||
"integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw=="
|
||||
"integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls="
|
||||
},
|
||||
"stylehacks": {
|
||||
"version": "4.0.3",
|
||||
@@ -24512,8 +24310,7 @@
|
||||
"timed-out": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
|
||||
"integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==",
|
||||
"dev": true
|
||||
"integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA=="
|
||||
},
|
||||
"timekeeper": {
|
||||
"version": "2.2.0",
|
||||
@@ -24570,7 +24367,7 @@
|
||||
"to-no-case": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz",
|
||||
"integrity": "sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg=="
|
||||
"integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo="
|
||||
},
|
||||
"to-object-path": {
|
||||
"version": "0.3.0",
|
||||
@@ -24659,7 +24456,7 @@
|
||||
"to-snake-case": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/to-snake-case/-/to-snake-case-1.0.0.tgz",
|
||||
"integrity": "sha512-joRpzBAk1Bhi2eGEYBjukEWHOe/IvclOkiJl3DtA91jV6NwQ3MwXA4FHYeqk8BNp/D8bmi9tcNbRu/SozP0jbQ==",
|
||||
"integrity": "sha1-znRpE4l5RgGah+Yu366upMYIq4w=",
|
||||
"requires": {
|
||||
"to-space-case": "^1.0.0"
|
||||
}
|
||||
@@ -24667,7 +24464,7 @@
|
||||
"to-space-case": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz",
|
||||
"integrity": "sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA==",
|
||||
"integrity": "sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc=",
|
||||
"requires": {
|
||||
"to-no-case": "^1.0.0"
|
||||
}
|
||||
@@ -24728,7 +24525,7 @@
|
||||
}
|
||||
},
|
||||
"translations-sharelatex": {
|
||||
"version": "git+https://github.com/sharelatex/translations-sharelatex.git#874eabdc4ac599bc601c241f83b4f04b3d77b4e4",
|
||||
"version": "git+https://github.com/sharelatex/translations-sharelatex.git#8f54a92ba9fbdef2ba6cfc530cc6d7110cd18b52",
|
||||
"from": "git+https://github.com/sharelatex/translations-sharelatex.git#master",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
"@babel/core": "^7.9.0",
|
||||
"@babel/preset-env": "^7.9.5",
|
||||
"@babel/preset-react": "^7.9.4",
|
||||
"@overleaf/o-error": "^2.1.0",
|
||||
"@overleaf/o-error": "^3.0.0",
|
||||
"@pollyjs/adapter-node-http": "^4.2.1",
|
||||
"@pollyjs/core": "^4.2.1",
|
||||
"@pollyjs/persister-fs": "^4.2.1",
|
||||
@@ -83,7 +83,7 @@
|
||||
"json2csv": "^4.3.3",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
"lodash": "^4.17.15",
|
||||
"logger-sharelatex": "^1.9.1",
|
||||
"logger-sharelatex": "^2.1.1",
|
||||
"mailchimp-api-v3": "^1.12.0",
|
||||
"marked": "^0.3.5",
|
||||
"method-override": "^2.3.3",
|
||||
|
||||
@@ -3,6 +3,7 @@ const sinon = require('sinon')
|
||||
const { expect } = require('chai')
|
||||
const SandboxedModule = require('sandboxed-module')
|
||||
const Errors = require('../../../../app/src/Features/Errors/Errors')
|
||||
const OError = require('@overleaf/o-error')
|
||||
|
||||
const MODULE_PATH = '../../../../app/src/Features/FileStore/FileStoreHandler.js'
|
||||
|
||||
@@ -283,10 +284,13 @@ describe('FileStoreHandler', function() {
|
||||
})
|
||||
|
||||
it('should wrap the error if there is one', function(done) {
|
||||
const error = 'my error'
|
||||
const error = new Error('my error')
|
||||
this.request.callsArgWith(1, error)
|
||||
this.handler.deleteProject(this.projectId, err => {
|
||||
assert.equal(err.cause, error)
|
||||
expect(OError.getFullStack(err)).to.match(
|
||||
/something went wrong deleting a project in filestore/
|
||||
)
|
||||
expect(OError.getFullStack(err)).to.match(/my error/)
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
@@ -154,5 +154,27 @@ describe('NewsletterManager', function() {
|
||||
`/lists/list_id/members/${this.emailHash}`
|
||||
)
|
||||
})
|
||||
|
||||
it('does not reject on non-fatal error ', async function() {
|
||||
const nonFatalError = new Error('merge fields were invalid')
|
||||
this.mailchimp.patch.rejects(nonFatalError)
|
||||
await expect(
|
||||
this.NewsletterManager.changeEmail(
|
||||
this.user,
|
||||
'overleaf.squirrel@example.com'
|
||||
)
|
||||
).to.be.fulfilled
|
||||
})
|
||||
|
||||
it('rejects on any other error', async function() {
|
||||
const fatalError = new Error('fatal error')
|
||||
this.mailchimp.patch.rejects(fatalError)
|
||||
await expect(
|
||||
this.NewsletterManager.changeEmail(
|
||||
this.user,
|
||||
'overleaf.squirrel@example.com'
|
||||
)
|
||||
).to.be.rejected
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -432,7 +432,7 @@ describe('UserController', function() {
|
||||
describe('when changeEmailAddress yields an error', function() {
|
||||
it('should pass on an error and not send a success status', function(done) {
|
||||
this.req.body.email = this.newEmail.toUpperCase()
|
||||
this.UserUpdater.changeEmailAddress.callsArgWith(2, new Error())
|
||||
this.UserUpdater.changeEmailAddress.callsArgWith(2, new OError())
|
||||
this.HttpErrorHandler.legacyInternal = sinon.spy(
|
||||
(req, res, message, error) => {
|
||||
expect(req).to.exist
|
||||
|
||||
Reference in New Issue
Block a user