Skip to content
Snippets Groups Projects
Select Git revision
  • 0be37ada2dbba90d2391e367ee12fe22117b4ed7
  • master default protected
  • gh-pages
  • dependabot/npm_and_yarn/eslint-plugin-jsdoc-51.0.3
  • dependabot/npm_and_yarn/nock-14.0.5
  • dependabot/npm_and_yarn/react-19.1.0
  • dependabot/npm_and_yarn/react-dom-19.1.0
  • server-2025-02-01-6100669a
  • server-2024-11-01-87cba042
  • server-2024-10-01-6875b7c8
  • dependabot/npm_and_yarn/path-to-regexp-8.2.0
  • server-2024-09-01-3d52575c
  • daily-tests-gha2
  • daily-tests-gha
  • server-2023-12-01-92d8fb8e
  • server-2023-11-01-a80c93fd
  • server-2023-10-01-31096085
  • coc-v2
  • server-2023-09-01-8edc3810
  • server-2023-08-01-75858a03
  • server-2023-07-01-02183d8d
  • 5.0.2
  • 5.0.1
  • 5.0.0
  • server-2025-06-01
  • server-2025-05-01
  • server-2025-04-03
  • server-2025-03-02
  • server-2025-03-01
  • server-2025-02-02
  • server-2025-01-01
  • server-2024-12-01
  • server-2024-11-02
  • 4.1.0
  • server-2024-09-25
  • server-2024-09-02
  • server-2024-08-01
  • server-2024-07-01
  • 4.0.0
  • server-2024-06-01
  • server-2024-05-01
41 results

server.js

Blame
  • server.js 1.95 KiB
    import fs from 'fs'
    import path from 'path'
    import { fileURLToPath } from 'url'
    import configModule from 'config'
    import Sentry from '@sentry/node'
    import Server from './core/server/server.js'
    
    // Set up Sentry reporting as early in the process as possible.
    const config = configModule.util.toObject()
    const disabledIntegrations = ['Console', 'Http']
    Sentry.init({
      dsn: process.env.SENTRY_DSN || config.private.sentry_dsn,
      integrations: integrations => {
        const filtered = integrations.filter(
          integration => !disabledIntegrations.includes(integration.name)
        )
        if (filtered.length !== integrations.length - disabledIntegrations.length) {
          throw Error(
            `An error occurred while filtering integrations. The following inetgrations were found: ${integrations.map(
              ({ name }) => name
            )}`
          )
        }
        return filtered
      },
    })
    
    if (+process.argv[2]) {
      config.public.bind.port = +process.argv[2]
    }
    if (process.argv[3]) {
      config.public.bind.address = process.argv[3]
    }
    
    console.log('Configuration:')
    console.dir(config.public, { depth: null })
    
    if (fs.existsSync('.env')) {
      console.error(
        'Legacy .env file found. It should be deleted and replaced with environment variables or config/local.yml'
      )
      process.exit(1)
    }
    
    if (config.private.redis_url != null) {
      console.warn(
        'RedisTokenPersistence is deprecated for token pooling and will be removed in a future release. Migrate to SqlTokenPersistence'
      )
      console.warn(
        'See https://github.com/badges/shields/blob/master/CHANGELOG.md#server-2023-03-01 for more info'
      )
    }
    
    const legacySecretsPath = path.join(
      path.dirname(fileURLToPath(import.meta.url)),
      'private',
      'secret.json'
    )
    if (fs.existsSync(legacySecretsPath)) {
      console.error(
        `Legacy secrets file found at ${legacySecretsPath}. It should be deleted and secrets replaced with environment variables or config/local.yml`
      )
      process.exit(1)
    }
    export const server = new Server(config)
    
    await server.start()