Skip to content
Snippets Groups Projects
configuration.ts 2.53 KiB
import {
  Environment,
  OrchestratorConfig,
} from '@orchestrator-ui/orchestrator-ui-components';
import getConfig from 'next/config';

export type gsoConfig = {
  opaPublicBundleUrl: string;
  oidcClientId: string;
};

const { publicRuntimeConfig } = getConfig();

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 PROCESS_STATUS_COUNTS_ENDPOINT = '/processes/status-counts';
const PROCESSES_ENDPOINT = '/processes';
const SUBSCRIPTION_PROCESSES_ENDPOINT =
  '/processes/process-subscriptions-by-subscription-id';
const DEFAULT_WORKFLOW_INFORMATION_LINK_URL = 'http://localhost:8080';

export const getInitialOrchestratorConfig = (): OrchestratorConfig => {
  const orchestratorGraphqlBaseUrl =
    process.env.ORCHESTRATOR_GRAPHQL_HOST &&
    process.env.ORCHESTRATOR_GRAPHQL_PATH
      ? `${process.env.ORCHESTRATOR_GRAPHQL_HOST}${process.env.ORCHESTRATOR_GRAPHQL_PATH}`
      : DEFAULT_GRAPHQL_CORE_ENDPOINT;

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

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

export const getInitialGsoConfig = (): gsoConfig => {
  return {
    opaPublicBundleUrl: publicRuntimeConfig.OPA_PUBLIC_BUNDLE_URL ?? '',
    oidcClientId: publicRuntimeConfig.NEXTAUTH_CLIENT_ID ?? '',
  };
};