Migrate exportMetrics

Summary: _typescript_

Reviewed By: jknoxville

Differential Revision: D16712087

fbshipit-source-id: 63dc45a26eb8112aef2b1bfa0d67bf57aa9ec72a
This commit is contained in:
Pascal Hartig
2019-08-12 03:44:51 -07:00
committed by Facebook Github Bot
parent 99ca6aa7e8
commit 6c7aeef7ed
7 changed files with 25 additions and 25 deletions

View File

@@ -17,7 +17,7 @@ declare module plugin {
import type {Logger} from './fb-interfaces/Logger.js'; import type {Logger} from './fb-interfaces/Logger.js';
import type Client from './Client.js'; import type Client from './Client.js';
import type {Store, MiddlewareAPI} from './reducers/index.js'; import type {Store, MiddlewareAPI} from './reducers/index.js';
import type {MetricType} from './utils/exportMetrics.js'; import type {MetricType} from './utils/exportMetrics.tsx';
import type {Node} from 'react'; import type {Node} from 'react';
import type BaseDevice from './devices/BaseDevice.js'; import type BaseDevice from './devices/BaseDevice.js';
import type AndroidDevice from './devices/AndroidDevice'; import type AndroidDevice from './devices/AndroidDevice';

View File

@@ -16,7 +16,7 @@ import {exportStore, pluginsClassMap} from '../src/utils/exportData.tsx';
import { import {
exportMetricsWithoutTrace, exportMetricsWithoutTrace,
exportMetricsFromTrace, exportMetricsFromTrace,
} from '../src/utils/exportMetrics.js'; } from '../src/utils/exportMetrics.tsx';
import {listDevices} from '../src/utils/listDevices'; import {listDevices} from '../src/utils/listDevices';
// $FlowFixMe this file exist, trust me, flow! // $FlowFixMe this file exist, trust me, flow!
import setup from '../static/setup.js'; import setup from '../static/setup.js';

View File

@@ -18,8 +18,8 @@ export {
callClient, callClient,
} from './plugin.tsx'; } from './plugin.tsx';
export type {PluginClient, Props} from './plugin.tsx'; export type {PluginClient, Props} from './plugin.tsx';
export type {MetricType} from './utils/exportMetrics.js';
export {default as Client} from './Client.tsx'; export {default as Client} from './Client.tsx';
export type {MetricType} from './utils/exportMetrics.tsx';
export {clipboard} from 'electron'; export {clipboard} from 'electron';
export {default as constants} from './fb-stubs/constants.tsx'; export {default as constants} from './fb-stubs/constants.tsx';
export {connect} from 'react-redux'; export {connect} from 'react-redux';

View File

@@ -10,7 +10,7 @@ import {App} from './App.js';
import {Logger} from './fb-interfaces/Logger.js'; import {Logger} from './fb-interfaces/Logger.js';
import Client from './Client'; import Client from './Client';
import {Store, MiddlewareAPI} from './reducers/index'; import {Store, MiddlewareAPI} from './reducers/index';
import {MetricType} from './utils/exportMetrics.js'; import {MetricType} from './utils/exportMetrics';
import {ReactNode, Component} from 'react'; import {ReactNode, Component} from 'react';
import BaseDevice from './devices/BaseDevice'; import BaseDevice from './devices/BaseDevice';

View File

