/**
 * Copyright IBM Corp. 2024, 2025
 */
export class AppConstants {
  public static readonly KIND_FILE = 'file';
  public static readonly KIND_DIRECTORY = 'directory';
  public static readonly STUDIO_PROJECT_FILENAME = '.apistudio-projects';
  public static readonly CRSWAP_FILE = '.crswap';
  public static readonly YAMLContent = 'YAML Content';
  public static readonly YAMLStructure = 'YAML Structure';
  public static readonly pathVariable = '$path';
  public static readonly YAML_FILE = 'STU-YAML_FILE';

  // ASSET KINDS
  public static readonly POLICY: string = 'Policy';
  public static readonly MOCK_END_POINT: string = 'MockEndpoint';
  public static readonly MOCK_RESPONSE: string = 'MockResponse';
  public static readonly POLICY_SEQ = 'policy-sequence';
  public static readonly apiSpec = 'api-spec';

  // EXCEPTIONS
  public static readonly EXCEPTION_DIRECTORY_ACCESS =
    'Exception occured while accessing the directory.';

  // ERROR MESSAGES
  public static readonly VALIDATION_ERROR_CODE = 'STU-VAL_ERR';
  public static readonly PARSING_EXCEPTION = (fileName = '') =>
    `Exception occured while parsing ${fileName}.`;
  public static readonly ERROR_INVALID_PROJECT =
    'Invalid project. Please ensure that the project file is valid';
  public static readonly ERROR_STUDIO_PROJECTS_FILE_NOT_FOUND = (rootDirAlias: string) =>
    `.apistudio-projects file not found in root directory with alias ${rootDirAlias}`;
  public static readonly ERROR_ASSET_PARSING = (fileName: string) =>
    `Error in parsing file: ${fileName}`;
  public static readonly FAILED_TO_LOAD_PROJECT = 'Failed to load project';
  public static readonly NO_ROOT_DIR_IN_PROJECT = 'No projects folder configured in the project';
  public static readonly NO_PROJECT_DIR_FOUND = 'No Project Directory Found';
  public static readonly DIR_NOT_EXISTS = 'Directory not exists';
  public static readonly ASSET_META_DATA_NOT_FOUND = 'Asset metadata not found';
  public static readonly DUPLICATE_PROJECT_EXCEPTION = (projectName = '') =>
    `Project with name ${projectName} already exists.`;

  public static readonly TEST = 'test';
  public static readonly ASSERTION = 'assertion';
  public static readonly ENVIRONMENT = 'environment';
  public static readonly MCPTOOL = 'mcptool';
  public static readonly MCPSERVER = 'mcpserverconfig';

  public static readonly DATAPOWERASSEMBLY = 'datapowerassembly';

  public static readonly ALLOWED_ENDPOINTS = [
    'default-endpoint',
    'conditional-endpoints',
    'loadbalance-endpoints',
    'messageConfig',
    'content-based-endpoints',
    'dynamic-endpoints',
    'mock-endpoint',
  ];

  public static IGNORE_ASSETS_DURING_DEPLOY = ['datapowerassembly'];

  // SOAP API Gateway Validation
  public static readonly SOAP_ALLOWED_GATEWAYS = ['datapower-api-gateway', 'datapower-gateway'];
  public static readonly ERROR_SOAP_GATEWAY_RESTRICTION = `SOAP APIs are supported only on DataPower API Gateway (v6) and DataPower Gateway (v5)`;
}
