mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge pull request #15241 from overleaf/em-gcp-opentelemetry
Replace the GCP trace agent with OpenTelemetry GitOrigin-RevId: 591410029349e4ef5a39a5b79868e57c7bd089b6
This commit is contained in:
parent
e53f3bb158
commit
5855ba7b49
27 changed files with 212 additions and 861 deletions
|
@ -5,10 +5,11 @@ Wrappers the [prom-client](https://github.com/siimon/prom-client) npm module to
|
||||||
Use:
|
Use:
|
||||||
|
|
||||||
```
|
```
|
||||||
const metrics = require('@overleaf/metrics')
|
// Metrics must be initialized before importing anything else
|
||||||
metrics.initialize('myapp')
|
require('@overleaf/metrics/initialize')
|
||||||
|
|
||||||
const express = require('express')
|
const express = require('express')
|
||||||
|
const metrics = require('@overleaf/metrics')
|
||||||
const app = express()
|
const app = express()
|
||||||
metrics.injectMetricsRoute(app)
|
metrics.injectMetricsRoute(app)
|
||||||
```
|
```
|
||||||
|
@ -24,8 +25,9 @@ app.use(metrics.http.monitor(logger))
|
||||||
The metrics module can be configured through the following environment variables:
|
The metrics module can be configured through the following environment variables:
|
||||||
|
|
||||||
- `DEBUG_METRICS` - enables display of debugging messages to the console.
|
- `DEBUG_METRICS` - enables display of debugging messages to the console.
|
||||||
- `ENABLE_TRACE_AGENT` - enables @google-cloud/trace-agent on Google Cloud
|
- `GCP_OPENTELEMETRY` - enables OpenTelemetry tracing for GCP
|
||||||
- `ENABLE_PROFILE_AGENT` - enables @google-cloud/profiler on Google Cloud
|
- `JAEGER_OPENTELEMETRY` - enables OpenTelemetry tracing for Jaeger (in the dev environment)
|
||||||
|
- `METRICS_APP_NAME` - the app label for metrics and spans
|
||||||
- `METRICS_COMPRESSION_LEVEL` - sets the [compression level](https://www.npmjs.com/package/compression#level) for `/metrics`
|
- `METRICS_COMPRESSION_LEVEL` - sets the [compression level](https://www.npmjs.com/package/compression#level) for `/metrics`
|
||||||
- `STACKDRIVER_LOGGING` - toggles the request logging format
|
- `STACKDRIVER_LOGGING` - toggles the request logging format
|
||||||
- `UV_THREADPOOL_SIZE` - sets the libuv [thread pool](http://docs.libuv.org/en/v1.x/threadpool.html) size
|
- `UV_THREADPOOL_SIZE` - sets the libuv [thread pool](http://docs.libuv.org/en/v1.x/threadpool.html) size
|
||||||
|
|
|
@ -1,72 +1,13 @@
|
||||||
/* eslint-disable no-console */
|
/* eslint-disable no-console */
|
||||||
const os = require('os')
|
|
||||||
const ExpressCompression = require('compression')
|
const ExpressCompression = require('compression')
|
||||||
const promClient = require('prom-client')
|
const promClient = require('prom-client')
|
||||||
const promWrapper = require('./prom_wrapper')
|
const promWrapper = require('./prom_wrapper')
|
||||||
const tracing = require('./tracing')
|
|
||||||
|
|
||||||
const DEFAULT_APP_NAME = 'unknown'
|
|
||||||
|
|
||||||
const { collectDefaultMetrics } = promWrapper
|
|
||||||
const destructors = []
|
const destructors = []
|
||||||
|
|
||||||
require('./uv_threadpool_size')
|
require('./uv_threadpool_size')
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure the metrics module
|
|
||||||
*/
|
|
||||||
function configure(opts = {}) {
|
|
||||||
const appName = opts.appName || DEFAULT_APP_NAME
|
|
||||||
const hostname = os.hostname()
|
|
||||||
promClient.register.setDefaultLabels({ app: appName, host: hostname })
|
|
||||||
if (opts.ttlInMinutes) {
|
|
||||||
promWrapper.ttlInMinutes = opts.ttlInMinutes
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let initialized = false
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure the metrics module and start the default metrics collectors and
|
|
||||||
* profiling agents.
|
|
||||||
*/
|
|
||||||
function initialize(appName, opts = {}) {
|
|
||||||
if (initialized) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
appName = appName || DEFAULT_APP_NAME
|
|
||||||
if (tracing.tracingEnabled()) {
|
|
||||||
tracing.initialize(appName)
|
|
||||||
}
|
|
||||||
configure({ ...opts, appName })
|
|
||||||
collectDefaultMetrics({ timeout: 5000, prefix: '' })
|
|
||||||
promWrapper.setupSweeping()
|
|
||||||
|
|
||||||
console.log(`ENABLE_TRACE_AGENT set to ${process.env.ENABLE_TRACE_AGENT}`)
|
|
||||||
if (process.env.ENABLE_TRACE_AGENT === 'true') {
|
|
||||||
console.log('starting google trace agent')
|
|
||||||
const traceAgent = require('@google-cloud/trace-agent')
|
|
||||||
|
|
||||||
const traceOpts = { ignoreUrls: [/^\/status/, /^\/health_check/] }
|
|
||||||
traceAgent.start(traceOpts)
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(`ENABLE_PROFILE_AGENT set to ${process.env.ENABLE_PROFILE_AGENT}`)
|
|
||||||
if (process.env.ENABLE_PROFILE_AGENT === 'true') {
|
|
||||||
console.log('starting google profile agent')
|
|
||||||
const profiler = require('@google-cloud/profiler')
|
|
||||||
profiler.start({
|
|
||||||
serviceContext: {
|
|
||||||
service: appName,
|
|
||||||
version: process.env.BUILD_VERSION,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
inc('process_startup')
|
|
||||||
initialized = true
|
|
||||||
}
|
|
||||||
|
|
||||||
function registerDestructor(func) {
|
function registerDestructor(func) {
|
||||||
destructors.push(func)
|
destructors.push(func)
|
||||||
}
|
}
|
||||||
|
@ -215,8 +156,6 @@ function close() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.configure = configure
|
|
||||||
module.exports.initialize = initialize
|
|
||||||
module.exports.registerDestructor = registerDestructor
|
module.exports.registerDestructor = registerDestructor
|
||||||
module.exports.injectMetricsRoute = injectMetricsRoute
|
module.exports.injectMetricsRoute = injectMetricsRoute
|
||||||
module.exports.buildPromKey = buildPromKey
|
module.exports.buildPromKey = buildPromKey
|
||||||
|
|
105
libraries/metrics/initialize.js
Normal file
105
libraries/metrics/initialize.js
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
/* eslint-disable no-console */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This module initializes the metrics module. It should be imported once
|
||||||
|
* before any other module to support code instrumentation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const APP_NAME = process.env.METRICS_APP_NAME || 'unknown'
|
||||||
|
const BUILD_VERSION = process.env.BUILD_VERSION
|
||||||
|
const ENABLE_PROFILE_AGENT = process.env.ENABLE_PROFILE_AGENT === 'true'
|
||||||
|
const GCP_OPENTELEMETRY = process.env.GCP_OPENTELEMETRY === 'true'
|
||||||
|
const JAEGER_OPENTELEMETRY = process.env.JAEGER_OPENTELEMETRY === 'true'
|
||||||
|
|
||||||
|
console.log('Initializing metrics')
|
||||||
|
|
||||||
|
if (GCP_OPENTELEMETRY || JAEGER_OPENTELEMETRY) {
|
||||||
|
initializeOpenTelemetryInstrumentation()
|
||||||
|
initializeOpenTelemetryLogging()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ENABLE_PROFILE_AGENT) {
|
||||||
|
initializeProfileAgent()
|
||||||
|
}
|
||||||
|
|
||||||
|
initializePrometheus()
|
||||||
|
initializePromWrapper()
|
||||||
|
recordProcessStart()
|
||||||
|
|
||||||
|
function initializeOpenTelemetryInstrumentation() {
|
||||||
|
console.log('Starting OpenTelemetry instrumentation')
|
||||||
|
const opentelemetry = require('@opentelemetry/sdk-node')
|
||||||
|
const {
|
||||||
|
getNodeAutoInstrumentations,
|
||||||
|
} = require('@opentelemetry/auto-instrumentations-node')
|
||||||
|
const { Resource } = require('@opentelemetry/resources')
|
||||||
|
const {
|
||||||
|
SemanticResourceAttributes,
|
||||||
|
} = require('@opentelemetry/semantic-conventions')
|
||||||
|
|
||||||
|
const resource = new Resource({
|
||||||
|
[SemanticResourceAttributes.SERVICE_NAME]: APP_NAME,
|
||||||
|
[SemanticResourceAttributes.SERVICE_NAMESPACE]: 'Overleaf',
|
||||||
|
'host.type': 'VM',
|
||||||
|
})
|
||||||
|
|
||||||
|
let exporter
|
||||||
|
if (GCP_OPENTELEMETRY) {
|
||||||
|
const GCP = require('@google-cloud/opentelemetry-cloud-trace-exporter')
|
||||||
|
exporter = new GCP.TraceExporter()
|
||||||
|
} else if (JAEGER_OPENTELEMETRY) {
|
||||||
|
const {
|
||||||
|
OTLPTraceExporter,
|
||||||
|
} = require('@opentelemetry/exporter-trace-otlp-http')
|
||||||
|
exporter = new OTLPTraceExporter({
|
||||||
|
url: `http://${process.env.JAEGER_HOST || 'jaeger'}:4318/v1/traces`,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const sdk = new opentelemetry.NodeSDK({
|
||||||
|
traceExporter: exporter,
|
||||||
|
logger: console,
|
||||||
|
instrumentations: [getNodeAutoInstrumentations()],
|
||||||
|
resource,
|
||||||
|
})
|
||||||
|
sdk.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
function initializeOpenTelemetryLogging() {
|
||||||
|
const {
|
||||||
|
diag,
|
||||||
|
DiagConsoleLogger,
|
||||||
|
DiagLogLevel,
|
||||||
|
} = require('@opentelemetry/api')
|
||||||
|
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO)
|
||||||
|
}
|
||||||
|
|
||||||
|
function initializeProfileAgent() {
|
||||||
|
console.log('Starting Google Profile Agent')
|
||||||
|
const profiler = require('@google-cloud/profiler')
|
||||||
|
profiler.start({
|
||||||
|
serviceContext: {
|
||||||
|
service: APP_NAME,
|
||||||
|
version: BUILD_VERSION,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function initializePrometheus() {
|
||||||
|
const os = require('os')
|
||||||
|
const promClient = require('prom-client')
|
||||||
|
promClient.register.setDefaultLabels({ app: APP_NAME, host: os.hostname() })
|
||||||
|
promClient.collectDefaultMetrics({ timeout: 5000, prefix: '' })
|
||||||
|
}
|
||||||
|
|
||||||
|
function initializePromWrapper() {
|
||||||
|
const promWrapper = require('./prom_wrapper')
|
||||||
|
promWrapper.setupSweeping()
|
||||||
|
}
|
||||||
|
|
||||||
|
function recordProcessStart() {
|
||||||
|
const metrics = require('.')
|
||||||
|
metrics.inc('process_startup')
|
||||||
|
}
|
|
@ -9,7 +9,6 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.1.0",
|
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.1.0",
|
||||||
"@google-cloud/profiler": "^6.0.0",
|
"@google-cloud/profiler": "^6.0.0",
|
||||||
"@google-cloud/trace-agent": "^7.1.2",
|
|
||||||
"@opentelemetry/api": "^1.4.1",
|
"@opentelemetry/api": "^1.4.1",
|
||||||
"@opentelemetry/auto-instrumentations-node": "^0.39.1",
|
"@opentelemetry/auto-instrumentations-node": "^0.39.1",
|
||||||
"@opentelemetry/exporter-trace-otlp-http": "^0.41.2",
|
"@opentelemetry/exporter-trace-otlp-http": "^0.41.2",
|
||||||
|
|
|
@ -10,7 +10,8 @@ const sleep = promisify(setTimeout)
|
||||||
|
|
||||||
describe('Metrics module', function () {
|
describe('Metrics module', function () {
|
||||||
before(function () {
|
before(function () {
|
||||||
Metrics.initialize(APP_NAME)
|
process.env.METRICS_APP_NAME = 'test-app'
|
||||||
|
require('../../initialize')
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('at startup', function () {
|
describe('at startup', function () {
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
let tracer
|
|
||||||
|
|
||||||
function tracingEnabled() {
|
|
||||||
return process.env.GCP_OPENTELEMETRY || process.env.JAEGER_OPENTELEMETRY
|
|
||||||
}
|
|
||||||
|
|
||||||
function initialize(appName) {
|
|
||||||
const opentelemetry = require('@opentelemetry/sdk-node')
|
|
||||||
const {
|
|
||||||
getNodeAutoInstrumentations,
|
|
||||||
} = require('@opentelemetry/auto-instrumentations-node')
|
|
||||||
const {
|
|
||||||
diag,
|
|
||||||
DiagConsoleLogger,
|
|
||||||
DiagLogLevel,
|
|
||||||
trace,
|
|
||||||
} = require('@opentelemetry/api')
|
|
||||||
const {
|
|
||||||
OTLPTraceExporter,
|
|
||||||
} = require('@opentelemetry/exporter-trace-otlp-http')
|
|
||||||
const { Resource } = require('@opentelemetry/resources')
|
|
||||||
const {
|
|
||||||
SemanticResourceAttributes,
|
|
||||||
} = require('@opentelemetry/semantic-conventions')
|
|
||||||
const GCP = require('@google-cloud/opentelemetry-cloud-trace-exporter')
|
|
||||||
|
|
||||||
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO)
|
|
||||||
|
|
||||||
const resource = new Resource({
|
|
||||||
[SemanticResourceAttributes.SERVICE_NAME]: appName,
|
|
||||||
[SemanticResourceAttributes.SERVICE_NAMESPACE]: 'Overleaf',
|
|
||||||
'host.type': 'VM',
|
|
||||||
})
|
|
||||||
|
|
||||||
let exporter
|
|
||||||
if (process.env.GCP_OPENTELEMETRY) {
|
|
||||||
exporter = new GCP.TraceExporter()
|
|
||||||
} else if (process.env.JAEGER_OPENTELEMETRY) {
|
|
||||||
exporter = new OTLPTraceExporter({
|
|
||||||
url: `http://${process.env.JAEGER_HOST || 'jaeger'}:4318/v1/traces`,
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const sdk = new opentelemetry.NodeSDK({
|
|
||||||
traceExporter: exporter,
|
|
||||||
logger: console,
|
|
||||||
|
|
||||||
instrumentations: [getNodeAutoInstrumentations()],
|
|
||||||
resource,
|
|
||||||
})
|
|
||||||
|
|
||||||
tracer = trace.getTracer(appName)
|
|
||||||
sdk.start()
|
|
||||||
}
|
|
||||||
|
|
||||||
function getTracer() {
|
|
||||||
return tracer
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = { initialize, getTracer, tracingEnabled }
|
|
688
package-lock.json
generated
688
package-lock.json
generated
|
@ -284,7 +284,6 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.1.0",
|
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.1.0",
|
||||||
"@google-cloud/profiler": "^6.0.0",
|
"@google-cloud/profiler": "^6.0.0",
|
||||||
"@google-cloud/trace-agent": "^7.1.2",
|
|
||||||
"@opentelemetry/api": "^1.4.1",
|
"@opentelemetry/api": "^1.4.1",
|
||||||
"@opentelemetry/auto-instrumentations-node": "^0.39.1",
|
"@opentelemetry/auto-instrumentations-node": "^0.39.1",
|
||||||
"@opentelemetry/exporter-trace-otlp-http": "^0.41.2",
|
"@opentelemetry/exporter-trace-otlp-http": "^0.41.2",
|
||||||
|
@ -4196,9 +4195,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@google-cloud/logging-min/node_modules/uuid": {
|
"node_modules/@google-cloud/logging-min/node_modules/uuid": {
|
||||||
"version": "9.0.0",
|
"version": "9.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
|
||||||
"integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
|
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
|
||||||
|
"funding": [
|
||||||
|
"https://github.com/sponsors/broofa",
|
||||||
|
"https://github.com/sponsors/ctavan"
|
||||||
|
],
|
||||||
"bin": {
|
"bin": {
|
||||||
"uuid": "dist/bin/uuid"
|
"uuid": "dist/bin/uuid"
|
||||||
}
|
}
|
||||||
|
@ -4533,9 +4536,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@google-cloud/profiler/node_modules/gaxios": {
|
"node_modules/@google-cloud/profiler/node_modules/gaxios": {
|
||||||
"version": "6.1.0",
|
"version": "6.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.1.1.tgz",
|
||||||
"integrity": "sha512-EIHuesZxNyIkUGcTQKQPMICyOpDD/bi+LJIJx+NLsSGmnS7N+xCLRX5bi4e9yAu9AlSZdVq+qlyWWVuTh/483w==",
|
"integrity": "sha512-bw8smrX+XlAoo9o1JAksBwX+hi/RG15J+NTSxmNPIclKC3ZVK6C2afwY8OSdRvOK0+ZLecUJYtj2MmjOt3Dm0w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"extend": "^3.0.2",
|
"extend": "^3.0.2",
|
||||||
"https-proxy-agent": "^7.0.1",
|
"https-proxy-agent": "^7.0.1",
|
||||||
|
@ -4547,9 +4550,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@google-cloud/profiler/node_modules/gaxios/node_modules/https-proxy-agent": {
|
"node_modules/@google-cloud/profiler/node_modules/gaxios/node_modules/https-proxy-agent": {
|
||||||
"version": "7.0.1",
|
"version": "7.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
|
||||||
"integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==",
|
"integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"agent-base": "^7.0.2",
|
"agent-base": "^7.0.2",
|
||||||
"debug": "4"
|
"debug": "4"
|
||||||
|
@ -4571,9 +4574,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@google-cloud/profiler/node_modules/google-auth-library": {
|
"node_modules/@google-cloud/profiler/node_modules/google-auth-library": {
|
||||||
"version": "9.0.0",
|
"version": "9.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.1.0.tgz",
|
||||||
"integrity": "sha512-IQGjgQoVUAfOk6khqTVMLvWx26R+yPw9uLyb1MNyMQpdKiKt0Fd9sp4NWoINjyGHR8S3iw12hMTYK7O8J07c6Q==",
|
"integrity": "sha512-1M9HdOcQNPV5BwSXqwwT238MTKodJFBxZ/V2JP397ieOLv4FjQdfYb9SooR7Mb+oUT2IJ92mLJQf804dyx0MJA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"base64-js": "^1.3.0",
|
"base64-js": "^1.3.0",
|
||||||
"ecdsa-sig-formatter": "^1.0.11",
|
"ecdsa-sig-formatter": "^1.0.11",
|
||||||
|
@ -4681,9 +4684,13 @@
|
||||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||||
},
|
},
|
||||||
"node_modules/@google-cloud/profiler/node_modules/uuid": {
|
"node_modules/@google-cloud/profiler/node_modules/uuid": {
|
||||||
"version": "9.0.0",
|
"version": "9.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
|
||||||
"integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
|
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
|
||||||
|
"funding": [
|
||||||
|
"https://github.com/sponsors/broofa",
|
||||||
|
"https://github.com/sponsors/ctavan"
|
||||||
|
],
|
||||||
"bin": {
|
"bin": {
|
||||||
"uuid": "dist/bin/uuid"
|
"uuid": "dist/bin/uuid"
|
||||||
}
|
}
|
||||||
|
@ -4905,201 +4912,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||||
},
|
},
|
||||||
"node_modules/@google-cloud/trace-agent": {
|
|
||||||
"version": "7.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@google-cloud/trace-agent/-/trace-agent-7.1.2.tgz",
|
|
||||||
"integrity": "sha512-LcPKMM80bBvaUG3Nb1R4FPYlGZQX/tDMmwN9bx3ML954W61Pj8D3bjwIleSWO36lIdo0tl+Cz6UHJEOKLSNcvw==",
|
|
||||||
"dependencies": {
|
|
||||||
"@google-cloud/common": "^4.0.0",
|
|
||||||
"@opencensus/propagation-stackdriver": "0.1.0",
|
|
||||||
"builtin-modules": "^3.0.0",
|
|
||||||
"console-log-level": "^1.4.0",
|
|
||||||
"continuation-local-storage": "^3.2.1",
|
|
||||||
"extend": "^3.0.2",
|
|
||||||
"gcp-metadata": "^5.0.0",
|
|
||||||
"google-auth-library": "^8.0.2",
|
|
||||||
"hex2dec": "^1.0.1",
|
|
||||||
"is": "^3.2.0",
|
|
||||||
"methods": "^1.1.1",
|
|
||||||
"require-in-the-middle": "^5.0.0",
|
|
||||||
"semver": "^7.0.0",
|
|
||||||
"shimmer": "^1.2.0",
|
|
||||||
"source-map-support": "^0.5.16",
|
|
||||||
"uuid": "^9.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/@google-cloud/common": {
|
|
||||||
"version": "4.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-4.0.3.tgz",
|
|
||||||
"integrity": "sha512-fUoMo5b8iAKbrYpneIRV3z95AlxVJPrjpevxs4SKoclngWZvTXBSGpNisF5+x5m+oNGve7jfB1e6vNBZBUs7Fw==",
|
|
||||||
"dependencies": {
|
|
||||||
"@google-cloud/projectify": "^3.0.0",
|
|
||||||
"@google-cloud/promisify": "^3.0.0",
|
|
||||||
"arrify": "^2.0.1",
|
|
||||||
"duplexify": "^4.1.1",
|
|
||||||
"ent": "^2.2.0",
|
|
||||||
"extend": "^3.0.2",
|
|
||||||
"google-auth-library": "^8.0.2",
|
|
||||||
"retry-request": "^5.0.0",
|
|
||||||
"teeny-request": "^8.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/@google-cloud/projectify": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/@google-cloud/promisify": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/duplexify": {
|
|
||||||
"version": "4.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
|
|
||||||
"integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
|
|
||||||
"dependencies": {
|
|
||||||
"end-of-stream": "^1.4.1",
|
|
||||||
"inherits": "^2.0.3",
|
|
||||||
"readable-stream": "^3.1.1",
|
|
||||||
"stream-shift": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/gcp-metadata": {
|
|
||||||
"version": "5.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz",
|
|
||||||
"integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==",
|
|
||||||
"dependencies": {
|
|
||||||
"gaxios": "^5.0.0",
|
|
||||||
"json-bigint": "^1.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/google-auth-library": {
|
|
||||||
"version": "8.9.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz",
|
|
||||||
"integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==",
|
|
||||||
"dependencies": {
|
|
||||||
"arrify": "^2.0.0",
|
|
||||||
"base64-js": "^1.3.0",
|
|
||||||
"ecdsa-sig-formatter": "^1.0.11",
|
|
||||||
"fast-text-encoding": "^1.0.0",
|
|
||||||
"gaxios": "^5.0.0",
|
|
||||||
"gcp-metadata": "^5.3.0",
|
|
||||||
"gtoken": "^6.1.0",
|
|
||||||
"jws": "^4.0.0",
|
|
||||||
"lru-cache": "^6.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/google-p12-pem": {
|
|
||||||
"version": "4.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz",
|
|
||||||
"integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"node-forge": "^1.3.1"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"gp12-pem": "build/src/bin/gp12-pem.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/gtoken": {
|
|
||||||
"version": "6.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz",
|
|
||||||
"integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"gaxios": "^5.0.1",
|
|
||||||
"google-p12-pem": "^4.0.0",
|
|
||||||
"jws": "^4.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/lru-cache": {
|
|
||||||
"version": "6.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
|
||||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
|
||||||
"dependencies": {
|
|
||||||
"yallist": "^4.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/retry-request": {
|
|
||||||
"version": "5.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz",
|
|
||||||
"integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"debug": "^4.1.1",
|
|
||||||
"extend": "^3.0.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/semver": {
|
|
||||||
"version": "7.5.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
|
||||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
|
||||||
"dependencies": {
|
|
||||||
"lru-cache": "^6.0.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"semver": "bin/semver.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/teeny-request": {
|
|
||||||
"version": "8.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz",
|
|
||||||
"integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==",
|
|
||||||
"dependencies": {
|
|
||||||
"http-proxy-agent": "^5.0.0",
|
|
||||||
"https-proxy-agent": "^5.0.0",
|
|
||||||
"node-fetch": "^2.6.1",
|
|
||||||
"stream-events": "^1.0.5",
|
|
||||||
"uuid": "^9.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/uuid": {
|
|
||||||
"version": "9.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
|
|
||||||
"integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==",
|
|
||||||
"bin": {
|
|
||||||
"uuid": "dist/bin/uuid"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@google-cloud/trace-agent/node_modules/yallist": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
|
||||||
},
|
|
||||||
"node_modules/@grpc/grpc-js": {
|
"node_modules/@grpc/grpc-js": {
|
||||||
"version": "1.8.21",
|
"version": "1.8.21",
|
||||||
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz",
|
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz",
|
||||||
|
@ -6202,77 +6014,6 @@
|
||||||
"@octokit/openapi-types": "^11.2.0"
|
"@octokit/openapi-types": "^11.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@opencensus/core": {
|
|
||||||
"version": "0.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.1.0.tgz",
|
|
||||||
"integrity": "sha512-Bdbi5vi44a1fwyHNyKh6bwzuFZJeZJPhzdwogk/Kw5juoEeRGPworK1sgtB3loeR8cqLyi5us0mz9h0xqINiSQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"continuation-local-storage": "^3.2.1",
|
|
||||||
"log-driver": "^1.2.7",
|
|
||||||
"semver": "^7.0.0",
|
|
||||||
"shimmer": "^1.2.0",
|
|
||||||
"uuid": "^8.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@opencensus/core/node_modules/lru-cache": {
|
|
||||||
"version": "6.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
|
||||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
|
||||||
"dependencies": {
|
|
||||||
"yallist": "^4.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@opencensus/core/node_modules/semver": {
|
|
||||||
"version": "7.5.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
|
||||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
|
||||||
"dependencies": {
|
|
||||||
"lru-cache": "^6.0.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"semver": "bin/semver.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@opencensus/core/node_modules/uuid": {
|
|
||||||
"version": "8.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
|
||||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
|
|
||||||
"bin": {
|
|
||||||
"uuid": "dist/bin/uuid"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@opencensus/core/node_modules/yallist": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
|
||||||
},
|
|
||||||
"node_modules/@opencensus/propagation-stackdriver": {
|
|
||||||
"version": "0.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@opencensus/propagation-stackdriver/-/propagation-stackdriver-0.1.0.tgz",
|
|
||||||
"integrity": "sha512-YLklu8jnnYKaJ8gUFz3rM0FVdsWXEJAMLzeeU4JRac6LI34raENy4kvRezZtNEFS5KthaJUsYg04sPc/Ag0w4w==",
|
|
||||||
"dependencies": {
|
|
||||||
"@opencensus/core": "^0.1.0",
|
|
||||||
"hex2dec": "^1.0.1",
|
|
||||||
"uuid": "^8.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@opencensus/propagation-stackdriver/node_modules/uuid": {
|
|
||||||
"version": "8.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
|
||||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
|
|
||||||
"bin": {
|
|
||||||
"uuid": "dist/bin/uuid"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@opentelemetry/api": {
|
"node_modules/@opentelemetry/api": {
|
||||||
"version": "1.4.1",
|
"version": "1.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz",
|
||||||
|
@ -17115,9 +16856,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/console-log-level": {
|
"node_modules/@types/console-log-level": {
|
||||||
"version": "1.4.2",
|
"version": "1.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/console-log-level/-/console-log-level-1.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/console-log-level/-/console-log-level-1.4.3.tgz",
|
||||||
"integrity": "sha512-TnhDAntcJthcCMrR3OAKAUjgHyQgoms1yaBJepGv+BtXi8PLf8aX2L/NMCfofRTpVqW0bLklpGTsuqmUSCR2Uw=="
|
"integrity": "sha512-B6Mzad6H4RugduMX84ehFVvGM/JRAd9lZQk4a6dztB4+zcIUehIjKrbWH/nHO2+0wwx05rgyqjXBvOjAv0uL6A=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/content-disposition": {
|
"node_modules/@types/content-disposition": {
|
||||||
"version": "0.5.5",
|
"version": "0.5.5",
|
||||||
|
@ -19046,26 +18787,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
|
||||||
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
|
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
|
||||||
},
|
},
|
||||||
"node_modules/async-listener": {
|
|
||||||
"version": "0.6.10",
|
|
||||||
"resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz",
|
|
||||||
"integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==",
|
|
||||||
"dependencies": {
|
|
||||||
"semver": "^5.3.0",
|
|
||||||
"shimmer": "^1.1.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "<=0.11.8 || >0.11.10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/async-listener/node_modules/semver": {
|
|
||||||
"version": "5.7.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
|
|
||||||
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
|
|
||||||
"bin": {
|
|
||||||
"semver": "bin/semver"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/async-retry": {
|
"node_modules/async-retry": {
|
||||||
"version": "1.3.3",
|
"version": "1.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
|
||||||
|
@ -20189,17 +19910,6 @@
|
||||||
"node": ">= 0.10.x"
|
"node": ">= 0.10.x"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/builtin-modules": {
|
|
||||||
"version": "3.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
|
|
||||||
"integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/builtins": {
|
"node_modules/builtins": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/builtins/-/builtins-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/builtins/-/builtins-4.1.0.tgz",
|
||||||
|
@ -21575,15 +21285,6 @@
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/continuation-local-storage": {
|
|
||||||
"version": "3.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz",
|
|
||||||
"integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==",
|
|
||||||
"dependencies": {
|
|
||||||
"async-listener": "^0.6.0",
|
|
||||||
"emitter-listener": "^1.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/convert-source-map": {
|
"node_modules/convert-source-map": {
|
||||||
"version": "1.8.0",
|
"version": "1.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
|
||||||
|
@ -24185,14 +23886,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz",
|
||||||
"integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw=="
|
"integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw=="
|
||||||
},
|
},
|
||||||
"node_modules/emitter-listener": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"shimmer": "^1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/emoji-regex": {
|
"node_modules/emoji-regex": {
|
||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
|
@ -28416,11 +28109,6 @@
|
||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/hex2dec": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/hex2dec/-/hex2dec-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-Yu+q/XWr2fFQ11tHxPq4p4EiNkb2y+lAacJNhAdRXVfRIcDH6gi7htWFnnlIzvqHMHoWeIsfXlNAjZInpAOJDA=="
|
|
||||||
},
|
|
||||||
"node_modules/hexer": {
|
"node_modules/hexer": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/hexer/-/hexer-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/hexer/-/hexer-1.5.0.tgz",
|
||||||
|
@ -31653,14 +31341,6 @@
|
||||||
"uni-global": "^1.0.0"
|
"uni-global": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/log-driver": {
|
|
||||||
"version": "1.2.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
|
|
||||||
"integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.8.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/log-symbols": {
|
"node_modules/log-symbols": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
||||||
|
@ -36941,16 +36621,6 @@
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/require-in-the-middle": {
|
|
||||||
"version": "5.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.1.0.tgz",
|
|
||||||
"integrity": "sha512-M2rLKVupQfJ5lf9OvqFGIT+9iVLnTmjgbOmpil12hiSQNn5zJTKGPoIisETNjfK+09vP3rpm1zJajmErpr2sEQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"debug": "^4.1.1",
|
|
||||||
"module-details-from-path": "^1.0.3",
|
|
||||||
"resolve": "^1.12.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/require-like": {
|
"node_modules/require-like": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz",
|
||||||
|
@ -42227,7 +41897,6 @@
|
||||||
"@google-cloud/bigquery": "^5.6.0",
|
"@google-cloud/bigquery": "^5.6.0",
|
||||||
"@overleaf/fetch-utils": "*",
|
"@overleaf/fetch-utils": "*",
|
||||||
"@overleaf/logger": "*",
|
"@overleaf/logger": "*",
|
||||||
"@overleaf/metrics": "*",
|
|
||||||
"@overleaf/o-error": "*",
|
"@overleaf/o-error": "*",
|
||||||
"@overleaf/settings": "*",
|
"@overleaf/settings": "*",
|
||||||
"bunyan": "^1.8.15",
|
"bunyan": "^1.8.15",
|
||||||
|
@ -48203,9 +47872,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
"version": "9.0.0",
|
"version": "9.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
|
||||||
"integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg=="
|
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
|
||||||
},
|
},
|
||||||
"yallist": {
|
"yallist": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
|
@ -48329,9 +47998,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gaxios": {
|
"gaxios": {
|
||||||
"version": "6.1.0",
|
"version": "6.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.1.1.tgz",
|
||||||
"integrity": "sha512-EIHuesZxNyIkUGcTQKQPMICyOpDD/bi+LJIJx+NLsSGmnS7N+xCLRX5bi4e9yAu9AlSZdVq+qlyWWVuTh/483w==",
|
"integrity": "sha512-bw8smrX+XlAoo9o1JAksBwX+hi/RG15J+NTSxmNPIclKC3ZVK6C2afwY8OSdRvOK0+ZLecUJYtj2MmjOt3Dm0w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"extend": "^3.0.2",
|
"extend": "^3.0.2",
|
||||||
"https-proxy-agent": "^7.0.1",
|
"https-proxy-agent": "^7.0.1",
|
||||||
|
@ -48340,9 +48009,9 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"https-proxy-agent": {
|
"https-proxy-agent": {
|
||||||
"version": "7.0.1",
|
"version": "7.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
|
||||||
"integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==",
|
"integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"agent-base": "^7.0.2",
|
"agent-base": "^7.0.2",
|
||||||
"debug": "4"
|
"debug": "4"
|
||||||
|
@ -48360,9 +48029,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"google-auth-library": {
|
"google-auth-library": {
|
||||||
"version": "9.0.0",
|
"version": "9.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.1.0.tgz",
|
||||||
"integrity": "sha512-IQGjgQoVUAfOk6khqTVMLvWx26R+yPw9uLyb1MNyMQpdKiKt0Fd9sp4NWoINjyGHR8S3iw12hMTYK7O8J07c6Q==",
|
"integrity": "sha512-1M9HdOcQNPV5BwSXqwwT238MTKodJFBxZ/V2JP397ieOLv4FjQdfYb9SooR7Mb+oUT2IJ92mLJQf804dyx0MJA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"base64-js": "^1.3.0",
|
"base64-js": "^1.3.0",
|
||||||
"ecdsa-sig-formatter": "^1.0.11",
|
"ecdsa-sig-formatter": "^1.0.11",
|
||||||
|
@ -48438,9 +48107,9 @@
|
||||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||||
},
|
},
|
||||||
"uuid": {
|
"uuid": {
|
||||||
"version": "9.0.0",
|
"version": "9.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
|
||||||
"integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg=="
|
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
|
||||||
},
|
},
|
||||||
"webidl-conversions": {
|
"webidl-conversions": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
|
@ -48614,158 +48283,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@google-cloud/trace-agent": {
|
|
||||||
"version": "7.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/@google-cloud/trace-agent/-/trace-agent-7.1.2.tgz",
|
|
||||||
"integrity": "sha512-LcPKMM80bBvaUG3Nb1R4FPYlGZQX/tDMmwN9bx3ML954W61Pj8D3bjwIleSWO36lIdo0tl+Cz6UHJEOKLSNcvw==",
|
|
||||||
"requires": {
|
|
||||||
"@google-cloud/common": "^4.0.0",
|
|
||||||
"@opencensus/propagation-stackdriver": "0.1.0",
|
|
||||||
"builtin-modules": "^3.0.0",
|
|
||||||
"console-log-level": "^1.4.0",
|
|
||||||
"continuation-local-storage": "^3.2.1",
|
|
||||||
"extend": "^3.0.2",
|
|
||||||
"gcp-metadata": "^5.0.0",
|
|
||||||
"google-auth-library": "^8.0.2",
|
|
||||||
"hex2dec": "^1.0.1",
|
|
||||||
"is": "^3.2.0",
|
|
||||||
"methods": "^1.1.1",
|
|
||||||
"require-in-the-middle": "^5.0.0",
|
|
||||||
"semver": "^7.0.0",
|
|
||||||
"shimmer": "^1.2.0",
|
|
||||||
"source-map-support": "^0.5.16",
|
|
||||||
"uuid": "^9.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@google-cloud/common": {
|
|
||||||
"version": "4.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-4.0.3.tgz",
|
|
||||||
"integrity": "sha512-fUoMo5b8iAKbrYpneIRV3z95AlxVJPrjpevxs4SKoclngWZvTXBSGpNisF5+x5m+oNGve7jfB1e6vNBZBUs7Fw==",
|
|
||||||
"requires": {
|
|
||||||
"@google-cloud/projectify": "^3.0.0",
|
|
||||||
"@google-cloud/promisify": "^3.0.0",
|
|
||||||
"arrify": "^2.0.1",
|
|
||||||
"duplexify": "^4.1.1",
|
|
||||||
"ent": "^2.2.0",
|
|
||||||
"extend": "^3.0.2",
|
|
||||||
"google-auth-library": "^8.0.2",
|
|
||||||
"retry-request": "^5.0.0",
|
|
||||||
"teeny-request": "^8.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@google-cloud/projectify": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA=="
|
|
||||||
},
|
|
||||||
"@google-cloud/promisify": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA=="
|
|
||||||
},
|
|
||||||
"duplexify": {
|
|
||||||
"version": "4.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz",
|
|
||||||
"integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
|
|
||||||
"requires": {
|
|
||||||
"end-of-stream": "^1.4.1",
|
|
||||||
"inherits": "^2.0.3",
|
|
||||||
"readable-stream": "^3.1.1",
|
|
||||||
"stream-shift": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gcp-metadata": {
|
|
||||||
"version": "5.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz",
|
|
||||||
"integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==",
|
|
||||||
"requires": {
|
|
||||||
"gaxios": "^5.0.0",
|
|
||||||
"json-bigint": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"google-auth-library": {
|
|
||||||
"version": "8.9.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz",
|
|
||||||
"integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==",
|
|
||||||
"requires": {
|
|
||||||
"arrify": "^2.0.0",
|
|
||||||
"base64-js": "^1.3.0",
|
|
||||||
"ecdsa-sig-formatter": "^1.0.11",
|
|
||||||
"fast-text-encoding": "^1.0.0",
|
|
||||||
"gaxios": "^5.0.0",
|
|
||||||
"gcp-metadata": "^5.3.0",
|
|
||||||
"gtoken": "^6.1.0",
|
|
||||||
"jws": "^4.0.0",
|
|
||||||
"lru-cache": "^6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"google-p12-pem": {
|
|
||||||
"version": "4.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz",
|
|
||||||
"integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==",
|
|
||||||
"requires": {
|
|
||||||
"node-forge": "^1.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gtoken": {
|
|
||||||
"version": "6.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz",
|
|
||||||
"integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==",
|
|
||||||
"requires": {
|
|
||||||
"gaxios": "^5.0.1",
|
|
||||||
"google-p12-pem": "^4.0.0",
|
|
||||||
"jws": "^4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lru-cache": {
|
|
||||||
"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": "^4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"retry-request": {
|
|
||||||
"version": "5.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz",
|
|
||||||
"integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==",
|
|
||||||
"requires": {
|
|
||||||
"debug": "^4.1.1",
|
|
||||||
"extend": "^3.0.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"semver": {
|
|
||||||
"version": "7.5.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
|
||||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
|
||||||
"requires": {
|
|
||||||
"lru-cache": "^6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"teeny-request": {
|
|
||||||
"version": "8.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz",
|
|
||||||
"integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==",
|
|
||||||
"requires": {
|
|
||||||
"http-proxy-agent": "^5.0.0",
|
|
||||||
"https-proxy-agent": "^5.0.0",
|
|
||||||
"node-fetch": "^2.6.1",
|
|
||||||
"stream-events": "^1.0.5",
|
|
||||||
"uuid": "^9.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"uuid": {
|
|
||||||
"version": "9.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
|
|
||||||
"integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg=="
|
|
||||||
},
|
|
||||||
"yallist": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@grpc/grpc-js": {
|
"@grpc/grpc-js": {
|
||||||
"version": "1.8.21",
|
"version": "1.8.21",
|
||||||
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz",
|
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz",
|
||||||
|
@ -49678,63 +49195,6 @@
|
||||||
"@octokit/openapi-types": "^11.2.0"
|
"@octokit/openapi-types": "^11.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@opencensus/core": {
|
|
||||||
"version": "0.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.1.0.tgz",
|
|
||||||
"integrity": "sha512-Bdbi5vi44a1fwyHNyKh6bwzuFZJeZJPhzdwogk/Kw5juoEeRGPworK1sgtB3loeR8cqLyi5us0mz9h0xqINiSQ==",
|
|
||||||
"requires": {
|
|
||||||
"continuation-local-storage": "^3.2.1",
|
|
||||||
"log-driver": "^1.2.7",
|
|
||||||
"semver": "^7.0.0",
|
|
||||||
"shimmer": "^1.2.0",
|
|
||||||
"uuid": "^8.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"lru-cache": {
|
|
||||||
"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": "^4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"semver": {
|
|
||||||
"version": "7.5.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
|
||||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
|
||||||
"requires": {
|
|
||||||
"lru-cache": "^6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"uuid": {
|
|
||||||
"version": "8.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
|
||||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
|
|
||||||
},
|
|
||||||
"yallist": {
|
|
||||||
"version": "4.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@opencensus/propagation-stackdriver": {
|
|
||||||
"version": "0.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@opencensus/propagation-stackdriver/-/propagation-stackdriver-0.1.0.tgz",
|
|
||||||
"integrity": "sha512-YLklu8jnnYKaJ8gUFz3rM0FVdsWXEJAMLzeeU4JRac6LI34raENy4kvRezZtNEFS5KthaJUsYg04sPc/Ag0w4w==",
|
|
||||||
"requires": {
|
|
||||||
"@opencensus/core": "^0.1.0",
|
|
||||||
"hex2dec": "^1.0.1",
|
|
||||||
"uuid": "^8.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"uuid": {
|
|
||||||
"version": "8.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
|
||||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@opentelemetry/api": {
|
"@opentelemetry/api": {
|
||||||
"version": "1.4.1",
|
"version": "1.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz",
|
||||||
|
@ -50897,7 +50357,6 @@
|
||||||
"@google-cloud/bigquery": "^5.6.0",
|
"@google-cloud/bigquery": "^5.6.0",
|
||||||
"@overleaf/fetch-utils": "*",
|
"@overleaf/fetch-utils": "*",
|
||||||
"@overleaf/logger": "*",
|
"@overleaf/logger": "*",
|
||||||
"@overleaf/metrics": "*",
|
|
||||||
"@overleaf/o-error": "*",
|
"@overleaf/o-error": "*",
|
||||||
"@overleaf/settings": "*",
|
"@overleaf/settings": "*",
|
||||||
"bunyan": "^1.8.15",
|
"bunyan": "^1.8.15",
|
||||||
|
@ -51477,7 +50936,6 @@
|
||||||
"requires": {
|
"requires": {
|
||||||
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.1.0",
|
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.1.0",
|
||||||
"@google-cloud/profiler": "^6.0.0",
|
"@google-cloud/profiler": "^6.0.0",
|
||||||
"@google-cloud/trace-agent": "^7.1.2",
|
|
||||||
"@opentelemetry/api": "^1.4.1",
|
"@opentelemetry/api": "^1.4.1",
|
||||||
"@opentelemetry/auto-instrumentations-node": "^0.39.1",
|
"@opentelemetry/auto-instrumentations-node": "^0.39.1",
|
||||||
"@opentelemetry/exporter-trace-otlp-http": "^0.41.2",
|
"@opentelemetry/exporter-trace-otlp-http": "^0.41.2",
|
||||||
|
@ -59687,9 +59145,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/console-log-level": {
|
"@types/console-log-level": {
|
||||||
"version": "1.4.2",
|
"version": "1.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/console-log-level/-/console-log-level-1.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/console-log-level/-/console-log-level-1.4.3.tgz",
|
||||||
"integrity": "sha512-TnhDAntcJthcCMrR3OAKAUjgHyQgoms1yaBJepGv+BtXi8PLf8aX2L/NMCfofRTpVqW0bLklpGTsuqmUSCR2Uw=="
|
"integrity": "sha512-B6Mzad6H4RugduMX84ehFVvGM/JRAd9lZQk4a6dztB4+zcIUehIjKrbWH/nHO2+0wwx05rgyqjXBvOjAv0uL6A=="
|
||||||
},
|
},
|
||||||
"@types/content-disposition": {
|
"@types/content-disposition": {
|
||||||
"version": "0.5.5",
|
"version": "0.5.5",
|
||||||
|
@ -61378,22 +60836,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
|
||||||
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
|
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
|
||||||
},
|
},
|
||||||
"async-listener": {
|
|
||||||
"version": "0.6.10",
|
|
||||||
"resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz",
|
|
||||||
"integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==",
|
|
||||||
"requires": {
|
|
||||||
"semver": "^5.3.0",
|
|
||||||
"shimmer": "^1.1.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"semver": {
|
|
||||||
"version": "5.7.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
|
|
||||||
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"async-retry": {
|
"async-retry": {
|
||||||
"version": "1.3.3",
|
"version": "1.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
|
||||||
|
@ -62256,11 +61698,6 @@
|
||||||
"xtend": "^4.0.0"
|
"xtend": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"builtin-modules": {
|
|
||||||
"version": "3.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
|
|
||||||
"integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw=="
|
|
||||||
},
|
|
||||||
"builtins": {
|
"builtins": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/builtins/-/builtins-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/builtins/-/builtins-4.1.0.tgz",
|
||||||
|
@ -63327,15 +62764,6 @@
|
||||||
"qs": "^6.9.4"
|
"qs": "^6.9.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"continuation-local-storage": {
|
|
||||||
"version": "3.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz",
|
|
||||||
"integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==",
|
|
||||||
"requires": {
|
|
||||||
"async-listener": "^0.6.0",
|
|
||||||
"emitter-listener": "^1.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"convert-source-map": {
|
"convert-source-map": {
|
||||||
"version": "1.8.0",
|
"version": "1.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
|
||||||
|
@ -65247,14 +64675,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz",
|
||||||
"integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw=="
|
"integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw=="
|
||||||
},
|
},
|
||||||
"emitter-listener": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==",
|
|
||||||
"requires": {
|
|
||||||
"shimmer": "^1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"emoji-regex": {
|
"emoji-regex": {
|
||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||||
|
@ -68466,11 +67886,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hex2dec": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/hex2dec/-/hex2dec-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-Yu+q/XWr2fFQ11tHxPq4p4EiNkb2y+lAacJNhAdRXVfRIcDH6gi7htWFnnlIzvqHMHoWeIsfXlNAjZInpAOJDA=="
|
|
||||||
},
|
|
||||||
"hexer": {
|
"hexer": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/hexer/-/hexer-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/hexer/-/hexer-1.5.0.tgz",
|
||||||
|
@ -70974,11 +70389,6 @@
|
||||||
"uni-global": "^1.0.0"
|
"uni-global": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"log-driver": {
|
|
||||||
"version": "1.2.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
|
|
||||||
"integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg=="
|
|
||||||
},
|
|
||||||
"log-symbols": {
|
"log-symbols": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
||||||
|
@ -75204,16 +74614,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||||
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
|
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
|
||||||
},
|
},
|
||||||
"require-in-the-middle": {
|
|
||||||
"version": "5.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.1.0.tgz",
|
|
||||||
"integrity": "sha512-M2rLKVupQfJ5lf9OvqFGIT+9iVLnTmjgbOmpil12hiSQNn5zJTKGPoIisETNjfK+09vP3rpm1zJajmErpr2sEQ==",
|
|
||||||
"requires": {
|
|
||||||
"debug": "^4.1.1",
|
|
||||||
"module-details-from-path": "^1.0.3",
|
|
||||||
"resolve": "^1.12.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"require-like": {
|
"require-like": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz",
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
// Metrics must be initialized before importing anything else
|
||||||
|
import '@overleaf/metrics/initialize.js'
|
||||||
|
|
||||||
import logger from '@overleaf/logger'
|
import logger from '@overleaf/logger'
|
||||||
import settings from '@overleaf/settings'
|
import settings from '@overleaf/settings'
|
||||||
import { mongoClient } from './app/js/mongodb.js'
|
import { mongoClient } from './app/js/mongodb.js'
|
||||||
|
|
|
@ -9,7 +9,6 @@ import * as messagesController from './Features/Messages/MessageHttpController.j
|
||||||
|
|
||||||
const __dirname = fileURLToPath(new URL('.', import.meta.url))
|
const __dirname = fileURLToPath(new URL('.', import.meta.url))
|
||||||
|
|
||||||
metrics.initialize('chat')
|
|
||||||
logger.initialize('chat')
|
logger.initialize('chat')
|
||||||
metrics.open_sockets.monitor()
|
metrics.open_sockets.monitor()
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
const Metrics = require('@overleaf/metrics')
|
// Metrics must be initialized before importing anything else
|
||||||
Metrics.initialize('clsi')
|
require('@overleaf/metrics/initialize')
|
||||||
|
|
||||||
const CompileController = require('./app/js/CompileController')
|
const CompileController = require('./app/js/CompileController')
|
||||||
const ContentController = require('./app/js/ContentController')
|
const ContentController = require('./app/js/ContentController')
|
||||||
|
@ -9,6 +9,7 @@ logger.initialize('clsi')
|
||||||
if (Settings.sentry.dsn != null) {
|
if (Settings.sentry.dsn != null) {
|
||||||
logger.initializeErrorReporting(Settings.sentry.dsn)
|
logger.initializeErrorReporting(Settings.sentry.dsn)
|
||||||
}
|
}
|
||||||
|
const Metrics = require('@overleaf/metrics')
|
||||||
|
|
||||||
const smokeTest = require('./test/smoke/js/SmokeTests')
|
const smokeTest = require('./test/smoke/js/SmokeTests')
|
||||||
const ContentTypeMapper = require('./app/js/ContentTypeMapper')
|
const ContentTypeMapper = require('./app/js/ContentTypeMapper')
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
// Metrics must be initialized before importing anything else
|
||||||
|
import '@overleaf/metrics/initialize.js'
|
||||||
|
|
||||||
import logger from '@overleaf/logger'
|
import logger from '@overleaf/logger'
|
||||||
import Settings from '@overleaf/settings'
|
import Settings from '@overleaf/settings'
|
||||||
import { mongoClient } from './app/js/mongodb.js'
|
import { mongoClient } from './app/js/mongodb.js'
|
||||||
|
|
|
@ -5,7 +5,6 @@ import bodyParser from 'body-parser'
|
||||||
import * as HttpController from './HttpController.js'
|
import * as HttpController from './HttpController.js'
|
||||||
import * as Errors from './Errors.js'
|
import * as Errors from './Errors.js'
|
||||||
|
|
||||||
Metrics.initialize('contacts')
|
|
||||||
logger.initialize('contacts')
|
logger.initialize('contacts')
|
||||||
Metrics.event_loop?.monitor(logger)
|
Metrics.event_loop?.monitor(logger)
|
||||||
Metrics.open_sockets.monitor()
|
Metrics.open_sockets.monitor()
|
||||||
|
|
|
@ -1,12 +1,8 @@
|
||||||
/*
|
// Metrics must be initialized before importing anything else
|
||||||
* decaffeinate suggestions:
|
require('@overleaf/metrics/initialize')
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* DS207: Consider shorter variations of null checks
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
const Events = require('events')
|
const Events = require('events')
|
||||||
const Metrics = require('@overleaf/metrics')
|
const Metrics = require('@overleaf/metrics')
|
||||||
Metrics.initialize('docstore')
|
|
||||||
const Settings = require('@overleaf/settings')
|
const Settings = require('@overleaf/settings')
|
||||||
const logger = require('@overleaf/logger')
|
const logger = require('@overleaf/logger')
|
||||||
const express = require('express')
|
const express = require('express')
|
||||||
|
@ -36,18 +32,18 @@ app.use(Metrics.http.monitor(logger))
|
||||||
Metrics.injectMetricsRoute(app)
|
Metrics.injectMetricsRoute(app)
|
||||||
|
|
||||||
app.param('project_id', function (req, res, next, projectId) {
|
app.param('project_id', function (req, res, next, projectId) {
|
||||||
if (projectId != null ? projectId.match(/^[0-9a-f]{24}$/) : undefined) {
|
if (projectId?.match(/^[0-9a-f]{24}$/)) {
|
||||||
return next()
|
next()
|
||||||
} else {
|
} else {
|
||||||
return next(new Error('invalid project id'))
|
next(new Error('invalid project id'))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
app.param('doc_id', function (req, res, next, docId) {
|
app.param('doc_id', function (req, res, next, docId) {
|
||||||
if (docId != null ? docId.match(/^[0-9a-f]{24}$/) : undefined) {
|
if (docId?.match(/^[0-9a-f]{24}$/)) {
|
||||||
return next()
|
next()
|
||||||
} else {
|
} else {
|
||||||
return next(new Error('invalid doc id'))
|
next(new Error('invalid doc id'))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -93,13 +89,13 @@ app.use(handleValidationErrors())
|
||||||
app.use(function (error, req, res, next) {
|
app.use(function (error, req, res, next) {
|
||||||
logger.error({ err: error, req }, 'request errored')
|
logger.error({ err: error, req }, 'request errored')
|
||||||
if (error instanceof Errors.NotFoundError) {
|
if (error instanceof Errors.NotFoundError) {
|
||||||
return res.sendStatus(404)
|
res.sendStatus(404)
|
||||||
} else if (error instanceof Errors.DocModifiedError) {
|
} else if (error instanceof Errors.DocModifiedError) {
|
||||||
return res.sendStatus(409)
|
res.sendStatus(409)
|
||||||
} else if (error instanceof Errors.DocVersionDecrementedError) {
|
} else if (error instanceof Errors.DocVersionDecrementedError) {
|
||||||
return res.sendStatus(409)
|
res.sendStatus(409)
|
||||||
} else {
|
} else {
|
||||||
return res.status(500).send('Oops, something went wrong')
|
res.status(500).send('Oops, something went wrong')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -116,9 +112,7 @@ if (!module.parent) {
|
||||||
logger.fatal({ err }, `Cannot bind to ${host}:${port}. Exiting.`)
|
logger.fatal({ err }, `Cannot bind to ${host}:${port}. Exiting.`)
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
return logger.debug(
|
logger.debug(`Docstore starting up, listening on ${host}:${port}`)
|
||||||
`Docstore starting up, listening on ${host}:${port}`
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
server.timeout = 120000
|
server.timeout = 120000
|
||||||
server.keepAliveTimeout = 5000
|
server.keepAliveTimeout = 5000
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
const Metrics = require('@overleaf/metrics')
|
// Metrics must be initialized before importing anything else
|
||||||
Metrics.initialize('doc-updater')
|
require('@overleaf/metrics/initialize')
|
||||||
|
|
||||||
|
const Metrics = require('@overleaf/metrics')
|
||||||
const express = require('express')
|
const express = require('express')
|
||||||
const Settings = require('@overleaf/settings')
|
const Settings = require('@overleaf/settings')
|
||||||
const logger = require('@overleaf/logger')
|
const logger = require('@overleaf/logger')
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
// Metrics must be initialized before importing anything else
|
||||||
|
require('@overleaf/metrics/initialize')
|
||||||
|
|
||||||
const Events = require('events')
|
const Events = require('events')
|
||||||
const Metrics = require('@overleaf/metrics')
|
const Metrics = require('@overleaf/metrics')
|
||||||
Metrics.initialize(process.env.METRICS_APP_NAME || 'filestore')
|
|
||||||
|
|
||||||
const logger = require('@overleaf/logger')
|
const logger = require('@overleaf/logger')
|
||||||
logger.initialize(process.env.METRICS_APP_NAME || 'filestore')
|
logger.initialize(process.env.METRICS_APP_NAME || 'filestore')
|
||||||
|
|
|
@ -35,11 +35,6 @@ RUN mkdir -p /opt/cprof && \
|
||||||
wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent.tar.gz \
|
wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent.tar.gz \
|
||||||
| tar xzv -C /opt/cprof
|
| tar xzv -C /opt/cprof
|
||||||
|
|
||||||
# Install Google Cloud Debugger agent
|
|
||||||
RUN mkdir /opt/cdbg && \
|
|
||||||
wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce.tar.gz | \
|
|
||||||
tar xvz -C /opt/cdbg
|
|
||||||
|
|
||||||
RUN useradd --create-home node
|
RUN useradd --create-home node
|
||||||
|
|
||||||
COPY --from=builder /git-bridge.jar /
|
COPY --from=builder /git-bridge.jar /
|
||||||
|
|
|
@ -12,8 +12,4 @@ if [ "$ENABLE_PROFILE_AGENT" == "true" ]; then
|
||||||
GIT_BRIDGE_JVM_ARGS="-agentpath:/opt/cprof/profiler_java_agent.so=-cprof_service=git-bridge,-cprof_service_version=${VERSION},-cprof_enable_heap_sampling=true ${GIT_BRIDGE_JVM_ARGS}"
|
GIT_BRIDGE_JVM_ARGS="-agentpath:/opt/cprof/profiler_java_agent.so=-cprof_service=git-bridge,-cprof_service_version=${VERSION},-cprof_enable_heap_sampling=true ${GIT_BRIDGE_JVM_ARGS}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$ENABLE_DEBUG_AGENT" == "true" ]; then
|
|
||||||
GIT_BRIDGE_JVM_ARGS="-agentpath:/opt/cdbg/cdbg_java_agent.so -Dcom.google.cdbg.module=git-bridge -Dcom.google.cdbg.version=$VERSION ${GIT_BRIDGE_JVM_ARGS}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec java $GIT_BRIDGE_JVM_ARGS -jar /git-bridge.jar /conf/runtime.json
|
exec java $GIT_BRIDGE_JVM_ARGS -jar /git-bridge.jar /conf/runtime.json
|
||||||
|
|
|
@ -2,10 +2,8 @@
|
||||||
|
|
||||||
/* eslint-disable no-console */
|
/* eslint-disable no-console */
|
||||||
|
|
||||||
// Initialize metrics as early as possible because this is where the Google
|
// Metrics must be initialized before importing anything else
|
||||||
// profiling agents are also started.
|
require('@overleaf/metrics/initialize')
|
||||||
const Metrics = require('@overleaf/metrics')
|
|
||||||
Metrics.initialize('history-v1')
|
|
||||||
|
|
||||||
const Events = require('events')
|
const Events = require('events')
|
||||||
const BPromise = require('bluebird')
|
const BPromise = require('bluebird')
|
||||||
|
@ -14,6 +12,7 @@ const cors = require('cors')
|
||||||
const helmet = require('helmet')
|
const helmet = require('helmet')
|
||||||
const HTTPStatus = require('http-status')
|
const HTTPStatus = require('http-status')
|
||||||
const logger = require('@overleaf/logger')
|
const logger = require('@overleaf/logger')
|
||||||
|
const Metrics = require('@overleaf/metrics')
|
||||||
const cookieParser = require('cookie-parser')
|
const cookieParser = require('cookie-parser')
|
||||||
const bodyParser = require('body-parser')
|
const bodyParser = require('body-parser')
|
||||||
const swaggerTools = require('swagger-tools')
|
const swaggerTools = require('swagger-tools')
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
const metrics = require('@overleaf/metrics')
|
|
||||||
metrics.configure({ appName: 'history-v1' })
|
|
||||||
module.exports = metrics
|
|
|
@ -1,6 +1,6 @@
|
||||||
const _ = require('lodash')
|
const _ = require('lodash')
|
||||||
const config = require('config')
|
const config = require('config')
|
||||||
const metrics = require('./metrics')
|
const metrics = require('@overleaf/metrics')
|
||||||
const objectPersistor = require('@overleaf/object-persistor')
|
const objectPersistor = require('@overleaf/object-persistor')
|
||||||
|
|
||||||
const persistorConfig = _.cloneDeep(config.get('persistor'))
|
const persistorConfig = _.cloneDeep(config.get('persistor'))
|
||||||
|
|
|
@ -1,12 +1,7 @@
|
||||||
/*
|
// Metrics must be initialized before importing anything else
|
||||||
* decaffeinate suggestions:
|
require('@overleaf/metrics/initialize')
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* DS103: Rewrite code to no longer use __guard__
|
|
||||||
* DS207: Consider shorter variations of null checks
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
const metrics = require('@overleaf/metrics')
|
const metrics = require('@overleaf/metrics')
|
||||||
metrics.initialize('notifications')
|
|
||||||
const Settings = require('@overleaf/settings')
|
const Settings = require('@overleaf/settings')
|
||||||
const logger = require('@overleaf/logger')
|
const logger = require('@overleaf/logger')
|
||||||
logger.initialize('notifications-sharelatex')
|
logger.initialize('notifications-sharelatex')
|
||||||
|
@ -43,27 +38,19 @@ app.get('/status', (req, res) => res.send('notifications sharelatex up'))
|
||||||
|
|
||||||
app.get('/health_check', (req, res) =>
|
app.get('/health_check', (req, res) =>
|
||||||
HealthCheckController.check(function (err) {
|
HealthCheckController.check(function (err) {
|
||||||
if (err != null) {
|
if (err) {
|
||||||
logger.err({ err }, 'error performing health check')
|
logger.err({ err }, 'error performing health check')
|
||||||
return res.sendStatus(500)
|
res.sendStatus(500)
|
||||||
} else {
|
} else {
|
||||||
return res.sendStatus(200)
|
res.sendStatus(200)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
app.get('*', (req, res) => res.sendStatus(404))
|
app.get('*', (req, res) => res.sendStatus(404))
|
||||||
|
|
||||||
const host =
|
const host = Settings.internal?.notifications?.host || 'localhost'
|
||||||
__guard__(
|
const port = Settings.internal?.notifications?.port || 3042
|
||||||
Settings.internal != null ? Settings.internal.notifications : undefined,
|
|
||||||
x => x.host
|
|
||||||
) || 'localhost'
|
|
||||||
const port =
|
|
||||||
__guard__(
|
|
||||||
Settings.internal != null ? Settings.internal.notifications : undefined,
|
|
||||||
x1 => x1.port
|
|
||||||
) || 3042
|
|
||||||
|
|
||||||
mongoClient
|
mongoClient
|
||||||
.connect()
|
.connect()
|
||||||
|
@ -76,9 +63,3 @@ mongoClient
|
||||||
logger.fatal({ err }, 'Cannot connect to mongo. Exiting.')
|
logger.fatal({ err }, 'Cannot connect to mongo. Exiting.')
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
function __guard__(value, transform) {
|
|
||||||
return typeof value !== 'undefined' && value !== null
|
|
||||||
? transform(value)
|
|
||||||
: undefined
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
// Metrics must be initialized before importing anything else
|
||||||
|
import '@overleaf/metrics/initialize.js'
|
||||||
|
|
||||||
import Settings from '@overleaf/settings'
|
import Settings from '@overleaf/settings'
|
||||||
import logger from '@overleaf/logger'
|
import logger from '@overleaf/logger'
|
||||||
import OError from '@overleaf/o-error'
|
import OError from '@overleaf/o-error'
|
||||||
|
|
|
@ -13,7 +13,6 @@ if (Settings.sentry.dsn) {
|
||||||
logger.initializeErrorReporting(Settings.sentry.dsn)
|
logger.initializeErrorReporting(Settings.sentry.dsn)
|
||||||
}
|
}
|
||||||
|
|
||||||
Metrics.initialize('project-history')
|
|
||||||
Metrics.event_loop.monitor(logger)
|
Metrics.event_loop.monitor(logger)
|
||||||
Metrics.memory.monitor(logger)
|
Metrics.memory.monitor(logger)
|
||||||
Metrics.leaked_sockets.monitor(logger)
|
Metrics.leaked_sockets.monitor(logger)
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
// Metrics must be initialized before importing anything else
|
||||||
|
require('@overleaf/metrics/initialize')
|
||||||
|
|
||||||
const Metrics = require('@overleaf/metrics')
|
const Metrics = require('@overleaf/metrics')
|
||||||
const Settings = require('@overleaf/settings')
|
const Settings = require('@overleaf/settings')
|
||||||
Metrics.initialize(process.env.METRICS_APP_NAME || 'real-time')
|
|
||||||
const async = require('async')
|
const async = require('async')
|
||||||
|
|
||||||
const logger = require('@overleaf/logger')
|
const logger = require('@overleaf/logger')
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
// Metrics must be initialized before importing anything else
|
||||||
|
import '@overleaf/metrics/initialize.js'
|
||||||
|
|
||||||
import Settings from '@overleaf/settings'
|
import Settings from '@overleaf/settings'
|
||||||
import logger from '@overleaf/logger'
|
import logger from '@overleaf/logger'
|
||||||
import { app } from './app/js/server.js'
|
import { app } from './app/js/server.js'
|
||||||
|
|
|
@ -6,7 +6,6 @@ import bodyParser from 'body-parser'
|
||||||
import * as SpellingAPIController from './SpellingAPIController.js'
|
import * as SpellingAPIController from './SpellingAPIController.js'
|
||||||
import * as HealthCheckController from './HealthCheckController.js'
|
import * as HealthCheckController from './HealthCheckController.js'
|
||||||
|
|
||||||
metrics.initialize('spelling')
|
|
||||||
logger.initialize('spelling')
|
logger.initialize('spelling')
|
||||||
if (Settings.sentry?.dsn != null) {
|
if (Settings.sentry?.dsn != null) {
|
||||||
logger.initializeErrorReporting(Settings.sentry.dsn)
|
logger.initializeErrorReporting(Settings.sentry.dsn)
|
||||||
|
|
|
@ -1,16 +1,7 @@
|
||||||
/* eslint-disable
|
// Metrics must be initialized before importing anything else
|
||||||
max-len,
|
require('@overleaf/metrics/initialize')
|
||||||
*/
|
|
||||||
// TODO: This file was created by bulk-decaffeinate.
|
|
||||||
// Fix any style issues and re-enable lint.
|
|
||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* DS207: Consider shorter variations of null checks
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
const metrics = require('@overleaf/metrics')
|
const metrics = require('@overleaf/metrics')
|
||||||
metrics.initialize(process.env.METRICS_APP_NAME || 'web')
|
|
||||||
const Settings = require('@overleaf/settings')
|
const Settings = require('@overleaf/settings')
|
||||||
const logger = require('@overleaf/logger')
|
const logger = require('@overleaf/logger')
|
||||||
const PlansLocator = require('./app/src/Features/Subscription/PlansLocator')
|
const PlansLocator = require('./app/src/Features/Subscription/PlansLocator')
|
||||||
|
@ -24,7 +15,7 @@ logger.logger.serializers.files =
|
||||||
require('./app/src/infrastructure/LoggerSerializers').files
|
require('./app/src/infrastructure/LoggerSerializers').files
|
||||||
logger.logger.serializers.project =
|
logger.logger.serializers.project =
|
||||||
require('./app/src/infrastructure/LoggerSerializers').project
|
require('./app/src/infrastructure/LoggerSerializers').project
|
||||||
if ((Settings.sentry != null ? Settings.sentry.dsn : undefined) != null) {
|
if (Settings.sentry?.dsn != null) {
|
||||||
logger.initializeErrorReporting(Settings.sentry.dsn)
|
logger.initializeErrorReporting(Settings.sentry.dsn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue