server/idapiConfig.ts (22 lines of code) (raw):

import { s3ConfigPromise } from './awsIntegration'; import { log } from './log'; export interface IdapiConfig { host: string; accessToken: string; } // eslint-disable-next-line @typescript-eslint/no-explicit-any -- assume the config argument could be a range of types? const isValidConfig = (config: any): config is IdapiConfig => config.host && config.accessToken; export const idapiConfigPromise: Promise<IdapiConfig | undefined> = s3ConfigPromise<IdapiConfig>('host', 'accessToken')('idapi'); idapiConfigPromise.then((idapiConfig) => { if (idapiConfig) { log.info('IDAPI: using ' + idapiConfig.host); } }); export const getConfig = async (): Promise<IdapiConfig> => { const config = await idapiConfigPromise; if (!isValidConfig(config)) { throw new Error('Error loading a valid config'); } return config; };