import { keyMirror } from './util/keymirror';

export const ALWAYSAI_CLI_EXECUTABLE_NAME = 'aai';
export const ALWAYSAI_DESKTOP_SOFTWARE_NAME = 'alwaysAI Desktop';
export const LOCAL_MODEL_VERSION_PACKAGE_NUMBER = 0;

export const DOCKER_EDGEIQ_REPOSITORY_NAME = 'alwaysai/edgeiq';
export const DOCKER_IMAGE_ID_INITIAL_VALUE = '';
export const DOCKER_TEST_IMAGE_ID = 'busybox';
export const EMPTY_DOCKER_IMAGE_ID_MESSAGE = `Empty docker image ID. Did you run "${ALWAYSAI_CLI_EXECUTABLE_NAME} app install"?`;

export const AAI_IGNORE_FILENAME = '.aai-ignore';

// From https://stackoverflow.com/questions/46155/how-to-validate-an-email-address-in-javascript
export const VALID_EMAIL_REGULAR_EXPRESSION =
  /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
export const PLEASE_REPORT_THIS_ERROR_MESSAGE =
  'Please report this error message to support@alwaysai.co';

export const NOT_IN_ORG_ERROR_MESSAGE = `This account does not currently belong to an organization and cannot access this feature. ${PLEASE_REPORT_THIS_ERROR_MESSAGE}.`;

export const SystemId = keyMirror({
  local: null,
  development: null,
  qa: null,
  production: null
});

export type SystemId = keyof typeof SystemId;

export const SYSTEM_IDS = Object.keys(SystemId) as SystemId[];
