Migrate exportData

Summary: _typescript_

Reviewed By: jknoxville

Differential Revision: D16711940

fbshipit-source-id: 2e0e5cd0440fe1cdb7bd29af94e22c7f6b9137f8
This commit is contained in:
Pascal Hartig
2019-08-12 03:44:51 -07:00
committed by Facebook Github Bot
parent 8c05c73c5f
commit 99ca6aa7e8
9 changed files with 74 additions and 73 deletions

View File

@@ -12,7 +12,7 @@ import yargs from 'yargs';
import dispatcher from '../src/dispatcher/index.tsx'; import dispatcher from '../src/dispatcher/index.tsx';
import reducers from '../src/reducers/index.tsx'; import reducers from '../src/reducers/index.tsx';
import {init as initLogger} from '../src/fb-stubs/Logger.tsx'; import {init as initLogger} from '../src/fb-stubs/Logger.tsx';
import {exportStore, pluginsClassMap} from '../src/utils/exportData.js'; import {exportStore, pluginsClassMap} from '../src/utils/exportData.tsx';
import { import {
exportMetricsWithoutTrace, exportMetricsWithoutTrace,
exportMetricsFromTrace, exportMetricsFromTrace,

View File

@@ -6,7 +6,7 @@
*/ */
import type {FlipperPlugin, FlipperDevicePlugin} from './plugin.tsx'; import type {FlipperPlugin, FlipperDevicePlugin} from './plugin.tsx';
import {showOpenDialog} from './utils/exportData.js'; import {showOpenDialog} from './utils/exportData.tsx';
import { import {
setExportDataToFileActiveSheet, setExportDataToFileActiveSheet,
setActiveSheet, setActiveSheet,

View File

@@ -12,7 +12,7 @@ import {dirname} from 'path';
import {selectDevice, preferDevice} from '../reducers/connections.tsx'; import {selectDevice, preferDevice} from '../reducers/connections.tsx';
import {default as which} from 'which'; import {default as which} from 'which';
import {promisify} from 'util'; import {promisify} from 'util';
import {showOpenDialog} from '../utils/exportData'; import {showOpenDialog} from '../utils/exportData.tsx';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import type BaseDevice from '../devices/BaseDevice.tsx'; import type BaseDevice from '../devices/BaseDevice.tsx';

View File

@@ -24,7 +24,7 @@ import {
import type {Logger} from '../fb-interfaces/Logger.js'; import type {Logger} from '../fb-interfaces/Logger.js';
import {Idler} from '../utils/Idler'; import {Idler} from '../utils/Idler';
import {shareFlipperData} from '../fb-stubs/user.tsx'; import {shareFlipperData} from '../fb-stubs/user.tsx';
import {exportStore, EXPORT_FLIPPER_TRACE_EVENT} from '../utils/exportData.js'; import {exportStore, EXPORT_FLIPPER_TRACE_EVENT} from '../utils/exportData.tsx';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import {clipboard} from 'electron'; import {clipboard} from 'electron';
import ShareSheetErrorList from './ShareSheetErrorList.js'; import ShareSheetErrorList from './ShareSheetErrorList.js';

View File

@@ -28,7 +28,7 @@ import {Idler} from '../utils/Idler';
import { import {
exportStoreToFile, exportStoreToFile,
EXPORT_FLIPPER_TRACE_EVENT, EXPORT_FLIPPER_TRACE_EVENT,
} from '../utils/exportData.js'; } from '../utils/exportData.tsx';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import ShareSheetErrorList from './ShareSheetErrorList.js'; import ShareSheetErrorList from './ShareSheetErrorList.js';

View File

@@ -7,7 +7,7 @@
import {default as BaseDevice} from '../../devices/BaseDevice.tsx'; import {default as BaseDevice} from '../../devices/BaseDevice.tsx';
import {default as ArchivedDevice} from '../../devices/ArchivedDevice.tsx'; import {default as ArchivedDevice} from '../../devices/ArchivedDevice.tsx';
import {processStore} from '../exportData'; import {processStore} from '../exportData.tsx';
import {FlipperDevicePlugin} from '../../plugin.tsx'; import {FlipperDevicePlugin} from '../../plugin.tsx';
import type {Notification} from '../../plugin.tsx'; import type {Notification} from '../../plugin.tsx';
import type {ClientExport} from '../../Client.tsx'; import type {ClientExport} from '../../Client.tsx';

View File

@@ -4,18 +4,18 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* @format * @format
*/ */
import type {Store, MiddlewareAPI} from '../reducers.tsx'; import {getInstance as getLogger} from '../fb-stubs/Logger';
import {getInstance as getLogger} from '../fb-stubs/Logger.tsx'; import {Store, MiddlewareAPI} from '../reducers';
import type {DeviceExport} from '../devices/BaseDevice.tsx'; import {DeviceExport} from '../devices/BaseDevice';
import type {State as PluginStates} from '../reducers/pluginStates.tsx'; import {State as PluginStates} from '../reducers/pluginStates';
import type {PluginNotification} from '../reducers/notifications.tsx'; import {PluginNotification} from '../reducers/notifications';
import type {ClientExport} from '../Client.tsx'; import {ClientExport} from '../Client.js';
import type {State as PluginStatesState} from '../reducers/pluginStates.tsx'; import {State as PluginStatesState} from '../reducers/pluginStates';
import {pluginKey} from '../reducers/pluginStates.tsx'; import {pluginKey} from '../reducers/pluginStates';
import {FlipperDevicePlugin, FlipperPlugin, callClient} from '../plugin.tsx'; import {FlipperDevicePlugin, FlipperPlugin, callClient} from '../plugin';
import {default as BaseDevice} from '../devices/BaseDevice.tsx'; import {default as BaseDevice} from '../devices/BaseDevice';
import {default as Client} from '../Client.tsx'; import {default as ArchivedDevice} from '../devices/ArchivedDevice';
import {default as ArchivedDevice} from '../devices/ArchivedDevice.tsx'; import {default as Client} from '../Client';
import fs from 'fs'; import fs from 'fs';
import uuid from 'uuid'; import uuid from 'uuid';
import {remote} from 'electron'; import {remote} from 'electron';
@@ -23,47 +23,47 @@ import {serialize, deserialize} from './serialization';
import {readCurrentRevision} from './packageMetadata.js'; import {readCurrentRevision} from './packageMetadata.js';
import {tryCatchReportPlatformFailures} from './metrics'; import {tryCatchReportPlatformFailures} from './metrics';
import {promisify} from 'util'; import {promisify} from 'util';
import promiseTimeout from './promiseTimeout.tsx'; import promiseTimeout from './promiseTimeout';
import {Idler} from './Idler'; import {Idler} from './Idler';
export const IMPORT_FLIPPER_TRACE_EVENT = 'import-flipper-trace'; export const IMPORT_FLIPPER_TRACE_EVENT = 'import-flipper-trace';
export const EXPORT_FLIPPER_TRACE_EVENT = 'export-flipper-trace'; export const EXPORT_FLIPPER_TRACE_EVENT = 'export-flipper-trace';
export type ExportType = {| export type ExportType = {
fileVersion: string, fileVersion: string;
flipperReleaseRevision: ?string, flipperReleaseRevision: string | null;
clients: Array<ClientExport>, clients: Array<ClientExport>;
device: ?DeviceExport, device: DeviceExport | null;
store: { store: {
pluginStates: PluginStates, pluginStates: PluginStates;
activeNotifications: Array<PluginNotification>, activeNotifications: Array<PluginNotification>;
}, };
|}; };
type ProcessPluginStatesOptions = {| type ProcessPluginStatesOptions = {
clients: Array<ClientExport>, clients: Array<ClientExport>;
serial: string, serial: string;
allPluginStates: PluginStatesState, allPluginStates: PluginStatesState;
devicePlugins: Map<string, Class<FlipperDevicePlugin<>>>, devicePlugins: Map<string, typeof FlipperDevicePlugin>;
selectedPlugins: Array<string>, selectedPlugins: Array<string>;
statusUpdate?: (msg: string) => void, statusUpdate?: (msg: string) => void;
|}; };
type ProcessNotificationStatesOptions = { type ProcessNotificationStatesOptions = {
clients: Array<ClientExport>, clients: Array<ClientExport>;
serial: string, serial: string;
allActiveNotifications: Array<PluginNotification>, allActiveNotifications: Array<PluginNotification>;
devicePlugins: Map<string, Class<FlipperDevicePlugin<>>>, devicePlugins: Map<string, typeof FlipperDevicePlugin>;
statusUpdate?: (msg: string) => void, statusUpdate?: (msg: string) => void;
}; };
type AddSaltToDeviceSerialOptions = { type AddSaltToDeviceSerialOptions = {
salt: string, salt: string;
device: BaseDevice, device: BaseDevice;
clients: Array<ClientExport>, clients: Array<ClientExport>;
pluginStates: PluginStatesState, pluginStates: PluginStatesState;
pluginNotification: Array<PluginNotification>, pluginNotification: Array<PluginNotification>;
selectedPlugins: Array<string>, selectedPlugins: Array<string>;
statusUpdate?: (msg: string) => void, statusUpdate?: (msg: string) => void;
}; };
export function processClients( export function processClients(
@@ -81,10 +81,10 @@ export function processClients(
export function pluginsClassMap( export function pluginsClassMap(
plugins: PluginStates, plugins: PluginStates,
): Map<string, Class<FlipperDevicePlugin<> | FlipperPlugin<>>> { ): Map<string, typeof FlipperDevicePlugin | typeof FlipperPlugin> {
const pluginsMap: Map< const pluginsMap: Map<
string, string,
Class<FlipperDevicePlugin<> | FlipperPlugin<>>, typeof FlipperDevicePlugin | typeof FlipperPlugin
> = new Map([]); > = new Map([]);
plugins.clientPlugins.forEach((val, key) => { plugins.clientPlugins.forEach((val, key) => {
pluginsMap.set(key, val); pluginsMap.set(key, val);
@@ -216,7 +216,7 @@ const addSaltToDeviceSerial = async (
} }
return {...notif, client: notif.client.replace(serial, newSerial)}; return {...notif, client: notif.client.replace(serial, newSerial)};
}); });
const revision: ?string = await readCurrentRevision(); const revision: string | null = await readCurrentRevision();
return { return {
fileVersion: remote.app.getVersion(), fileVersion: remote.app.getVersion(),
flipperReleaseRevision: revision, flipperReleaseRevision: revision,
@@ -229,20 +229,20 @@ const addSaltToDeviceSerial = async (
}; };
}; };
type ProcessStoreOptions = {| type ProcessStoreOptions = {
activeNotifications: Array<PluginNotification>, activeNotifications: Array<PluginNotification>;
device: ?BaseDevice, device: BaseDevice | null;
pluginStates: PluginStatesState, pluginStates: PluginStatesState;
clients: Array<ClientExport>, clients: Array<ClientExport>;
devicePlugins: Map<string, Class<FlipperDevicePlugin<>>>, devicePlugins: Map<string, typeof FlipperDevicePlugin>;
salt: string, salt: string;
selectedPlugins: Array<string>, selectedPlugins: Array<string>;
statusUpdate?: (msg: string) => void, statusUpdate?: (msg: string) => void;
|}; };
export const processStore = async ( export const processStore = async (
options: ProcessStoreOptions, options: ProcessStoreOptions,
): Promise<?ExportType> => { ): Promise<ExportType | null> => {
const { const {
activeNotifications, activeNotifications,
device, device,
@@ -289,10 +289,10 @@ export const processStore = async (
export async function fetchMetadata( export async function fetchMetadata(
pluginStates: PluginStatesState, pluginStates: PluginStatesState,
pluginsMap: Map<string, Class<FlipperDevicePlugin<> | FlipperPlugin<>>>, pluginsMap: Map<string, typeof FlipperDevicePlugin | typeof FlipperPlugin>,
store: MiddlewareAPI, store: MiddlewareAPI,
statusUpdate?: (msg: string) => void, statusUpdate?: (msg: string) => void,
): Promise<{pluginStates: PluginStatesState, errorArray: Array<Error>}> { ): Promise<{pluginStates: PluginStatesState; errorArray: Array<Error>}> {
const newPluginState = {...pluginStates}; const newPluginState = {...pluginStates};
const errorArray: Array<Error> = []; const errorArray: Array<Error> = [];
const clients = store.getState().connections.clients; const clients = store.getState().connections.clients;
@@ -311,9 +311,10 @@ export async function fetchMetadata(
? client.plugins.filter(plugin => selectedPlugins.includes(plugin)) ? client.plugins.filter(plugin => selectedPlugins.includes(plugin))
: client.plugins; : client.plugins;
for (const plugin of selectedFilteredPlugins) { for (const plugin of selectedFilteredPlugins) {
const pluginClass: ?Class< const pluginClass:
FlipperDevicePlugin<> | FlipperPlugin<>, | typeof FlipperDevicePlugin
> = plugin ? pluginsMap.get(plugin) : null; | typeof FlipperPlugin
| null = plugin ? pluginsMap.get(plugin) : null;
const exportState = pluginClass ? pluginClass.exportPersistedState : null; const exportState = pluginClass ? pluginClass.exportPersistedState : null;
if (exportState) { if (exportState) {
const key = pluginKey(client.id, plugin); const key = pluginKey(client.id, plugin);
@@ -339,7 +340,7 @@ export async function fetchMetadata(
export async function getStoreExport( export async function getStoreExport(
store: MiddlewareAPI, store: MiddlewareAPI,
statusUpdate?: (msg: string) => void, statusUpdate?: (msg: string) => void,
): Promise<{exportData: ?ExportType, errorArray: Array<Error>}> { ): Promise<{exportData: ExportType | null; errorArray: Array<Error>}> {
const state = store.getState(); const state = store.getState();
const {clients} = state.connections; const {clients} = state.connections;
const {pluginStates} = state; const {pluginStates} = state;
@@ -353,7 +354,7 @@ export async function getStoreExport(
const pluginsMap: Map< const pluginsMap: Map<
string, string,
Class<FlipperDevicePlugin<> | FlipperPlugin<>>, typeof FlipperDevicePlugin | typeof FlipperPlugin
> = new Map([]); > = new Map([]);
plugins.clientPlugins.forEach((val, key) => { plugins.clientPlugins.forEach((val, key) => {
pluginsMap.set(key, val); pluginsMap.set(key, val);
@@ -390,7 +391,7 @@ export function exportStore(
store: MiddlewareAPI, store: MiddlewareAPI,
idler?: Idler, idler?: Idler,
statusUpdate?: (msg: string) => void, statusUpdate?: (msg: string) => void,
): Promise<{serializedString: string, errorArray: Array<Error>}> { ): Promise<{serializedString: string; errorArray: Array<Error>}> {
getLogger().track('usage', EXPORT_FLIPPER_TRACE_EVENT); getLogger().track('usage', EXPORT_FLIPPER_TRACE_EVENT);
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
try { try {

View File

@@ -9,8 +9,8 @@ import {serialize} from './serialization';
import type {State as PluginStatesState} from '../reducers/pluginStates.tsx'; import type {State as PluginStatesState} from '../reducers/pluginStates.tsx';
import type {Store} from '../reducers/index.tsx'; import type {Store} from '../reducers/index.tsx';
import fs from 'fs'; import fs from 'fs';
import type {ExportType} from './exportData'; import type {ExportType} from './exportData.tsx';
import {fetchMetadata, pluginsClassMap} from './exportData'; import {fetchMetadata, pluginsClassMap} from './exportData.tsx';
import {deserializeObject} from './serialization'; import {deserializeObject} from './serialization';
export type MetricType = {[metricName: string]: number}; export type MetricType = {[metricName: string]: number};

View File

@@ -7,7 +7,7 @@
import {FlipperDevicePlugin, FlipperPlugin} from '../plugin'; import {FlipperDevicePlugin, FlipperPlugin} from '../plugin';
import BaseDevice from '../devices/BaseDevice'; import BaseDevice from '../devices/BaseDevice';
import {State as PluginStatesState} from '../reducers/pluginStates'; import {State as PluginStatesState} from '../reducers/pluginStates';
import {pluginsClassMap} from './exportData.js'; import {pluginsClassMap} from './exportData';
import {State as PluginsState} from '../reducers/plugins'; import {State as PluginsState} from '../reducers/plugins';
import {PluginDefinition} from '../dispatcher/plugins'; import {PluginDefinition} from '../dispatcher/plugins';