Merge branch 'main' into iain/ratelimiter-should-respect-configuration
This commit is contained in:
@@ -2,21 +2,48 @@
|
||||
// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node
|
||||
{
|
||||
"name": "Node.js & TypeScript",
|
||||
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
|
||||
"image": "mcr.microsoft.com/devcontainers/typescript-node:1-18-bullseye",
|
||||
|
||||
// We want to deploy all the dependencies (Postgres, Redis, etc.) alongside the devcontainer
|
||||
// so we can run the app in the container.
|
||||
"dockerComposeFile": [
|
||||
"../docker-compose-deps.yml",
|
||||
"./docker-compose-devcontainer.yml"
|
||||
],
|
||||
// name of the service within the docker-compose file which devcontainer tools should connect to
|
||||
"service": "devcontainer",
|
||||
//services in the docker-compose file which should run when the devcontainer starts
|
||||
//"runServices": [] // defaults to all
|
||||
|
||||
// Path to the workspace within the container.
|
||||
// Needs to match destination volume ('volumes' property) in docker-compose-devcontainer.yml.
|
||||
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
|
||||
|
||||
// Features to add to the dev container. More info: https://containers.dev/features.
|
||||
// "features": {},
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {}
|
||||
},
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [],
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally (e.g. via your browser on your desktop)
|
||||
"forwardPorts": [
|
||||
3000, //speckle server
|
||||
6006, //storybook
|
||||
8081 //speckle frontend
|
||||
],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "yarn && yarn build:public"
|
||||
"postCreateCommand": "yarn && yarn build:public && cp -n /workspaces/${localWorkspaceFolderBasename}/packages/server/.env-example /workspaces/${localWorkspaceFolderBasename}/packages/server/.env && cp -n /workspaces/${localWorkspaceFolderBasename}/packages/frontend-2/.env.example /workspaces/${localWorkspaceFolderBasename}/packages/frontend-2/.env",
|
||||
|
||||
// Configure tool-specific properties.
|
||||
// "customizations": {},
|
||||
|
||||
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
||||
// "remoteUser": "root"
|
||||
|
||||
"hostRequirements": {
|
||||
"cpus": 4,
|
||||
"memory": "8gb"
|
||||
},
|
||||
|
||||
// Environment variables to set in the container.
|
||||
"remoteEnv": { "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}" }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
services:
|
||||
devcontainer:
|
||||
image: 'mcr.microsoft.com/devcontainers/typescript-node:1-18-bullseye'
|
||||
volumes:
|
||||
- ..:/workspaces:cached # mounts our local directory (git root) to the container in /workspaces directory (with access mode of cached)
|
||||
|
||||
# We need to override all node_modules directories
|
||||
# by mounting an empty volume to avoid conflicting
|
||||
# CPU build instructions between the host machine and the DevContainer's docker image
|
||||
# (this allows the devcontainer to be based on linux yet work on Apple Silicon etc..)
|
||||
# If you add a new package with a new `node_modules`, it needs to be added here
|
||||
- type: volume
|
||||
source: node_modules # top-level volume
|
||||
target: /workspaces/speckle-server/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: dui3-node_modules
|
||||
target: /workspaces/speckle-server/packages/dui3/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: fileimport-service-node_modules
|
||||
target: /workspaces/speckle-server/packages/fileimport-service/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: frontend-2-node_modules
|
||||
target: /workspaces/speckle-server/packages/frontend-2/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: monitor-deployment-node_modules
|
||||
target: /workspaces/speckle-server/packages/monitor-deployment/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: objectloader-node_modules
|
||||
target: /workspaces/speckle-server/packages/objectloader/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: objectsender-node_modules
|
||||
target: /workspaces/speckle-server/packages/objectsender/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: preview-frontend-node_modules
|
||||
target: /workspaces/speckle-server/packages/preview-frontend/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: preview-service-node_modules
|
||||
target: /workspaces/speckle-server/packages/preview-service/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: server-node_modules
|
||||
target: /workspaces/speckle-server/packages/server/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: shared-node_modules
|
||||
target: /workspaces/speckle-server/packages/shared/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: tailwind-theme-node_modules
|
||||
target: /workspaces/speckle-server/packages/tailwind-theme/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: ui-components-node_modules
|
||||
target: /workspaces/speckle-server/packages/ui-components/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: ui-components-nuxt-node_modules
|
||||
target: /workspaces/speckle-server/packages/ui-components-nuxt/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: viewer-node_modules
|
||||
target: /workspaces/speckle-server/packages/viewer/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: viewer-sandbox-node_modules
|
||||
target: /workspaces/speckle-server/packages/viewer-sandbox/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: webhook-service-node_modules
|
||||
target: /workspaces/speckle-server/packages/webhook-service/node_modules
|
||||
read_only: false
|
||||
command: sleep infinity
|
||||
depends_on:
|
||||
- init
|
||||
# 'host' network_mode makes services provided via docker-compose-deps available at 127.0.0.1 or localhost.
|
||||
# They are not available via Docker Compose DNS resolution of the service name e.g. `postgres`.
|
||||
# This is to ensure that the .env file used for local development remains compatible when running in devcontainer
|
||||
network_mode: host
|
||||
|
||||
# The mcr.microsoft.com/devcontainers/typescript-node docker image used for devcontainer
|
||||
# runs as user 'node' and not as 'root'
|
||||
# The mounted volumes (for the node_module CPU architecture build hack) are owned by 'root' by default
|
||||
# This container will chown these node_modules volumes to the 'node' user
|
||||
init:
|
||||
image: debian:bookworm-slim
|
||||
restart: 'no'
|
||||
entrypoint: |
|
||||
/bin/bash -c "groupadd --gid 1000 node && useradd --uid 1000 --gid node --shell /bin/bash --create-home node && find . -type d -name 'node_modules' | grep '\/node_modules$' | xargs chown node:node {}"
|
||||
volumes:
|
||||
# We need to override all node_modules directories
|
||||
# by mounting an empty volume to avoid conflicting
|
||||
# CPU build instructions between the host machine and the DevContainer's docker image
|
||||
# (this allows the devcontainer to be based on linux yet work on Apple Silicon etc..)
|
||||
# If you add a new package with a new `node_modules`, it needs to be added here
|
||||
- type: volume
|
||||
source: node_modules
|
||||
target: /workspaces/speckle-server/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: dui3-node_modules
|
||||
target: /workspaces/speckle-server/packages/dui3/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: fileimport-service-node_modules
|
||||
target: /workspaces/speckle-server/packages/fileimport-service/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: frontend-2-node_modules
|
||||
target: /workspaces/speckle-server/packages/frontend-2/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: monitor-deployment-node_modules
|
||||
target: /workspaces/speckle-server/packages/monitor-deployment/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: objectloader-node_modules
|
||||
target: /workspaces/speckle-server/packages/objectloader/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: objectsender-node_modules
|
||||
target: /workspaces/speckle-server/packages/objectsender/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: preview-frontend-node_modules
|
||||
target: /workspaces/speckle-server/packages/preview-frontend/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: preview-service-node_modules
|
||||
target: /workspaces/speckle-server/packages/preview-service/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: server-node_modules
|
||||
target: /workspaces/speckle-server/packages/server/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: shared-node_modules
|
||||
target: /workspaces/speckle-server/packages/shared/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: tailwind-theme-node_modules
|
||||
target: /workspaces/speckle-server/packages/tailwind-theme/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: ui-components-node_modules
|
||||
target: /workspaces/speckle-server/packages/ui-components/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: ui-components-nuxt-node_modules
|
||||
target: /workspaces/speckle-server/packages/ui-components-nuxt/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: viewer-node_modules
|
||||
target: /workspaces/speckle-server/packages/viewer/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: viewer-sandbox-node_modules
|
||||
target: /workspaces/speckle-server/packages/viewer-sandbox/node_modules
|
||||
read_only: false
|
||||
- type: volume
|
||||
source: webhook-service-node_modules
|
||||
target: /workspaces/speckle-server/packages/webhook-service/node_modules
|
||||
read_only: false
|
||||
|
||||
volumes:
|
||||
# We need to override all node_modules directories
|
||||
# by mounting an empty volume to avoid conflicting
|
||||
# CPU build instructions between the host machine and the DevContainer's docker image
|
||||
# (this allows the devcontainer to be based on linux yet work on Apple Silicon etc..)
|
||||
# If you add a new package with a new `node_modules`, it needs to be added here
|
||||
node_modules:
|
||||
dui3-node_modules:
|
||||
fileimport-service-node_modules:
|
||||
frontend-2-node_modules:
|
||||
monitor-deployment-node_modules:
|
||||
objectloader-node_modules:
|
||||
objectsender-node_modules:
|
||||
preview-frontend-node_modules:
|
||||
preview-service-node_modules:
|
||||
server-node_modules:
|
||||
shared-node_modules:
|
||||
tailwind-theme-node_modules:
|
||||
ui-components-node_modules:
|
||||
ui-components-nuxt-node_modules:
|
||||
viewer-node_modules:
|
||||
viewer-sandbox-node_modules:
|
||||
webhook-service-node_modules:
|
||||
@@ -1,4 +1,3 @@
|
||||
version: '3'
|
||||
services:
|
||||
# Actual Speckle Server dependencies
|
||||
|
||||
|
||||
@@ -382,6 +382,7 @@ function createLink(params: {
|
||||
// only log as error if at least one error has a status code of 5xx or has no status code
|
||||
const shouldLogAsWarn = gqlErrors.every(
|
||||
(e) =>
|
||||
e.extensions &&
|
||||
'statusCode' in e.extensions &&
|
||||
typeof e.extensions.statusCode === 'number' &&
|
||||
e.extensions.statusCode < 500
|
||||
|
||||
@@ -104,6 +104,12 @@ export const formatAppError = (err: SimpleError): SimpleError => {
|
||||
finalStatusCode = 429
|
||||
}
|
||||
|
||||
if (finalMessage.match(/\/_nuxt\/builds\/meta.*?404/i)) {
|
||||
finalMessage =
|
||||
'Speckle is currently upgrading to a newer version. Please reload the page in a few seconds.'
|
||||
finalStatusCode = 500
|
||||
}
|
||||
|
||||
finalMessage = upperFirst(finalMessage)
|
||||
|
||||
return {
|
||||
@@ -165,7 +171,7 @@ export function enableCustomLoggerHandling(params: {
|
||||
})
|
||||
.filter((arg) => {
|
||||
// Filter out falsy values
|
||||
return !!arg
|
||||
return !!arg && !(['null', 'undefined'] as unknown[]).includes(arg)
|
||||
})
|
||||
|
||||
// If nothing valid to log, skip entirely
|
||||
|
||||
@@ -73,7 +73,7 @@ export default defineNuxtRouteMiddleware(async (to) => {
|
||||
const apollo = useApolloClientFromNuxt()
|
||||
const resourceBuilder = () => SpeckleViewer.ViewerRoute.resourceBuilder()
|
||||
|
||||
if (['/streams', '/commits'].includes(path)) {
|
||||
if (['/streams', '/commits', '/streams/', '/commits/'].includes(path)) {
|
||||
return navigateTo(homeRoute)
|
||||
}
|
||||
|
||||
|
||||
@@ -74,6 +74,10 @@ export default defineNuxtConfig({
|
||||
}
|
||||
},
|
||||
|
||||
experimental: {
|
||||
emitRouteChunkError: 'automatic-immediate'
|
||||
},
|
||||
|
||||
alias: {
|
||||
// Rewriting all lodash calls to lodash-es for proper tree-shaking & chunk splitting
|
||||
// lodash: 'lodash-es'
|
||||
|
||||
@@ -324,7 +324,8 @@ export default defineNuxtPlugin(async (nuxtApp) => {
|
||||
if (!import.meta.server) {
|
||||
nuxtApp.hook('app:mounted', () => {
|
||||
logger.info('App mounted in the client', {
|
||||
important: true
|
||||
important: true,
|
||||
speckleServerVersion
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ const ignore = [
|
||||
|
||||
/** @type {import("mocha").MochaOptions} */
|
||||
const config = {
|
||||
spec: ['modules/**/*.spec.js', 'modules/**/*.spec.ts', 'logging/**/*.spec.ts'],
|
||||
spec: ['modules/**/*.spec.js', 'modules/**/*.spec.ts', 'observability/**/*.spec.ts'],
|
||||
require: ['ts-node/register', 'test/hooks.ts'],
|
||||
...(ignore.length ? { ignore } : {}),
|
||||
slow: 0,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* eslint-disable camelcase */
|
||||
/* eslint-disable no-restricted-imports */
|
||||
/* istanbul ignore file */
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import './bootstrap'
|
||||
import http from 'http'
|
||||
import express, { Express } from 'express'
|
||||
@@ -10,20 +10,20 @@ import 'express-async-errors'
|
||||
import cookieParser from 'cookie-parser'
|
||||
|
||||
import { createTerminus } from '@godaddy/terminus'
|
||||
import Metrics from '@/logging'
|
||||
import Metrics from '@/observability'
|
||||
import {
|
||||
startupLogger,
|
||||
shutdownLogger,
|
||||
subscriptionLogger,
|
||||
graphqlLogger
|
||||
} from '@/logging/logging'
|
||||
} from '@/observability/logging'
|
||||
import {
|
||||
DetermineRequestIdMiddleware,
|
||||
LoggingExpressMiddleware,
|
||||
sanitizeHeaders
|
||||
} from '@/logging/expressLogging'
|
||||
} from '@/observability/components/express/expressLogging'
|
||||
|
||||
import { errorMetricsMiddleware } from '@/logging/errorMetrics'
|
||||
import { errorMetricsMiddleware } from '@/observability/components/express/metrics/errorMetrics'
|
||||
import prometheusClient from 'prom-client'
|
||||
|
||||
import { ApolloServer } from '@apollo/server'
|
||||
@@ -36,7 +36,7 @@ import { SubscriptionServer } from 'subscriptions-transport-ws'
|
||||
import { execute, subscribe } from 'graphql'
|
||||
|
||||
import knex, { db } from '@/db/knex'
|
||||
import { monitorActiveConnections } from '@/logging/httpServerMonitoring'
|
||||
import { monitorActiveConnections } from '@/observability/components/httpServer/httpServerMonitoring'
|
||||
import { buildErrorFormatter } from '@/modules/core/graph/setup'
|
||||
import {
|
||||
getFileSizeLimitMB,
|
||||
@@ -82,10 +82,10 @@ import {
|
||||
enterNewRequestContext,
|
||||
getRequestContext,
|
||||
initiateRequestContextMiddleware
|
||||
} from '@/logging/requestContext'
|
||||
} from '@/observability/components/express/requestContext'
|
||||
import { randomUUID } from 'crypto'
|
||||
import { onOperationHandlerFactory } from '@/logging/apolloSubscriptions'
|
||||
import { initApolloSubscriptionMonitoring } from './logging/apolloSubscriptionMonitoring'
|
||||
import { onOperationHandlerFactory } from '@/observability/components/apollo/apolloSubscriptions'
|
||||
import { initApolloSubscriptionMonitoring } from '@/observability/components/apollo/metrics/apolloSubscriptionMonitoring'
|
||||
import { createRateLimiterMiddleware } from '@/modules/core/rest/ratelimiter'
|
||||
|
||||
const GRAPHQL_PATH = '/graphql'
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*/
|
||||
|
||||
require('ts-node/register')
|
||||
const { logger } = require('../logging/logging')
|
||||
const { logger } = require('../observability/logging')
|
||||
const { init, startHttp } = require('../app')
|
||||
|
||||
init()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env node
|
||||
'use strict'
|
||||
|
||||
const { logger } = require('../dist/logging/logging')
|
||||
const { logger } = require('../dist/observability/logging')
|
||||
const { init, startHttp } = require('../dist/app')
|
||||
|
||||
init()
|
||||
|
||||
Vendored
+4
-4
@@ -23,8 +23,8 @@ const {
|
||||
isApolloMonitoringEnabled,
|
||||
getApolloServerVersion,
|
||||
getServerVersion
|
||||
} = require('./modules/shared/helpers/envHelper')
|
||||
const { logger } = require('@/logging/logging')
|
||||
} = require('@/modules/shared/helpers/envHelper')
|
||||
const { logger } = require('@/observability/logging')
|
||||
|
||||
if (isApolloMonitoringEnabled() && !getApolloServerVersion()) {
|
||||
process.env.APOLLO_SERVER_USER_VERSION = getServerVersion()
|
||||
@@ -46,10 +46,10 @@ if (isTestEnv()) {
|
||||
dotenv.config({ path: `${packageRoot}/.env` })
|
||||
|
||||
// knex is a singleton controlled by module so can't wait til app init
|
||||
const { initOpenTelemetry } = require('./otel')
|
||||
const { initOpenTelemetry } = require('@/observability/otel')
|
||||
initOpenTelemetry()
|
||||
|
||||
const { patchKnex } = require('./modules/core/patches/knex')
|
||||
const { patchKnex } = require('@/modules/core/patches/knex')
|
||||
patchKnex()
|
||||
|
||||
module.exports = {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* istanbul ignore file */
|
||||
const env = process.env.NODE_ENV || 'development'
|
||||
import configs from '@/knexfile'
|
||||
import { dbStartupLogger } from '@/logging/logging'
|
||||
import { dbStartupLogger } from '@/observability/logging'
|
||||
import knex from 'knex'
|
||||
|
||||
const config = configs[env]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Knex } from 'knex'
|
||||
import { DatabaseError } from '@/modules/shared/errors'
|
||||
import { ensureError } from '@speckle/shared'
|
||||
import { logger } from '@/logging/logging'
|
||||
import { startupLogger } from '@/observability/logging'
|
||||
|
||||
export const migrateDbToLatest = async (params: { db: Knex; region: string }) => {
|
||||
const { db, region } = params
|
||||
@@ -11,7 +11,7 @@ export const migrateDbToLatest = async (params: { db: Knex; region: string }) =>
|
||||
await db.migrate.latest()
|
||||
|
||||
const durationMs = endStopWatch().milliseconds
|
||||
logger.info(
|
||||
startupLogger.info(
|
||||
{ region, durationMs },
|
||||
'Migrated db to latest for region "{region}" in {durationMs}ms.'
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { healthCheckLogger } from '@/logging/logging'
|
||||
import { healthCheckLogger } from '@/observability/logging'
|
||||
import { highFrequencyMetricsCollectionPeriodMs } from '@/modules/shared/helpers/envHelper'
|
||||
import { handleLivenessFactory, handleReadinessFactory } from '@/healthchecks/health'
|
||||
import { FreeConnectionsCalculator, ReadinessHandler } from '@/healthchecks/types'
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
postgresConnectionCreateTimeoutMillis,
|
||||
knexAsyncStackTracesEnabled
|
||||
} from '@/modules/shared/helpers/envHelper'
|
||||
import { dbLogger as logger } from '@/logging/logging'
|
||||
import { dbLogger as logger } from '@/observability/logging'
|
||||
import { Knex } from 'knex'
|
||||
import {
|
||||
createKnexConfig,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { db } from '@/db/knex'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import { initializeEventListenerFactory } from '@/modules/accessrequests/services/eventListener'
|
||||
import { getStreamCollaboratorsFactory } from '@/modules/core/repositories/streams'
|
||||
import { publishNotification } from '@/modules/notifications/services/publication'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
import { publishNotification } from '@/modules/notifications/services/publication'
|
||||
import { activitiesLogger, moduleLogger } from '@/logging/logging'
|
||||
import { activitiesLogger, moduleLogger } from '@/observability/logging'
|
||||
import { weeklyEmailDigestEnabled } from '@/modules/shared/helpers/envHelper'
|
||||
import { EventBus, getEventBus } from '@/modules/shared/services/eventBus'
|
||||
import { sendActivityNotificationsFactory } from '@/modules/activitystream/services/summary'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import { readFile } from 'fs/promises'
|
||||
import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper'
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
|
||||
import { registerOrUpdateScopeFactory } from '@/modules/shared/repositories/scopes'
|
||||
import { authLogger, moduleLogger } from '@/logging/logging'
|
||||
import { authLogger, moduleLogger } from '@/observability/logging'
|
||||
import db from '@/db/knex'
|
||||
import { initializeDefaultAppsFactory } from '@/modules/auth/services/serverApps'
|
||||
import {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { logger, moduleLogger } from '@/logging/logging'
|
||||
import { logger, moduleLogger } from '@/observability/logging'
|
||||
import { getDefaultApp } from '@/modules/auth/defaultApps'
|
||||
import {
|
||||
CreateApp,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { authLogger, type Logger } from '@/logging/logging'
|
||||
import { maybeLoggerWithContext } from '@/logging/requestContext'
|
||||
import { authLogger, type Logger } from '@/observability/logging'
|
||||
import { maybeLoggerWithContext } from '@/observability/components/express/requestContext'
|
||||
import {
|
||||
addToMailchimpAudience,
|
||||
triggerMailchimpCustomerJourney
|
||||
|
||||
@@ -56,7 +56,8 @@ import { RateLimiterMemory } from 'rate-limiter-flexible'
|
||||
import { TIME } from '@speckle/shared'
|
||||
import type { Application } from 'express'
|
||||
import { passportAuthenticationCallbackFactory } from '@/modules/auth/services/passportService'
|
||||
import { testLogger as logger } from '@/logging/logging'
|
||||
import { testLogger as logger } from '@/observability/logging'
|
||||
import { Application } from 'express'
|
||||
|
||||
const getServerInfo = getServerInfoFactory({ db })
|
||||
const getUser = getUserFactory({ db })
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { automateLogger } from '@/logging/logging'
|
||||
import { automateLogger } from '@/observability/logging'
|
||||
import {
|
||||
ExecutionEngineBadResponseBodyError,
|
||||
type ExecutionEngineErrorResponse,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { automateLogger, moduleLogger } from '@/logging/logging'
|
||||
import { automateLogger, moduleLogger } from '@/observability/logging'
|
||||
import { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
import {
|
||||
onModelVersionCreateFactory,
|
||||
@@ -58,7 +58,7 @@ import { getEventBus } from '@/modules/shared/services/eventBus'
|
||||
import { VersionEvents } from '@/modules/core/domain/commits/events'
|
||||
import { AutomationEvents, AutomationRunEvents } from '@/modules/automate/domain/events'
|
||||
import { LogicError } from '@/modules/shared/errors'
|
||||
import { maybeLoggerWithContext } from '@/logging/requestContext'
|
||||
import { maybeLoggerWithContext } from '@/observability/components/express/requestContext'
|
||||
|
||||
const { FF_AUTOMATE_MODULE_ENABLED } = getFeatureFlags()
|
||||
let quitListeners: Optional<() => void> = undefined
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { automateLogger } from '@/logging/logging'
|
||||
import { automateLogger } from '@/observability/logging'
|
||||
import { CreateStoredAuthCode } from '@/modules/automate/domain/operations'
|
||||
import { AutomateAuthCodeHandshakeError } from '@/modules/automate/errors/management'
|
||||
import { EventBus } from '@/modules/shared/services/eventBus'
|
||||
|
||||
@@ -43,7 +43,7 @@ import {
|
||||
speckleAutomateUrl
|
||||
} from '@/modules/shared/helpers/envHelper'
|
||||
import { getFunctionsMarketplaceUrl } from '@/modules/core/helpers/routeHelper'
|
||||
import { automateLogger } from '@/logging/logging'
|
||||
import { automateLogger } from '@/observability/logging'
|
||||
import { CreateStoredAuthCode } from '@/modules/automate/domain/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
import { noop } from 'lodash'
|
||||
|
||||
@@ -25,7 +25,7 @@ import {
|
||||
import { TriggerAutomationError } from '@/modules/automate/errors/runs'
|
||||
import { ContextResourceAccessRules } from '@/modules/core/helpers/token'
|
||||
import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql'
|
||||
import { automateLogger } from '@/logging/logging'
|
||||
import { automateLogger } from '@/observability/logging'
|
||||
import { FunctionInputDecryptor } from '@/modules/automate/services/encryption'
|
||||
import { LibsodiumEncryptionError } from '@/modules/shared/errors/encryption'
|
||||
import {
|
||||
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
ResourceMismatch,
|
||||
BadRequestError
|
||||
} from '@/modules/shared/errors'
|
||||
import { moduleLogger, logger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import {
|
||||
getAllStreamBlobIdsFactory,
|
||||
upsertBlobFactory,
|
||||
@@ -68,7 +68,7 @@ const ensureConditions = async () => {
|
||||
}
|
||||
|
||||
if (!process.env.S3_BUCKET) {
|
||||
logger.warn(
|
||||
moduleLogger.warn(
|
||||
'S3_BUCKET env variable was not specified. 📦 BlobStorage will be DISABLED.'
|
||||
)
|
||||
return
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { CommandModule } from 'yargs'
|
||||
import { initializeQueue } from '@/modules/notifications/services/queue'
|
||||
import { publishNotification } from '@/modules/notifications/services/publication'
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger } from '@/observability/logging'
|
||||
import { sendActivityNotificationsFactory } from '@/modules/activitystream/services/summary'
|
||||
import { getActiveUserStreamsFactory } from '@/modules/activitystream/repositories'
|
||||
import { db } from '@/db/knex'
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
buildNotificationsQueue
|
||||
} from '@/modules/notifications/services/queue'
|
||||
import { noop } from 'lodash'
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger } from '@/observability/logging'
|
||||
|
||||
const PORT = 3032
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger } from '@/observability/logging'
|
||||
import { NotificationType } from '@/modules/notifications/helpers/types'
|
||||
import { initializeConsumption } from '@/modules/notifications/index'
|
||||
import { EnvironmentResourceError } from '@/modules/shared/errors'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger } from '@/observability/logging'
|
||||
import {
|
||||
MentionedInCommentData,
|
||||
NotificationType
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import knex from '@/db/knex'
|
||||
import { appRoot } from '@/bootstrap'
|
||||
import fs from 'fs/promises'
|
||||
import { logger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { CommandModule } from 'yargs'
|
||||
import { ensureError } from '@speckle/shared'
|
||||
import { MisconfiguredEnvironmentError } from '@/modules/shared/errors'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { logger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { CommonDbArgs, getTargettedDbClients } from '@/modules/cli/commands/db/helpers'
|
||||
import { CommandModule } from 'yargs'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { logger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { CommonDbArgs, getTargettedDbClients } from '@/modules/cli/commands/db/helpers'
|
||||
import { CommandModule } from 'yargs'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { logger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { CommonDbArgs, getTargettedDbClients } from '@/modules/cli/commands/db/helpers'
|
||||
import { resetPubSubFactory } from '@/test/hooks'
|
||||
import { CommandModule } from 'yargs'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { logger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { CommonDbArgs, getTargettedDbClients } from '@/modules/cli/commands/db/helpers'
|
||||
import { CommandModule } from 'yargs'
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { db } from '@/db/knex'
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { StreamNotFoundError } from '@/modules/core/errors/stream'
|
||||
import { UserNotFoundError } from '@/modules/core/errors/user'
|
||||
import { getStreamFactory } from '@/modules/core/repositories/streams'
|
||||
@@ -55,7 +55,7 @@ const command: CommandModule<
|
||||
)
|
||||
}
|
||||
|
||||
cliLogger.info(`Generating ${count} objects & commits for stream ${streamId}...`)
|
||||
logger.info(`Generating ${count} objects & commits for stream ${streamId}...`)
|
||||
await createTestCommits(
|
||||
times(
|
||||
count,
|
||||
@@ -68,7 +68,7 @@ const command: CommandModule<
|
||||
})
|
||||
)
|
||||
)
|
||||
cliLogger.info(`...done`)
|
||||
logger.info(`...done`)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { logger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { Users, ServerAcl } from '@/modules/core/dbSchema'
|
||||
import { Roles } from '@/modules/core/helpers/mainConstants'
|
||||
import { faker } from '@faker-js/faker'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { CommandModule } from 'yargs'
|
||||
import { downloadCommitFactory } from '@/modules/cross-server-sync/services/commit'
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import {
|
||||
getStreamCollaboratorsFactory,
|
||||
getStreamFactory,
|
||||
@@ -181,7 +181,7 @@ const command: CommandModule<
|
||||
createCommentReplyAndNotify
|
||||
})
|
||||
|
||||
await downloadCommit(argv, { logger: cliLogger })
|
||||
await downloadCommit(argv, { logger })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { CommandModule } from 'yargs'
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { downloadProjectFactory } from '@/modules/cross-server-sync/services/project'
|
||||
import { downloadCommitFactory } from '@/modules/cross-server-sync/services/commit'
|
||||
import {
|
||||
@@ -226,7 +226,7 @@ const command: CommandModule<
|
||||
eventEmit: getEventBus().emit
|
||||
})
|
||||
})
|
||||
await downloadProject({ ...argv, regionKey }, { logger: cliLogger })
|
||||
await downloadProject({ ...argv, regionKey }, { logger })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { CommandModule } from 'yargs'
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import * as ModulesSetup from '@/modules'
|
||||
import { printSchema } from 'graphql/utilities'
|
||||
import fs from 'node:fs/promises'
|
||||
@@ -17,11 +17,11 @@ const command: CommandModule<unknown, { file: string }> = {
|
||||
}
|
||||
},
|
||||
handler: async ({ file }) => {
|
||||
cliLogger.info('Loading GQL schema...')
|
||||
logger.info('Loading GQL schema...')
|
||||
const schema = ModulesSetup.graphSchema()
|
||||
const schemaString = printSchema(schema)
|
||||
|
||||
cliLogger.info(`Saving to "${file}"...`)
|
||||
logger.info(`Saving to "${file}"...`)
|
||||
const absolutePath = path.isAbsolute(file)
|
||||
? file
|
||||
: path.resolve(process.cwd(), file)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { db } from '@/db/knex'
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import {
|
||||
getBatchedStreamCommentsFactory,
|
||||
getCommentLinksFactory,
|
||||
@@ -66,11 +66,11 @@ const command: CommandModule<
|
||||
emitEvent: getEventBus().emit
|
||||
})
|
||||
|
||||
cliLogger.info(
|
||||
logger.info(
|
||||
`Cloning stream ${sourceStreamId} into the account of user ${targetUserId}...`
|
||||
)
|
||||
const { id } = await cloneStream(targetUserId, sourceStreamId)
|
||||
cliLogger.info('Cloning successful! New stream ID: ' + id)
|
||||
logger.info('Cloning successful! New stream ID: ' + id)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { CommandModule } from 'yargs'
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { metaHelpers } from '@/modules/core/helpers/meta'
|
||||
import { Users } from '@/modules/core/dbSchema'
|
||||
import { UserRecord, UsersMetaRecord } from '@/modules/core/helpers/types'
|
||||
@@ -9,28 +9,28 @@ const command: CommandModule = {
|
||||
command: 'test-meta',
|
||||
describe: 'Testing users meta behaviour',
|
||||
handler: async () => {
|
||||
cliLogger.info('Hello world!')
|
||||
logger.info('Hello world!')
|
||||
|
||||
const testUsers = await Users.knex<UserRecord[]>().limit(5)
|
||||
const firstUserId = testUsers[0]?.id
|
||||
const secondUserId = testUsers[1]?.id
|
||||
if (!firstUserId || !secondUserId) {
|
||||
cliLogger.error('One or more test users were not found')
|
||||
logger.error('One or more test users were not found')
|
||||
return
|
||||
}
|
||||
|
||||
const meta = metaHelpers<UsersMetaRecord, typeof Users>(Users, db)
|
||||
|
||||
// set value
|
||||
cliLogger.info(await meta.set(firstUserId, 'foo', false))
|
||||
cliLogger.info(await meta.set(firstUserId, 'bar', "I'm happy to see ya brodie'!\""))
|
||||
cliLogger.info(await meta.set(secondUserId, 'foo', { a: 123 }))
|
||||
logger.info(await meta.set(firstUserId, 'foo', false))
|
||||
logger.info(await meta.set(firstUserId, 'bar', "I'm happy to see ya brodie'!\""))
|
||||
logger.info(await meta.set(secondUserId, 'foo', { a: 123 }))
|
||||
|
||||
// get value
|
||||
cliLogger.info(await meta.get<UsersMetaRecord<string>>(firstUserId, 'bar'))
|
||||
logger.info(await meta.get<UsersMetaRecord<string>>(firstUserId, 'bar'))
|
||||
|
||||
// get multiple values
|
||||
cliLogger.info(
|
||||
logger.info(
|
||||
await meta.getMultiple([
|
||||
{ id: firstUserId, key: 'foo' },
|
||||
{ id: firstUserId, key: 'bar' },
|
||||
@@ -40,7 +40,7 @@ const command: CommandModule = {
|
||||
)
|
||||
|
||||
// delete value
|
||||
cliLogger.info(await meta.delete(firstUserId, 'bar'))
|
||||
logger.info(await meta.delete(firstUserId, 'bar'))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { CommandModule } from 'yargs'
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { getWorkspaceBySlugOrIdFactory } from '@/modules/workspaces/repositories/workspaces'
|
||||
import { db } from '@/db/knex'
|
||||
import { upsertPaidWorkspacePlanFactory } from '@/modules/gatekeeper/repositories/billing'
|
||||
@@ -42,7 +42,7 @@ const command: CommandModule<
|
||||
}
|
||||
},
|
||||
handler: async (args) => {
|
||||
cliLogger.info(
|
||||
logger.info(
|
||||
`Setting plan for workspace '${args.workspaceSlugOrId}' to '${args.plan}' with status '${args.status}'`
|
||||
)
|
||||
const workspace = await getWorkspaceBySlugOrIdFactory({ db })(args)
|
||||
@@ -60,7 +60,7 @@ const command: CommandModule<
|
||||
status: args.status
|
||||
}
|
||||
})
|
||||
cliLogger.info(`Plan set!`)
|
||||
logger.info(`Plan set!`)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import path from 'path'
|
||||
import yargs from 'yargs'
|
||||
import '../../bootstrap'
|
||||
import { cliLogger, logger } from '@/logging/logging'
|
||||
import { cliLogger as logger } from '@/observability/logging'
|
||||
import { isTestEnv } from '@/modules/shared/helpers/envHelper'
|
||||
import { mochaHooks } from '@/test/hooks'
|
||||
|
||||
@@ -23,7 +23,7 @@ const main = async () => {
|
||||
|
||||
// In test env, run beforeAll hooks to properly initialize everything first
|
||||
if (isBeforeAllSet && isTestEnv()) {
|
||||
cliLogger.info('Running test beforeAll hooks...')
|
||||
logger.info('Running test beforeAll hooks...')
|
||||
await (mochaHooks.beforeAll as () => Promise<void>)()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { db } from '@/db/knex'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import { saveActivityFactory } from '@/modules/activitystream/repositories'
|
||||
import { reportSubscriptionEventsFactory } from '@/modules/comments/events/subscriptionListeners'
|
||||
import { getCommentsResourcesFactory } from '@/modules/comments/repositories/comments'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Logger } from '@/logging/logging'
|
||||
import type { Logger } from '@/observability/logging'
|
||||
import {
|
||||
InsertableSpeckleObject,
|
||||
RawSpeckleObject,
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
/* eslint-disable camelcase */
|
||||
import { type Registry, Counter } from 'prom-client'
|
||||
import { graphqlLogger } from '@/logging/logging'
|
||||
import { redactSensitiveVariables } from '@/logging/loggingHelper'
|
||||
import { graphqlLogger } from '@/observability/logging'
|
||||
import { redactSensitiveVariables } from '@/observability/utils/redact'
|
||||
import { FieldNode, SelectionNode } from 'graphql'
|
||||
import { ApolloServerPlugin } from '@apollo/server'
|
||||
import { GraphQLContext } from '@/modules/shared/helpers/typeHelper'
|
||||
import { shouldLogAsInfoLevel } from '@/logging/graphqlError'
|
||||
import { getRequestContext } from '@/logging/requestContext'
|
||||
import { shouldLogAsInfoLevel } from '@/observability/utils/logLevels'
|
||||
import { getRequestContext } from '@/observability/components/express/requestContext'
|
||||
|
||||
type ApolloLoggingPluginTransaction = {
|
||||
start: number
|
||||
|
||||
@@ -35,7 +35,7 @@ import {
|
||||
deleteStreamFactory,
|
||||
getUserDeletableStreamsFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { dbLogger } from '@/logging/logging'
|
||||
import { dbLogger } from '@/observability/logging'
|
||||
import { getAdminUsersListCollectionFactory } from '@/modules/core/services/users/legacyAdminUsersList'
|
||||
import { Resolvers } from '@/modules/core/graph/generated/graphql'
|
||||
import { getServerInfoFactory } from '@/modules/core/repositories/server'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import {
|
||||
setupResultListener,
|
||||
shutdownResultListener
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import { extendLoggerComponent, moduleLogger } from '@/logging/logging'
|
||||
import { extendLoggerComponent, moduleLogger } from '@/observability/logging'
|
||||
|
||||
export const coreLogger = extendLoggerComponent(moduleLogger, 'core')
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Optional, ensureError } from '@speckle/shared'
|
||||
import { ErrorRequestHandler } from 'express'
|
||||
import { get, isNumber } from 'lodash'
|
||||
import { VError } from 'verror'
|
||||
import { logger as defaultLogger } from '@/logging/logging'
|
||||
import { logger as defaultLogger } from '@/observability/logging'
|
||||
|
||||
export const resolveStatusCode = (e: Error): number => {
|
||||
if (e instanceof BaseError) {
|
||||
|
||||
@@ -3,7 +3,6 @@ import { corsMiddlewareFactory } from '@/modules/core/configs/cors'
|
||||
|
||||
import { SpeckleObjectsStream } from '@/modules/core/rest/speckleObjectsStream'
|
||||
import { pipeline, PassThrough } from 'stream'
|
||||
import { logger } from '@/logging/logging'
|
||||
import {
|
||||
getFormattedObjectFactory,
|
||||
getObjectChildrenStreamFactory
|
||||
@@ -25,7 +24,7 @@ export default (app: express.Express) => {
|
||||
app.options('/objects/:streamId/:objectId', corsMiddlewareFactory())
|
||||
|
||||
app.get('/objects/:streamId/:objectId', corsMiddlewareFactory(), async (req, res) => {
|
||||
const boundLogger = (req.log || logger).child({
|
||||
const boundLogger = req.log.child({
|
||||
requestId: req.id,
|
||||
userId: req.context.userId || '-',
|
||||
streamId: req.params.streamId,
|
||||
@@ -112,7 +111,7 @@ export default (app: express.Express) => {
|
||||
'/objects/:streamId/:objectId/single',
|
||||
corsMiddlewareFactory(),
|
||||
async (req, res) => {
|
||||
const boundLogger = (req.log || logger).child({
|
||||
const boundLogger = req.log.child({
|
||||
requestId: req.id,
|
||||
userId: req.context.userId || '-',
|
||||
streamId: req.params.streamId,
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
estimateStringMegabyteSize
|
||||
} from '@/modules/core/utils/chunking'
|
||||
import { ObjectHandlingError } from '@/modules/core/errors/object'
|
||||
import { servicesLogger } from '@/logging/logging'
|
||||
import { servicesLogger } from '@/observability/logging'
|
||||
import {
|
||||
CreateObject,
|
||||
CreateObjects,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import cron from 'node-cron'
|
||||
import { InvalidArgumentError } from '@/modules/shared/errors'
|
||||
import { logger } from '@/logging/logging'
|
||||
import { taskSchedulerLogger as logger } from '@/observability/logging'
|
||||
import {
|
||||
AcquireTaskLock,
|
||||
ReleaseTaskLock,
|
||||
|
||||
@@ -48,7 +48,7 @@ import {
|
||||
DeleteStreamRecord,
|
||||
GetUserDeletableStreams
|
||||
} from '@/modules/core/domain/streams/operations'
|
||||
import { Logger } from '@/logging/logging'
|
||||
import type { Logger } from '@/observability/logging'
|
||||
import { DeleteAllUserInvites } from '@/modules/serverinvites/domain/operations'
|
||||
import { GetServerInfo } from '@/modules/core/domain/server/operations'
|
||||
import { EventBusEmit } from '@/modules/shared/services/eventBus'
|
||||
|
||||
@@ -96,7 +96,7 @@ import {
|
||||
} from '@/modules/core/services/users/management'
|
||||
import { validateAndCreateUserEmailFactory } from '@/modules/core/services/userEmails'
|
||||
import { finalizeInvitedServerRegistrationFactory } from '@/modules/serverinvites/services/processing'
|
||||
import { dbLogger } from '@/logging/logging'
|
||||
import { dbLogger } from '@/observability/logging'
|
||||
import {
|
||||
storeApiTokenFactory,
|
||||
storeTokenScopesFactory,
|
||||
|
||||
@@ -40,7 +40,7 @@ import {
|
||||
deleteStreamFactory,
|
||||
getUserDeletableStreamsFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { dbLogger } from '@/logging/logging'
|
||||
import { dbLogger } from '@/observability/logging'
|
||||
import { getServerInfoFactory } from '@/modules/core/repositories/server'
|
||||
import { getEventBus } from '@/modules/shared/services/eventBus'
|
||||
import { expect } from 'chai'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { MaybeAsync, Optional, md5, wait } from '@speckle/shared'
|
||||
import { dbNotificationLogger } from '@/logging/logging'
|
||||
import { dbNotificationLogger } from '@/observability/logging'
|
||||
import { knex } from '@/modules/core/dbSchema'
|
||||
import * as Knex from 'knex'
|
||||
import * as pg from 'pg'
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
RateLimiterRes
|
||||
} from 'rate-limiter-flexible'
|
||||
import { Nullable, TIME } from '@speckle/shared'
|
||||
import { rateLimiterLogger } from '@/logging/logging'
|
||||
import { rateLimiterLogger } from '@/observability/logging'
|
||||
import { createRedisClient } from '@/modules/shared/redis/redis'
|
||||
import { RateLimitError } from '@/modules/core/errors/ratelimit'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { type Logger } from '@/logging/logging'
|
||||
import { type Logger } from '@/observability/logging'
|
||||
import { StreamRecord } from '@/modules/core/helpers/types'
|
||||
|
||||
export type DownloadCommit = (
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { db } from '@/db/knex'
|
||||
import { moduleLogger, crossServerSyncLogger } from '@/logging/logging'
|
||||
import { moduleLogger, crossServerSyncLogger } from '@/observability/logging'
|
||||
import { getBlobsFactory } from '@/modules/blobstorage/repositories'
|
||||
import {
|
||||
getCommentFactory,
|
||||
|
||||
@@ -5,7 +5,7 @@ import { CreateCommentInput } from '@/test/graphql/generated/graphql'
|
||||
import { Roles, timeoutAt } from '@speckle/shared'
|
||||
import ObjectLoader from '@speckle/objectloader'
|
||||
import { noop } from 'lodash'
|
||||
import { crossServerSyncLogger } from '@/logging/logging'
|
||||
import { crossServerSyncLogger } from '@/observability/logging'
|
||||
import type { SpeckleViewer } from '@speckle/shared'
|
||||
import { retry } from '@speckle/shared'
|
||||
import {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { crossServerSyncLogger } from '@/logging/logging'
|
||||
import { crossServerSyncLogger } from '@/observability/logging'
|
||||
import {
|
||||
GetOnboardingBaseStream,
|
||||
MarkOnboardingBaseStream
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { crossServerSyncLogger, Logger } from '@/logging/logging'
|
||||
import { crossServerSyncLogger, Logger } from '@/observability/logging'
|
||||
import { CrossServerProjectSyncError } from '@/modules/cross-server-sync/errors'
|
||||
import {
|
||||
createApolloClient,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* istanbul ignore file */
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import * as SendingService from '@/modules/emails/services/sending'
|
||||
import { initializeTransporter } from '@/modules/emails/utils/transporter'
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { logger } from '@/logging/logging'
|
||||
import { emailLogger as logger } from '@/observability/logging'
|
||||
import { SendEmail, SendEmailParams } from '@/modules/emails/domain/operations'
|
||||
import { getTransporter } from '@/modules/emails/utils/transporter'
|
||||
import { getEmailFromAddress } from '@/modules/shared/helpers/envHelper'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { logger, moduleLogger } from '@/logging/logging'
|
||||
import { emailLogger as logger } from '@/observability/logging'
|
||||
import { MisconfiguredEnvironmentError } from '@/modules/shared/errors'
|
||||
import { isEmailEnabled, isTestEnv } from '@/modules/shared/helpers/envHelper'
|
||||
import { createTransport, Transporter } from 'nodemailer'
|
||||
@@ -37,7 +37,7 @@ export async function initializeTransporter(): Promise<Transporter | undefined>
|
||||
if (!newTransporter) {
|
||||
const message =
|
||||
'📧 Email provider is enabled but transport has not initialized correctly. Please review the email configuration or your email system for problems.'
|
||||
moduleLogger.error(message)
|
||||
logger.error(message)
|
||||
throw new MisconfiguredEnvironmentError(message)
|
||||
}
|
||||
}
|
||||
@@ -47,13 +47,13 @@ export async function initializeTransporter(): Promise<Transporter | undefined>
|
||||
if (!newTransporter) {
|
||||
const message =
|
||||
'📧 In testing a mock email provider is enabled but transport has not initialized correctly.'
|
||||
moduleLogger.error(message)
|
||||
logger.error(message)
|
||||
throw new MisconfiguredEnvironmentError(message)
|
||||
}
|
||||
}
|
||||
|
||||
if (!newTransporter) {
|
||||
moduleLogger.warn(
|
||||
logger.warn(
|
||||
'📧 Email provider is not configured. Server functionality will be limited.'
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import { insertNewUploadAndNotifyFactory } from '@/modules/fileuploads/services/management'
|
||||
import request from 'request'
|
||||
import { authMiddlewareCreator } from '@/modules/shared/middleware'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import {
|
||||
onFileImportProcessedFactory,
|
||||
onFileProcessingFactory,
|
||||
|
||||
@@ -12,7 +12,7 @@ import { GetFileInfo } from '@/modules/fileuploads/domain/operations'
|
||||
import { GetStreamBranchByName } from '@/modules/core/domain/branches/operations'
|
||||
import { EventBusEmit } from '@/modules/shared/services/eventBus'
|
||||
import { ModelEvents } from '@/modules/core/domain/branches/events'
|
||||
import { fileUploadsLogger as logger } from '@/logging/logging'
|
||||
import { fileUploadsLogger as logger } from '@/observability/logging'
|
||||
import { FileUploadConvertedStatus } from '@/modules/fileuploads/helpers/types'
|
||||
import { FileUploadInternalError } from '@/modules/fileuploads/helpers/errors'
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import cron from 'node-cron'
|
||||
import { logger, moduleLogger } from '@/logging/logging'
|
||||
import { logger, moduleLogger } from '@/observability/logging'
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
import { getFeatureFlags } from '@/modules/shared/helpers/envHelper'
|
||||
import { validateModuleLicense } from '@/modules/gatekeeper/services/validateLicense'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Logger } from '@/logging/logging'
|
||||
import type { Logger } from '@/observability/logging'
|
||||
import {
|
||||
GetWorkspacePlan,
|
||||
GetWorkspacePlanPrice,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { logger } from '@/logging/logging'
|
||||
import { testLogger as logger } from '@/observability/logging'
|
||||
import {
|
||||
SubscriptionData,
|
||||
SubscriptionDataInput,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import { getFeatureFlags } from '@/modules/shared/helpers/envHelper'
|
||||
import restApi from '@/modules/gendo/rest/index'
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import { values, merge, camelCase, reduce, intersection } from 'lodash'
|
||||
import baseTypeDefs from '@/modules/core/graph/schema/baseTypeDefs'
|
||||
import { scalarResolvers } from '@/modules/core/graph/scalars'
|
||||
import { makeExecutableSchema } from '@graphql-tools/schema'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import { addMocksToSchema } from '@graphql-tools/mock'
|
||||
import { getFeatureFlags } from '@/modules/shared/helpers/envHelper'
|
||||
import { isNonNullable } from '@speckle/shared'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import {
|
||||
getValidDefaultProjectRegionKey,
|
||||
initializeRegisteredRegionClients as initDb
|
||||
|
||||
@@ -10,7 +10,7 @@ import {
|
||||
} from '@/modules/notifications/helpers/types'
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
import { shouldDisableNotificationsConsumption } from '@/modules/shared/helpers/envHelper'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
|
||||
export async function initializeConsumption(
|
||||
customHandlers?: Partial<NotificationTypeHandlers>
|
||||
|
||||
@@ -16,7 +16,7 @@ import { isProdEnv, isTestEnv } from '@/modules/shared/helpers/envHelper'
|
||||
import Bull from 'bull'
|
||||
import { buildBaseQueueOptions } from '@/modules/shared/helpers/bullHelper'
|
||||
import cryptoRandomString from 'crypto-random-string'
|
||||
import { logger, notificationsLogger, Observability } from '@/logging/logging'
|
||||
import { logger, notificationsLogger, Observability } from '@/observability/logging'
|
||||
import { ensureErrorOrWrapAsCause } from '@/modules/shared/errors/ensureError'
|
||||
|
||||
export type NotificationJobResult = {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import { validateScopes, authorizeResolver } from '@/modules/shared'
|
||||
|
||||
import { makeOgImage } from '@/modules/previews/ogImage'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import { messageProcessor } from '@/modules/previews/resultListener'
|
||||
import { db } from '@/db/knex'
|
||||
import {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import RestSetup from '@/modules/pwdreset/rest'
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
import { noop } from 'lodash'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { registerOrUpdateScopeFactory } from '@/modules/shared/repositories/scopes'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import db from '@/db/knex'
|
||||
import { Scopes } from '@speckle/shared'
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
|
||||
@@ -33,7 +33,7 @@ import { Netmask } from 'netmask'
|
||||
import { Merge } from 'type-fest'
|
||||
import { resourceAccessRuleToIdentifier } from '@/modules/core/helpers/token'
|
||||
import { delayGraphqlResponsesBy } from '@/modules/shared/helpers/envHelper'
|
||||
import { subscriptionLogger } from '@/logging/logging'
|
||||
import { subscriptionLogger } from '@/observability/logging'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
import { validateTokenFactory } from '@/modules/core/services/tokens'
|
||||
import {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { redisLogger } from '@/logging/logging'
|
||||
import { redisLogger } from '@/observability/logging'
|
||||
import Redis, { RedisOptions } from 'ioredis'
|
||||
import {
|
||||
EnvironmentResourceError,
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
import Mixpanel from 'mixpanel'
|
||||
import type express from 'express'
|
||||
import type http from 'http'
|
||||
import { mixpanelLogger } from '@/logging/logging'
|
||||
import { mixpanelLogger } from '@/observability/logging'
|
||||
|
||||
let client: Optional<Mixpanel.Mixpanel> = undefined
|
||||
let baseTrackingProperties: Optional<Record<string, string>> = undefined
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
|
||||
export const init: SpeckleModule['init'] = async () => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import cron from 'node-cron'
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
import { activitiesLogger, moduleLogger } from '@/logging/logging'
|
||||
import { activitiesLogger, moduleLogger } from '@/observability/logging'
|
||||
import { scheduleExecutionFactory } from '@/modules/core/services/taskScheduler'
|
||||
import {
|
||||
acquireTaskLockFactory,
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
isProjectResourceTarget,
|
||||
resolveTarget
|
||||
} from '@/modules/serverinvites/helpers/core'
|
||||
import { logger, moduleLogger } from '@/logging/logging'
|
||||
import { logger, moduleLogger } from '@/observability/logging'
|
||||
import { updateWorkspaceRoleFactory } from '@/modules/workspaces/services/management'
|
||||
import { EventPayload, getEventBus } from '@/modules/shared/services/eventBus'
|
||||
import { WorkspaceInviteResourceType } from '@/modules/workspacesCore/domain/constants'
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
import { getFeatureFlags } from '@/modules/shared/helpers/envHelper'
|
||||
import { registerOrUpdateScopeFactory } from '@/modules/shared/repositories/scopes'
|
||||
import db from '@/db/knex'
|
||||
|
||||
@@ -38,7 +38,7 @@ import {
|
||||
getEmailFromOidcProfile,
|
||||
isValidSsoSession
|
||||
} from '@/modules/workspaces/domain/sso/logic'
|
||||
import { Logger } from '@/logging/logging'
|
||||
import type { Logger } from '@/observability/logging'
|
||||
|
||||
// this probably should go a lean validation endpoint too
|
||||
const validateOidcProviderAttributes = ({
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { moduleLogger } from '@/observability/logging'
|
||||
|
||||
export const init: SpeckleModule['init'] = () => {
|
||||
moduleLogger.info('⚒️ Init workspaces core module')
|
||||
|
||||
+7
-4
@@ -1,13 +1,16 @@
|
||||
/* eslint-disable camelcase */
|
||||
import type { GraphQLContext } from '@/modules/shared/helpers/typeHelper'
|
||||
import type { ExecutionParams } from 'subscriptions-transport-ws'
|
||||
import { shouldLogAsInfoLevel, shouldLogAsWarnLevel } from '@/logging/graphqlError'
|
||||
import {
|
||||
shouldLogAsInfoLevel,
|
||||
shouldLogAsWarnLevel
|
||||
} from '@/observability/utils/logLevels'
|
||||
import { BaseError } from '@/modules/shared/errors'
|
||||
import { GraphQLError } from 'graphql'
|
||||
import { redactSensitiveVariables } from '@/logging/loggingHelper'
|
||||
import { redactSensitiveVariables } from '@/observability/utils/redact'
|
||||
import type { Counter } from 'prom-client'
|
||||
import { getRequestContext } from '@/logging/requestContext'
|
||||
import { subscriptionLogger } from '@/logging/logging'
|
||||
import { getRequestContext } from '@/observability/components/express/requestContext'
|
||||
import { subscriptionLogger } from '@/observability/logging'
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
type SubscriptionResponse = { errors?: GraphQLError[]; data?: any }
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { logger } from '@/logging/logging'
|
||||
import { logger } from '@/observability/logging'
|
||||
import { randomUUID } from 'crypto'
|
||||
import HttpLogger from 'pino-http'
|
||||
import type { NextFunction, Response } from 'express'
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { REQUEST_ID_HEADER } from '@/logging/expressLogging'
|
||||
import { REQUEST_ID_HEADER } from '@/observability/components/express/expressLogging'
|
||||
import { asyncRequestContextEnabled } from '@/modules/shared/helpers/envHelper'
|
||||
import type express from 'express'
|
||||
import { AsyncLocalStorage } from 'node:async_hooks'
|
||||
+1
-1
@@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
import { Histogram, Registry } from 'prom-client'
|
||||
import type { Metric } from '@/logging/highFrequencyMetrics/highfrequencyMonitoring'
|
||||
import type { Metric } from '@/observability/components/highFrequencyMetrics/highfrequencyMonitoring'
|
||||
|
||||
const NODEJS_HEAP_SIZE_TOTAL = 'nodejs_heap_size_total_bytes_high_frequency'
|
||||
const NODEJS_HEAP_SIZE_USED = 'nodejs_heap_size_used_bytes_high_frequency'
|
||||
+3
-3
@@ -5,9 +5,9 @@
|
||||
*/
|
||||
|
||||
import { Histogram, Registry } from 'prom-client'
|
||||
import { processCpuTotal } from '@/logging/highFrequencyMetrics/processCPUTotal'
|
||||
import { heapSizeAndUsed } from '@/logging/highFrequencyMetrics/heapSizeAndUsed'
|
||||
import { knexConnections } from '@/logging/highFrequencyMetrics/knexConnectionPool'
|
||||
import { processCpuTotal } from '@/observability/components/highFrequencyMetrics/processCPUTotal'
|
||||
import { heapSizeAndUsed } from '@/observability/components/highFrequencyMetrics/heapSizeAndUsed'
|
||||
import { knexConnections } from '@/observability/components/highFrequencyMetrics/knexConnectionPool'
|
||||
import { type Knex } from 'knex'
|
||||
|
||||
type MetricConfig = {
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user