Use the single type representing plugins
Summary: Use interface PluginDetails everywhere where plugins are handled and removed PluginDefinition type which was effectively a subset of PluginDetails Reviewed By: mweststrate Differential Revision: D21927456 fbshipit-source-id: 434ebeef955b922cc11757e78fbba8dec05f1060
This commit is contained in:
committed by
Facebook GitHub Bot
parent
907cb9e3cc
commit
db3f04a2d7
@@ -13,7 +13,7 @@ import {
|
||||
} from '../pluginUtils.tsx';
|
||||
import type {State as PluginsState} from '../../reducers/plugins.tsx';
|
||||
import type {State as PluginStatesState} from '../../reducers/pluginStates.tsx';
|
||||
import type {PluginDefinition} from '../../dispatcher/plugins.tsx';
|
||||
import type {PluginDetails} from 'flipper-plugin-lib';
|
||||
import type {State as PluginMessageQueueState} from '../../reducers/pluginStates.tsx';
|
||||
import {FlipperBasePlugin} from 'flipper';
|
||||
import type {ReduxState} from '../../reducers/index.tsx';
|
||||
@@ -60,9 +60,9 @@ function createMockFlipperPluginWithNoPersistedState(id: string) {
|
||||
}
|
||||
|
||||
function mockPluginState(
|
||||
gatekeepedPlugins: Array<PluginDefinition>,
|
||||
disabledPlugins: Array<PluginDefinition>,
|
||||
failedPlugins: Array<[PluginDefinition, string]>,
|
||||
gatekeepedPlugins: Array<PluginDetails>,
|
||||
disabledPlugins: Array<PluginDetails>,
|
||||
failedPlugins: Array<[PluginDetails, string]>,
|
||||
): PluginsState {
|
||||
return {
|
||||
devicePlugins: new Map([
|
||||
@@ -92,7 +92,7 @@ function mockPluginState(
|
||||
};
|
||||
}
|
||||
|
||||
function mockPluginDefinition(name: string): PluginDefinition {
|
||||
function mockPluginDefinition(name: string): PluginDetails {
|
||||
return {
|
||||
name,
|
||||
out: 'out',
|
||||
|
||||
@@ -8,9 +8,8 @@
|
||||
*/
|
||||
|
||||
import path from 'path';
|
||||
import fs from 'fs-extra';
|
||||
import {homedir} from 'os';
|
||||
import {PluginMap, PluginDefinition} from '../reducers/pluginManager';
|
||||
import {PluginMap, PluginDetails} from 'flipper-plugin-lib';
|
||||
import {default as algoliasearch, SearchIndex} from 'algoliasearch';
|
||||
import NpmApi, {Package} from 'npm-api';
|
||||
import semver from 'semver';
|
||||
@@ -26,36 +25,6 @@ export function provideSearchIndex(): SearchIndex {
|
||||
return client.initIndex('npm-search');
|
||||
}
|
||||
|
||||
export async function readInstalledPlugins(): Promise<PluginMap> {
|
||||
const pluginDirExists = await fs.pathExists(PLUGIN_DIR);
|
||||
|
||||
if (!pluginDirExists) {
|
||||
return new Map();
|
||||
}
|
||||
const dirs = await fs.readdir(PLUGIN_DIR);
|
||||
const plugins = await Promise.all<[string, PluginDefinition]>(
|
||||
dirs.map(
|
||||
(name) =>
|
||||
new Promise(async (resolve, reject) => {
|
||||
if (!(await fs.lstat(path.join(PLUGIN_DIR, name))).isDirectory()) {
|
||||
return resolve(undefined);
|
||||
}
|
||||
|
||||
const packageJSON = await fs.readFile(
|
||||
path.join(PLUGIN_DIR, name, 'package.json'),
|
||||
);
|
||||
|
||||
try {
|
||||
resolve([name, JSON.parse(packageJSON.toString())]);
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
}),
|
||||
),
|
||||
);
|
||||
return new Map(plugins.filter(Boolean));
|
||||
}
|
||||
|
||||
export type UpdateResult =
|
||||
| {kind: 'up-to-date'}
|
||||
| {kind: 'error'; error: Error}
|
||||
@@ -68,9 +37,7 @@ export async function findPluginUpdates(
|
||||
|
||||
return Promise.all(
|
||||
Array.from(currentPlugins.values()).map(
|
||||
async (
|
||||
currentPlugin: PluginDefinition,
|
||||
): Promise<[string, UpdateResult]> =>
|
||||
async (currentPlugin: PluginDetails): Promise<[string, UpdateResult]> =>
|
||||
npm
|
||||
.repo(currentPlugin.name)
|
||||
.package()
|
||||
|
||||
@@ -11,7 +11,7 @@ import {FlipperDevicePlugin, FlipperPlugin, FlipperBasePlugin} from '../plugin';
|
||||
import {State as PluginStatesState} from '../reducers/pluginStates';
|
||||
import {State as PluginsState} from '../reducers/plugins';
|
||||
import {State as PluginMessageQueueState} from '../reducers/pluginMessageQueue';
|
||||
import {PluginDefinition} from '../dispatcher/plugins';
|
||||
import {PluginDetails} from 'flipper-plugin-lib';
|
||||
import {deconstructPluginKey, deconstructClientId} from './clientUtils';
|
||||
|
||||
type Client = import('../Client').default;
|
||||
@@ -188,16 +188,16 @@ export function getPersistentPlugins(plugins: PluginsState): Array<string> {
|
||||
typeof FlipperDevicePlugin | typeof FlipperPlugin
|
||||
> = pluginsClassMap(plugins);
|
||||
|
||||
const arr: Array<PluginDefinition> = plugins.disabledPlugins.concat(
|
||||
const arr: Array<PluginDetails> = plugins.disabledPlugins.concat(
|
||||
plugins.gatekeepedPlugins,
|
||||
);
|
||||
arr.forEach((plugin: PluginDefinition) => {
|
||||
arr.forEach((plugin: PluginDetails) => {
|
||||
if (pluginsMap.has(plugin.name)) {
|
||||
pluginsMap.delete(plugin.name);
|
||||
}
|
||||
});
|
||||
|
||||
plugins.failedPlugins.forEach((plugin: [PluginDefinition, string]) => {
|
||||
plugins.failedPlugins.forEach((plugin: [PluginDetails, string]) => {
|
||||
if (plugin[0] && plugin[0].name && pluginsMap.has(plugin[0].name)) {
|
||||
pluginsMap.delete(plugin[0].name);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user