import config from 'config' import { isTestInstance } from '../helpers/core-utils' const API_VERSION = 'v1' const CONFIG = { LISTEN: { PORT: config.get('listen.port') }, WEBSERVER: { SCHEME: config.get('webserver.https') === true ? 'https' : 'http', HOSTNAME: config.get('webserver.hostname'), PORT: config.get('webserver.port') }, MEILISEARCH: { HOST: config.get('meilisearch.host'), API_KEY: config.get('meilisearch.api_key'), INDEXES: { VIDEOS: config.get('meilisearch.indexes.videos'), CHANNELS: config.get('meilisearch.indexes.channels'), PLAYLISTS: config.get('meilisearch.indexes.playlists') }, FORCE_SETTINGS_UPDATE_AT_STARTUP: config.get('meilisearch.force_settings_update_at_startup') }, LOG: { LEVEL: config.get('log.level') }, SEARCH_INSTANCE: { NAME: config.get('search-instance.name'), NAME_IMAGE: config.get('search-instance.name_image'), SEARCH_IMAGE: config.get('search-instance.search_image'), DESCRIPTION: config.get('search-instance.description'), LEGAL_NOTICES_URL: config.get('search-instance.legal_notices_url'), THEME: config.get('search-instance.theme') }, INSTANCES_INDEX: { URL: config.get('instances-index.url'), PUBLIC_URL: config.get('instances-index.public_url'), WHITELIST: { ENABLED: config.get('instances-index.whitelist.enabled'), HOSTS: config.get('instances-index.whitelist.hosts') } }, API: { BLACKLIST: { ENABLED: config.get('api.blacklist.enabled'), HOSTS: config.get('api.blacklist.hosts') } }, INDEXER: { HOST_CONCURRENCY: config.get('indexer.host_concurrency'), BULK_INDEXATION_INTERVAL_MS: config.get('indexer.bulk_indexation_interval_ms'), VIDEOS: { MAX_DESCRIPTION_CHARACTERS: config.get('indexer.videos.max_description_characters') } } } const SORTABLE_COLUMNS = { VIDEOS_SEARCH: [ '_rankingScore', 'match', 'name', 'duration', 'createdAt', 'publishedAt', 'originallyPublishedAt', 'views', 'likes' ], CHANNELS_SEARCH: [ '_rankingScore', 'match', 'displayName', 'createdAt' ], PLAYLISTS_SEARCH: [ '_rankingScore', 'match', 'displayName', 'createdAt' ] } const PAGINATION_START = { MAX: 9000 } const PAGINATION_COUNT = { DEFAULT: 20, MAX: 500 } const SCHEDULER_INTERVALS_MS = { indexation: 60000 * 60 * 24 // 24 hours } const INDEXER_COUNT = 20 const INDEXER_LIMIT = 500000 const INDEXER_QUEUE_CONCURRENCY = 3 const REQUESTS = { MAX_RETRIES: 10, WAIT: 10000 // 10 seconds } function getWebserverUrl () { if (CONFIG.WEBSERVER.PORT === 80 || CONFIG.WEBSERVER.PORT === 443) { return CONFIG.WEBSERVER.SCHEME + '://' + CONFIG.WEBSERVER.HOSTNAME } return CONFIG.WEBSERVER.SCHEME + '://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT } if (isTestInstance()) { SCHEDULER_INTERVALS_MS.indexation = 1000 * 60 * 5 // 5 minutes } export { getWebserverUrl, CONFIG, API_VERSION, PAGINATION_COUNT, PAGINATION_START, SORTABLE_COLUMNS, INDEXER_QUEUE_CONCURRENCY, SCHEDULER_INTERVALS_MS, INDEXER_COUNT, INDEXER_LIMIT, REQUESTS }