/** * Copyright 2018-present Facebook. * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * @format */ import {remote} from 'electron'; export type ProcessConfig = { disabledPlugins: Set; pluginPaths: Array; lastWindowPosition: { x: number; y: number; width: number; height: number; } | null; screenCapturePath: string | null; launcherMsg: string | null; updaterEnabled: boolean; // Controls whether to delegate to the launcher if present. launcherEnabled: boolean; }; let configObj: ProcessConfig | null = null; export default function config(): ProcessConfig { if (configObj === null) { const json = JSON.parse( (remote && remote.process.env.CONFIG) || process.env.CONFIG || '{}', ); configObj = { disabledPlugins: new Set(json.disabledPlugins || []), pluginPaths: json.pluginPaths || [], lastWindowPosition: json.lastWindowPosition, launcherMsg: json.launcherMsg, updaterEnabled: typeof json.updaterEnabled === 'boolean' ? json.updaterEnabled : true, screenCapturePath: json.screenCapturePath, launcherEnabled: typeof json.launcherEnabled === 'boolean' ? json.launcherEnabled : true, }; } return configObj; } export function resetConfigForTesting() { configObj = null; }