mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge pull request #198 from overleaf/jpa-redis-wrapper-rewrite
[misc] bump @overleaf/redis-wrapper to version 2.0.0
This commit is contained in:
commit
18ab1fb1c0
16 changed files with 38 additions and 85 deletions
|
@ -9,7 +9,7 @@ Metrics.event_loop.monitor(logger)
|
||||||
|
|
||||||
const express = require('express')
|
const express = require('express')
|
||||||
const session = require('express-session')
|
const session = require('express-session')
|
||||||
const redis = require('redis-sharelatex')
|
const redis = require('@overleaf/redis-wrapper')
|
||||||
if (Settings.sentry && Settings.sentry.dsn) {
|
if (Settings.sentry && Settings.sentry.dsn) {
|
||||||
logger.initializeErrorReporting(Settings.sentry.dsn)
|
logger.initializeErrorReporting(Settings.sentry.dsn)
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ app.get('/debug/events', function (req, res) {
|
||||||
res.send(`debug mode will log next ${Settings.debugEvents} events`)
|
res.send(`debug mode will log next ${Settings.debugEvents} events`)
|
||||||
})
|
})
|
||||||
|
|
||||||
const rclient = require('redis-sharelatex').createClient(
|
const rclient = require('@overleaf/redis-wrapper').createClient(
|
||||||
Settings.redis.realtime
|
Settings.redis.realtime
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
const async = require('async')
|
const async = require('async')
|
||||||
const Settings = require('settings-sharelatex')
|
const Settings = require('settings-sharelatex')
|
||||||
const logger = require('logger-sharelatex')
|
const logger = require('logger-sharelatex')
|
||||||
const redis = require('redis-sharelatex')
|
const redis = require('@overleaf/redis-wrapper')
|
||||||
const OError = require('@overleaf/o-error')
|
const OError = require('@overleaf/o-error')
|
||||||
const rclient = redis.createClient(Settings.redis.realtime)
|
const rclient = redis.createClient(Settings.redis.realtime)
|
||||||
const Keys = Settings.redis.realtime.key_schema
|
const Keys = Settings.redis.realtime.key_schema
|
||||||
|
|
|
@ -14,7 +14,7 @@ const {
|
||||||
UpdateTooLargeError
|
UpdateTooLargeError
|
||||||
} = require('./Errors')
|
} = require('./Errors')
|
||||||
|
|
||||||
const rclient = require('redis-sharelatex').createClient(
|
const rclient = require('@overleaf/redis-wrapper').createClient(
|
||||||
settings.redis.documentupdater
|
settings.redis.documentupdater
|
||||||
)
|
)
|
||||||
const Keys = settings.redis.documentupdater.key_schema
|
const Keys = settings.redis.documentupdater.key_schema
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const redis = require('redis-sharelatex')
|
const redis = require('@overleaf/redis-wrapper')
|
||||||
const logger = require('logger-sharelatex')
|
const logger = require('logger-sharelatex')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
89
services/real-time/package-lock.json
generated
89
services/real-time/package-lock.json
generated
|
@ -607,9 +607,17 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@overleaf/o-error": {
|
"@overleaf/o-error": {
|
||||||
"version": "3.0.0",
|
"version": "3.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@overleaf/o-error/-/o-error-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@overleaf/o-error/-/o-error-3.1.0.tgz",
|
||||||
"integrity": "sha512-LsM2s6Iy9G97ktPo0ys4VxtI/m3ahc1ZHwjo5XnhXtjeIkkkVAehsrcRRoV/yWepPjymB0oZonhcfojpjYR/tg=="
|
"integrity": "sha512-TWJ80ozJ1LeugGTJyGQSPEuTkZ9LqZD7/ndLE6azKa03SU/mKV/FINcfk8atpVil8iv1hHQwzYZc35klplpMpQ=="
|
||||||
|
},
|
||||||
|
"@overleaf/redis-wrapper": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@overleaf/redis-wrapper/-/redis-wrapper-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-lREuhDPNgmKyOmL1g6onfRzDLWOG/POsE4Vd7ZzLnKDYt9SbOIujtx3CxI2qtQAKBYHf/hfyrbtyX3Ib2yTvYA==",
|
||||||
|
"requires": {
|
||||||
|
"ioredis": "~4.17.3"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"@protobufjs/aspromise": {
|
"@protobufjs/aspromise": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
|
@ -2901,11 +2909,11 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": {
|
"debug": {
|
||||||
"version": "4.1.1",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
|
||||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ms": "^2.1.1"
|
"ms": "2.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ms": {
|
"ms": {
|
||||||
|
@ -3169,7 +3177,8 @@
|
||||||
"lodash": {
|
"lodash": {
|
||||||
"version": "4.17.20",
|
"version": "4.17.20",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
|
||||||
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
|
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"lodash.at": {
|
"lodash.at": {
|
||||||
"version": "4.6.0",
|
"version": "4.6.0",
|
||||||
|
@ -3184,12 +3193,12 @@
|
||||||
"lodash.defaults": {
|
"lodash.defaults": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
|
||||||
"integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="
|
"integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw="
|
||||||
},
|
},
|
||||||
"lodash.flatten": {
|
"lodash.flatten": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
|
||||||
"integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g=="
|
"integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
|
||||||
},
|
},
|
||||||
"lodash.has": {
|
"lodash.has": {
|
||||||
"version": "4.5.2",
|
"version": "4.5.2",
|
||||||
|
@ -4657,11 +4666,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
||||||
},
|
},
|
||||||
"q": {
|
|
||||||
"version": "0.9.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/q/-/q-0.9.2.tgz",
|
|
||||||
"integrity": "sha512-ZOxMuWPMJnsUdYhuQ9glpZwKhB4cm8ubYFy1nNCY8TkSAuZun5fd8jCDTlf2ykWnK8x9HGn1stNtLeG179DebQ=="
|
|
||||||
},
|
|
||||||
"qs": {
|
"qs": {
|
||||||
"version": "6.7.0",
|
"version": "6.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
|
||||||
|
@ -4767,67 +4771,16 @@
|
||||||
"redis-errors": {
|
"redis-errors": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
|
||||||
"integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w=="
|
"integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60="
|
||||||
},
|
},
|
||||||
"redis-parser": {
|
"redis-parser": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
|
||||||
"integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==",
|
"integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"redis-errors": "^1.0.0"
|
"redis-errors": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"redis-sentinel": {
|
|
||||||
"version": "0.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz",
|
|
||||||
"integrity": "sha512-cKtLSUzDsKmsB50J1eIV/SH11DSMiHgsm/gDPRCU5lXz5OyTSuLKWg9oc8d5n74kZwtAyRkfJP0x8vYXvlPjFQ==",
|
|
||||||
"requires": {
|
|
||||||
"q": "0.9.2",
|
|
||||||
"redis": "0.11.x"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"redis": {
|
|
||||||
"version": "0.11.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz",
|
|
||||||
"integrity": "sha512-wkgzIZ9HuxJ6Sul1IW/6FG13Ecv6q8kmdHb5xo09Hu6bgWzz5qsnM06SVMpDxFNbyApaRjy8CwnmVaRMMhAMWg=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"redis-sharelatex": {
|
|
||||||
"version": "1.0.13",
|
|
||||||
"resolved": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-1.0.13.tgz",
|
|
||||||
"integrity": "sha512-sAQNofqfcMlIxzxNJF1qUspJKDM1VuuIOrGZQX9nb5JtcJ5cusa5sc+Oyb51eymPV5mZGWT3u07tKtv4jdXVIg==",
|
|
||||||
"requires": {
|
|
||||||
"async": "^2.5.0",
|
|
||||||
"coffee-script": "1.8.0",
|
|
||||||
"ioredis": "~4.17.3",
|
|
||||||
"redis-sentinel": "0.1.1",
|
|
||||||
"underscore": "1.7.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"async": {
|
|
||||||
"version": "2.6.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
|
|
||||||
"integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
|
|
||||||
"requires": {
|
|
||||||
"lodash": "^4.17.14"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"coffee-script": {
|
|
||||||
"version": "1.8.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz",
|
|
||||||
"integrity": "sha512-EvLTMcu9vR6G1yfnz75yrISvhq1eBPC+pZbQhHzTiC5vXgpYIrArxQc5tB+SYfBi3souVdSZ4AZzYxI72oLXUw==",
|
|
||||||
"requires": {
|
|
||||||
"mkdirp": "~0.3.5"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mkdirp": {
|
|
||||||
"version": "0.3.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
|
|
||||||
"integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"regexpp": {
|
"regexpp": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
|
||||||
|
|
|
@ -19,7 +19,8 @@
|
||||||
"format:fix": "node_modules/.bin/prettier-eslint $PWD'/**/*.js' --write"
|
"format:fix": "node_modules/.bin/prettier-eslint $PWD'/**/*.js' --write"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@overleaf/o-error": "^3.0.0",
|
"@overleaf/o-error": "^3.1.0",
|
||||||
|
"@overleaf/redis-wrapper": "^2.0.0",
|
||||||
"async": "^0.9.0",
|
"async": "^0.9.0",
|
||||||
"base64id": "0.1.0",
|
"base64id": "0.1.0",
|
||||||
"basic-auth-connect": "^1.0.0",
|
"basic-auth-connect": "^1.0.0",
|
||||||
|
@ -30,7 +31,6 @@
|
||||||
"express-session": "^1.17.1",
|
"express-session": "^1.17.1",
|
||||||
"logger-sharelatex": "^2.2.0",
|
"logger-sharelatex": "^2.2.0",
|
||||||
"metrics-sharelatex": "^2.6.2",
|
"metrics-sharelatex": "^2.6.2",
|
||||||
"redis-sharelatex": "^1.0.13",
|
|
||||||
"request": "^2.88.2",
|
"request": "^2.88.2",
|
||||||
"settings-sharelatex": "^1.1.0",
|
"settings-sharelatex": "^1.1.0",
|
||||||
"socket.io": "https://github.com/overleaf/socket.io/archive/0.9.19-overleaf-4.tar.gz",
|
"socket.io": "https://github.com/overleaf/socket.io/archive/0.9.19-overleaf-4.tar.gz",
|
||||||
|
|
|
@ -21,7 +21,7 @@ const RealTimeClient = require('./helpers/RealTimeClient')
|
||||||
const FixturesManager = require('./helpers/FixturesManager')
|
const FixturesManager = require('./helpers/FixturesManager')
|
||||||
|
|
||||||
const settings = require('settings-sharelatex')
|
const settings = require('settings-sharelatex')
|
||||||
const redis = require('redis-sharelatex')
|
const redis = require('@overleaf/redis-wrapper')
|
||||||
const rclient = redis.createClient(settings.redis.documentupdater)
|
const rclient = redis.createClient(settings.redis.documentupdater)
|
||||||
|
|
||||||
const redisSettings = settings.redis
|
const redisSettings = settings.redis
|
||||||
|
|
|
@ -19,7 +19,7 @@ const MockWebServer = require('./helpers/MockWebServer')
|
||||||
const FixturesManager = require('./helpers/FixturesManager')
|
const FixturesManager = require('./helpers/FixturesManager')
|
||||||
|
|
||||||
const settings = require('settings-sharelatex')
|
const settings = require('settings-sharelatex')
|
||||||
const redis = require('redis-sharelatex')
|
const redis = require('@overleaf/redis-wrapper')
|
||||||
const rclient = redis.createClient(settings.redis.pubsub)
|
const rclient = redis.createClient(settings.redis.pubsub)
|
||||||
const rclientRT = redis.createClient(settings.redis.realtime)
|
const rclientRT = redis.createClient(settings.redis.realtime)
|
||||||
const KeysRT = settings.redis.realtime.key_schema
|
const KeysRT = settings.redis.realtime.key_schema
|
||||||
|
|
|
@ -18,7 +18,7 @@ const FixturesManager = require('./helpers/FixturesManager')
|
||||||
const async = require('async')
|
const async = require('async')
|
||||||
|
|
||||||
const settings = require('settings-sharelatex')
|
const settings = require('settings-sharelatex')
|
||||||
const redis = require('redis-sharelatex')
|
const redis = require('@overleaf/redis-wrapper')
|
||||||
const rclient = redis.createClient(settings.redis.pubsub)
|
const rclient = redis.createClient(settings.redis.pubsub)
|
||||||
|
|
||||||
describe('leaveProject', function () {
|
describe('leaveProject', function () {
|
||||||
|
|
|
@ -56,7 +56,7 @@ const FixturesManager = require('./helpers/FixturesManager')
|
||||||
|
|
||||||
const settings = require('settings-sharelatex')
|
const settings = require('settings-sharelatex')
|
||||||
const Keys = settings.redis.documentupdater.key_schema
|
const Keys = settings.redis.documentupdater.key_schema
|
||||||
const redis = require('redis-sharelatex')
|
const redis = require('@overleaf/redis-wrapper')
|
||||||
const rclient = redis.createClient(settings.redis.pubsub)
|
const rclient = redis.createClient(settings.redis.pubsub)
|
||||||
|
|
||||||
function getPendingUpdates(doc_id, cb) {
|
function getPendingUpdates(doc_id, cb) {
|
||||||
|
|
|
@ -16,7 +16,7 @@ const FixturesManager = require('./helpers/FixturesManager')
|
||||||
const async = require('async')
|
const async = require('async')
|
||||||
|
|
||||||
const settings = require('settings-sharelatex')
|
const settings = require('settings-sharelatex')
|
||||||
const redis = require('redis-sharelatex')
|
const redis = require('@overleaf/redis-wrapper')
|
||||||
const rclient = redis.createClient(settings.redis.pubsub)
|
const rclient = redis.createClient(settings.redis.pubsub)
|
||||||
|
|
||||||
describe('PubSubRace', function () {
|
describe('PubSubRace', function () {
|
||||||
|
|
|
@ -22,7 +22,7 @@ const FixturesManager = require('./helpers/FixturesManager')
|
||||||
const async = require('async')
|
const async = require('async')
|
||||||
|
|
||||||
const settings = require('settings-sharelatex')
|
const settings = require('settings-sharelatex')
|
||||||
const redis = require('redis-sharelatex')
|
const redis = require('@overleaf/redis-wrapper')
|
||||||
const rclient = redis.createClient(settings.redis.pubsub)
|
const rclient = redis.createClient(settings.redis.pubsub)
|
||||||
|
|
||||||
describe('receiveUpdate', function () {
|
describe('receiveUpdate', function () {
|
||||||
|
|
|
@ -18,7 +18,7 @@ const async = require('async')
|
||||||
|
|
||||||
const request = require('request')
|
const request = require('request')
|
||||||
const Settings = require('settings-sharelatex')
|
const Settings = require('settings-sharelatex')
|
||||||
const redis = require('redis-sharelatex')
|
const redis = require('@overleaf/redis-wrapper')
|
||||||
const rclient = redis.createClient(Settings.redis.websessions)
|
const rclient = redis.createClient(Settings.redis.websessions)
|
||||||
|
|
||||||
const uid = require('uid-safe').sync
|
const uid = require('uid-safe').sync
|
||||||
|
|
|
@ -59,7 +59,7 @@ describe('ConnectedUsersManager', function () {
|
||||||
requires: {
|
requires: {
|
||||||
'settings-sharelatex': this.settings,
|
'settings-sharelatex': this.settings,
|
||||||
'logger-sharelatex': { log() {} },
|
'logger-sharelatex': { log() {} },
|
||||||
'redis-sharelatex': {
|
'@overleaf/redis-wrapper': {
|
||||||
createClient: () => {
|
createClient: () => {
|
||||||
return this.rClient
|
return this.rClient
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ describe('DocumentUpdaterController', function () {
|
||||||
pubsub: null
|
pubsub: null
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
'redis-sharelatex': (this.redis = {
|
'@overleaf/redis-wrapper': (this.redis = {
|
||||||
createClient: (name) => {
|
createClient: (name) => {
|
||||||
let rclientStub
|
let rclientStub
|
||||||
this.rclient.push((rclientStub = { name }))
|
this.rclient.push((rclientStub = { name }))
|
||||||
|
|
|
@ -47,7 +47,7 @@ describe('DocumentUpdaterManager', function () {
|
||||||
warn: sinon.stub()
|
warn: sinon.stub()
|
||||||
}),
|
}),
|
||||||
request: (this.request = {}),
|
request: (this.request = {}),
|
||||||
'redis-sharelatex': { createClient: () => this.rclient },
|
'@overleaf/redis-wrapper': { createClient: () => this.rclient },
|
||||||
'metrics-sharelatex': (this.Metrics = {
|
'metrics-sharelatex': (this.Metrics = {
|
||||||
summary: sinon.stub(),
|
summary: sinon.stub(),
|
||||||
Timer: (Timer = class Timer {
|
Timer: (Timer = class Timer {
|
||||||
|
|
Loading…
Reference in a new issue