| 123456789101112131415161718192021222324252627282930313233343536 | 
							- // @flow
 - 
 - import { NativeModules } from 'react-native';
 - 
 - import { loadScript } from '../util';
 - import logger from './logger';
 - 
 - export * from './functions.any';
 - 
 - const { JavaScriptSandbox } = NativeModules;
 - 
 - /**
 -  * Loads config.js from a specific remote server.
 -  *
 -  * @param {string} url - The URL to load.
 -  * @returns {Promise<Object>}
 -  */
 - export async function loadConfig(url: string): Promise<Object> {
 -     try {
 -         const configTxt = await loadScript(url, 2.5 * 1000 /* Timeout in ms */, true /* skipeval */);
 -         const configJson = await JavaScriptSandbox.evaluate(`${configTxt}\nJSON.stringify(config);`);
 -         const config = JSON.parse(configJson);
 - 
 -         if (typeof config !== 'object') {
 -             throw new Error('config is not an object');
 -         }
 - 
 -         logger.info(`Config loaded from ${url}`);
 - 
 -         return config;
 -     } catch (err) {
 -         logger.error(`Failed to load config from ${url}`, err);
 - 
 -         throw err;
 -     }
 - }
 
 
  |