Skip to content
Snippets Groups Projects
configuration.ts 2.81 KiB
import { getEnvironmentVariables } from '@/utils/getEnvironmentVariables';
import {
  Environment,
  OrchestratorConfig,
} from '@orchestrator-ui/orchestrator-ui-components';

const DEFAULT_GRAPHQL_CORE_ENDPOINT = 'http://localhost:8080/api/graphql';
const DEFAULT_ORCHESTRATOR_API_BASE_URL = 'http://localhost:8080/api';
const DEFAULT_ORCHESTRATOR_WEBSOCKET_URL = 'ws://localhost:8080';

const ENGINE_STATUS_ENDPOINT = '/settings/status';
const PROCESSES_ENDPOINT = '/processes';
const SUBSCRIPTION_PROCESSES_ENDPOINT =
  '/processes/process-subscriptions-by-subscription-id';
const DEFAULT_WORKFLOW_INFORMATION_LINK_URL = 'http://localhost:8080';

type OrchestratorEnvVars = {
  ORCHESTRATOR_GRAPHQL_HOST: string;
  ORCHESTRATOR_GRAPHQL_PATH: string;
  ORCHESTRATOR_API_HOST: string;
  ORCHESTRATOR_API_PATH: string;
  ENVIRONMENT_NAME: string;
  ORCHESTRATOR_WEBSOCKET_URL: string;
  AUTH_ACTIVE: string;
  USE_WEB_SOCKETS: string;
  USE_THEME_TOGGLE: string;
  WORKFLOW_INFORMATION_LINK_URL: string;
  SHOW_WORKFLOW_INFORMATION_LINK: string;
};

export const getInitialOrchestratorConfig = (): OrchestratorConfig => {
  const env = getEnvironmentVariables<OrchestratorEnvVars>([
    'ORCHESTRATOR_GRAPHQL_HOST',
    'ORCHESTRATOR_GRAPHQL_PATH',
    'ORCHESTRATOR_API_HOST',
    'ORCHESTRATOR_API_PATH',
    'ENVIRONMENT_NAME',
    'ORCHESTRATOR_WEBSOCKET_URL',
    'AUTH_ACTIVE',
    'USE_WEB_SOCKETS',
    'USE_THEME_TOGGLE',
    'WORKFLOW_INFORMATION_LINK_URL',
    'SHOW_WORKFLOW_INFORMATION_LINK',
  ]);

  const orchestratorGraphqlBaseUrl =
    env.ORCHESTRATOR_GRAPHQL_HOST && env.ORCHESTRATOR_GRAPHQL_PATH
      ? `${env.ORCHESTRATOR_GRAPHQL_HOST}${env.ORCHESTRATOR_GRAPHQL_PATH}`
      : DEFAULT_GRAPHQL_CORE_ENDPOINT;

  const orchestratorApiBaseUrl =
    env.ORCHESTRATOR_API_HOST && env.ORCHESTRATOR_API_PATH
      ? `${env.ORCHESTRATOR_API_HOST}${env.ORCHESTRATOR_API_PATH}`
      : DEFAULT_ORCHESTRATOR_API_BASE_URL;

  return {
    orchestratorApiBaseUrl,
    engineStatusEndpoint: `${orchestratorApiBaseUrl}${ENGINE_STATUS_ENDPOINT}`,
    graphqlEndpointCore: orchestratorGraphqlBaseUrl,
    processesEndpoint: `${orchestratorApiBaseUrl}${PROCESSES_ENDPOINT}`,
    environmentName: env.ENVIRONMENT_NAME ?? Environment.DEVELOPMENT,
    subscriptionProcessesEndpoint: `${orchestratorApiBaseUrl}${SUBSCRIPTION_PROCESSES_ENDPOINT}`,
    orchestratorWebsocketUrl:
      env.ORCHESTRATOR_WEBSOCKET_URL ?? DEFAULT_ORCHESTRATOR_WEBSOCKET_URL,
    authActive: env.AUTH_ACTIVE?.toLowerCase() !== 'false',
    useWebSockets: env.USE_WEB_SOCKETS?.toLowerCase() === 'true',
    useThemeToggle: env.USE_THEME_TOGGLE?.toLowerCase() === 'true',
    workflowInformationLinkUrl:
      env.WORKFLOW_INFORMATION_LINK_URL ??
      DEFAULT_WORKFLOW_INFORMATION_LINK_URL,
    showWorkflowInformationLink:
      env.SHOW_WORKFLOW_INFORMATION_LINK?.toLowerCase() === 'true',
  };
};