@@ -7,10 +7,10 @@
import {getInstance as getLogger} from '../fb-stubs/Logger'; import {getInstance as getLogger} from '../fb-stubs/Logger';
import {Store, MiddlewareAPI} from '../reducers'; import {Store, MiddlewareAPI} from '../reducers';
import {DeviceExport} from '../devices/BaseDevice'; import {DeviceExport} from '../devices/BaseDevice';
import {State as PluginStates} from '../reducers/pluginStates'; import {State as PluginStatesState} from '../reducers/pluginStates';
import {PluginNotification} from '../reducers/notifications'; import {PluginNotification} from '../reducers/notifications';
import {ClientExport} from '../Client.js'; import {ClientExport} from '../Client.js';
import {State as PluginStatesState} from '../reducers/pluginStates'; import {State as PluginsState} from '../reducers/plugins';
import {pluginKey} from '../reducers/pluginStates'; import {pluginKey} from '../reducers/pluginStates';
import {FlipperDevicePlugin, FlipperPlugin, callClient} from '../plugin'; import {FlipperDevicePlugin, FlipperPlugin, callClient} from '../plugin';
import {default as BaseDevice} from '../devices/BaseDevice'; import {default as BaseDevice} from '../devices/BaseDevice';
@@ -34,7 +34,7 @@ export type ExportType = {
clients: Array<ClientExport>; clients: Array<ClientExport>;
device: DeviceExport | null; device: DeviceExport | null;
store: { store: {
pluginStates: PluginStates; pluginStates: PluginStatesState;
activeNotifications: Array<PluginNotification>; activeNotifications: Array<PluginNotification>;
}; };
}; };
@@ -80,7 +80,7 @@ export function processClients(
} }
export function pluginsClassMap( export function pluginsClassMap(
plugins: PluginStates, plugins: PluginsState,
): Map<string, typeof FlipperDevicePlugin | typeof FlipperPlugin> { ): Map<string, typeof FlipperDevicePlugin | typeof FlipperPlugin> {
const pluginsMap: Map< const pluginsMap: Map<
string, string,
@@ -190,7 +190,7 @@ const addSaltToDeviceSerial = async (
statusUpdate( statusUpdate(
'Adding salt to the selected device id in the plugin states...', 'Adding salt to the selected device id in the plugin states...',
); );
const updatedPluginStates: PluginStatesState = {}; const updatedPluginStates = {};
for (let key in pluginStates) { for (let key in pluginStates) {
if (!key.includes(serial)) { if (!key.includes(serial)) {
throw new Error( throw new Error(

View File

@@ -4,13 +4,12 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
* @format * @format
*/ */
import type {FlipperPlugin, FlipperDevicePlugin} from 'flipper'; import {FlipperPlugin, FlipperDevicePlugin} from 'flipper';
import {serialize} from './serialization'; import {serialize} from './serialization';
import type {State as PluginStatesState} from '../reducers/pluginStates.tsx'; import {State as PluginStatesState} from '../reducers/pluginStates';
import type {Store} from '../reducers/index.tsx'; import {Store} from '../reducers';
import fs from 'fs'; import fs from 'fs';
import type {ExportType} from './exportData.tsx'; import {ExportType, 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};
@@ -19,7 +18,7 @@ export type ExportMetricType = {[clientID: string]: MetricPluginType};
async function exportMetrics( async function exportMetrics(
pluginStates: PluginStatesState, pluginStates: PluginStatesState,
pluginsMap: Map<string, Class<FlipperDevicePlugin<> | FlipperPlugin<>>>, pluginsMap: Map<string, typeof FlipperDevicePlugin | typeof FlipperPlugin>,
selectedPlugins: Array<string>, selectedPlugins: Array<string>,
): Promise<string> { ): Promise<string> {
const metrics: ExportMetricType = {}; const metrics: ExportMetricType = {};
@@ -31,9 +30,10 @@ async function exportMetrics(
continue; continue;
} }
const clientID = arr.join('#'); const clientID = arr.join('#');
const metricsReducer: ?( const plugin = pluginsMap.get(pluginName);
const metricsReducer: (
persistedState: any, persistedState: any,
) => Promise<MetricType> = pluginsMap.get(pluginName)?.metricsReducer; ) => Promise<MetricType> | undefined = plugin && plugin.metricsReducer;
if (pluginsMap.has(pluginName) && metricsReducer) { if (pluginsMap.has(pluginName) && metricsReducer) {
const metricsObject = await metricsReducer(pluginStateData); const metricsObject = await metricsReducer(pluginStateData);
const pluginObject = {}; const pluginObject = {};
@@ -52,10 +52,10 @@ async function exportMetrics(
export async function exportMetricsWithoutTrace( export async function exportMetricsWithoutTrace(
store: Store, store: Store,
pluginStates: PluginStatesState, pluginStates: PluginStatesState,
): Promise<?string> { ): Promise<string | null> {
const pluginsMap: Map< const pluginsMap: Map<
string, string,
Class<FlipperDevicePlugin<> | FlipperPlugin<>>, typeof FlipperDevicePlugin | typeof FlipperPlugin
> = pluginsClassMap(store.getState().plugins); > = pluginsClassMap(store.getState().plugins);
const metadata = await fetchMetadata(pluginStates, pluginsMap, store); const metadata = await fetchMetadata(pluginStates, pluginsMap, store);
const newPluginStates = metadata.pluginStates; const newPluginStates = metadata.pluginStates;
@@ -72,7 +72,7 @@ export async function exportMetricsWithoutTrace(
return metrics; return metrics;
} }
function parseJSON(str: string): ?any { function parseJSON(str: string): any {
try { try {
return JSON.parse(str); return JSON.parse(str);
} catch (e) { } catch (e) {
@@ -83,7 +83,7 @@ function parseJSON(str: string): ?any {
export async function exportMetricsFromTrace( export async function exportMetricsFromTrace(
trace: string, trace: string,
pluginsMap: Map<string, Class<FlipperDevicePlugin<> | FlipperPlugin<>>>, pluginsMap: Map<string, typeof FlipperDevicePlugin | typeof FlipperPlugin>,
selectedPlugins: Array<string>, selectedPlugins: Array<string>,
): Promise<string> { ): Promise<string> {
const data = fs.readFileSync(trace, 'utf8'); const data = fs.readFileSync(trace, 'utf8');

View File

@@ -6,10 +6,10 @@
*/ */
export type Rect = { export type Rect = {
top: number, top: number;
left: number, left: number;
height: number, height: number;
width: number, width: number;
}; };
export function isOverlappedRect(a: Rect, b: Rect): boolean { export function isOverlappedRect(a: Rect, b: Rect): boolean {