Move flipper plugin from flipper-lib types to flipper-common
Summary: Moved all types related to plugin descriptions from plugin-lib (which handles downloads and such) to flipper-common. The goal of that is to remove all plugin-lib usage from ui-core to server-core, so that the UI itself doesn't do any file operations anymore related to plugins. That will be done in next diffs, this just moves types but no code. Reviewed By: nikoant, aigoncharov Differential Revision: D32665064 fbshipit-source-id: 86d908e7264569b0229b09290a891171876c8e00
This commit is contained in:
committed by
Facebook GitHub Bot
parent
2bf8ae2364
commit
e7f841b6d2
@@ -9,9 +9,7 @@
|
||||
"license": "MIT",
|
||||
"bugs": "https://github.com/facebook/flipper/issues",
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"flipper-plugin-lib": "0.0.0"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"peerDependencies": {},
|
||||
"scripts": {
|
||||
"reset": "rimraf lib *.tsbuildinfo",
|
||||
|
||||
@@ -49,7 +49,14 @@ export interface SupportedApp {
|
||||
readonly type?: DeviceType;
|
||||
}
|
||||
|
||||
export type OS = 'iOS' | 'Android' | 'Metro';
|
||||
export type OS =
|
||||
| 'iOS'
|
||||
| 'Android'
|
||||
| 'Metro'
|
||||
| 'Windows'
|
||||
| 'MacOS'
|
||||
| 'Browser'
|
||||
| 'Linux';
|
||||
|
||||
export type DeviceType = 'emulator' | 'physical' | 'dummy';
|
||||
|
||||
@@ -45,3 +45,4 @@ export * from './user-session';
|
||||
export * from './GK';
|
||||
export * from './clientUtils';
|
||||
export * from './settings';
|
||||
export * from './PluginDetails';
|
||||
|
||||
@@ -7,11 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {
|
||||
DeviceSpec,
|
||||
DeviceType as PluginDeviceType,
|
||||
OS as PluginOS,
|
||||
} from 'flipper-plugin-lib';
|
||||
import {DeviceSpec, DeviceType, OS as PluginOS} from './PluginDetails';
|
||||
import {LauncherSettings, ProcessConfig, Settings} from './settings';
|
||||
|
||||
// In the future, this file would deserve it's own package, as it doesn't really relate to plugins.
|
||||
@@ -24,9 +20,7 @@ export type FlipperServerState =
|
||||
| 'error'
|
||||
| 'closed';
|
||||
|
||||
export type DeviceType = PluginDeviceType;
|
||||
|
||||
export type DeviceOS = PluginOS | 'Windows' | 'MacOS' | 'Browser' | 'Linux';
|
||||
export type DeviceOS = PluginOS;
|
||||
|
||||
export type DeviceDescription = {
|
||||
readonly os: DeviceOS;
|
||||
|
||||
@@ -4,9 +4,5 @@
|
||||
"outDir": "lib",
|
||||
"rootDir": "src"
|
||||
},
|
||||
"references": [
|
||||
{
|
||||
"path": "../plugin-lib"
|
||||
}
|
||||
]
|
||||
"references": []
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {ActivatablePluginDetails} from 'flipper-plugin-lib';
|
||||
import {ActivatablePluginDetails} from 'flipper-common';
|
||||
import {PluginFactory, FlipperPluginComponent} from './Plugin';
|
||||
import {DevicePluginPredicate, DevicePluginFactory} from './DevicePlugin';
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
act as testingLibAct,
|
||||
} from '@testing-library/react';
|
||||
import {queries} from '@testing-library/dom';
|
||||
import {BundledPluginDetails, InstalledPluginDetails} from 'flipper-plugin-lib';
|
||||
import {BundledPluginDetails, InstalledPluginDetails} from 'flipper-common';
|
||||
|
||||
import {
|
||||
RealFlipperClient,
|
||||
|
||||
@@ -5,9 +5,6 @@
|
||||
"rootDir": "src"
|
||||
},
|
||||
"references": [
|
||||
{
|
||||
"path": "../plugin-lib"
|
||||
},
|
||||
{
|
||||
"path": "../flipper-common"
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ import type {DeviceLogLevel, DeviceType} from 'flipper-common';
|
||||
import which from 'which';
|
||||
import {spawn} from 'child_process';
|
||||
import {dirname, join} from 'path';
|
||||
import {DeviceSpec} from 'flipper-plugin-lib';
|
||||
import {DeviceSpec} from 'flipper-common';
|
||||
import {ServerDevice} from '../ServerDevice';
|
||||
import {FlipperServerImpl} from '../../FlipperServerImpl';
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {DeviceType} from 'flipper-plugin-lib';
|
||||
import {DeviceType} from 'flipper-common';
|
||||
import AndroidDevice from './AndroidDevice';
|
||||
import {Client as ADBClient} from 'adbkit';
|
||||
import {FlipperServerImpl} from '../../FlipperServerImpl';
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
import fs from 'fs-extra';
|
||||
import child_process from 'child_process';
|
||||
import {DeviceType} from 'flipper-plugin-lib';
|
||||
import {DeviceType} from 'flipper-common';
|
||||
import {v1 as uuid} from 'uuid';
|
||||
import path from 'path';
|
||||
import {exec} from 'promisify-child-process';
|
||||
|
||||
@@ -41,11 +41,10 @@ import {
|
||||
} from './utils/pluginUtils';
|
||||
import {ContentContainer} from './sandy-chrome/ContentContainer';
|
||||
import {Alert, Typography} from 'antd';
|
||||
import {InstalledPluginDetails} from 'flipper-plugin-lib';
|
||||
import semver from 'semver';
|
||||
import {loadPlugin} from './reducers/pluginManager';
|
||||
import {produce} from 'immer';
|
||||
import {reportUsage} from 'flipper-common';
|
||||
import {reportUsage, InstalledPluginDetails} from 'flipper-common';
|
||||
import {PluginInfo} from './chrome/fb-stubs/PluginInfo';
|
||||
import {getActiveClient, getActivePlugin} from './selectors/connections';
|
||||
import {AnyAction} from 'redux';
|
||||
|
||||
@@ -13,10 +13,7 @@ import {
|
||||
PlusOutlined,
|
||||
} from '@ant-design/icons';
|
||||
import {Alert, Button} from 'antd';
|
||||
import {
|
||||
BundledPluginDetails,
|
||||
DownloadablePluginDetails,
|
||||
} from 'flipper-plugin-lib';
|
||||
import {BundledPluginDetails, DownloadablePluginDetails} from 'flipper-common';
|
||||
import React, {useMemo} from 'react';
|
||||
import {useCallback} from 'react';
|
||||
import {useDispatch, useSelector} from 'react-redux';
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {PluginDetails} from 'flipper-plugin-lib';
|
||||
import {PluginDetails} from 'flipper-common';
|
||||
import {Layout} from 'flipper-plugin';
|
||||
import Client from '../../Client';
|
||||
import {TableBodyRow} from '../../ui/components/table/types';
|
||||
|
||||
@@ -10,7 +10,11 @@
|
||||
import {Layout, theme} from 'flipper-plugin';
|
||||
import {LoadingIndicator, TableRows, ManagedTable, Glyph} from '../../ui';
|
||||
import React, {useCallback, useState, useEffect} from 'react';
|
||||
import {reportPlatformFailures, reportUsage} from 'flipper-common';
|
||||
import {
|
||||
reportPlatformFailures,
|
||||
reportUsage,
|
||||
InstalledPluginDetails,
|
||||
} from 'flipper-common';
|
||||
import reloadFlipper from '../../utils/reloadFlipper';
|
||||
import {registerInstalledPlugins} from '../../reducers/plugins';
|
||||
import {
|
||||
@@ -19,7 +23,6 @@ import {
|
||||
getUpdatablePlugins,
|
||||
removePlugin,
|
||||
UpdatablePluginDetails,
|
||||
InstalledPluginDetails,
|
||||
} from 'flipper-plugin-lib';
|
||||
import {installPluginFromNpm} from 'flipper-plugin-lib';
|
||||
import {State as AppState} from '../../reducers';
|
||||
|
||||
@@ -14,7 +14,7 @@ import React from 'react';
|
||||
import {render, waitFor} from '@testing-library/react';
|
||||
import configureStore from 'redux-mock-store';
|
||||
import {Provider} from 'react-redux';
|
||||
import type {PluginDetails} from 'flipper-plugin-lib';
|
||||
import type {PluginDetails} from 'flipper-common';
|
||||
import {getUpdatablePlugins, UpdatablePluginDetails} from 'flipper-plugin-lib';
|
||||
import {Store} from '../../../reducers';
|
||||
import {mocked} from 'ts-jest/utils';
|
||||
|
||||
@@ -24,7 +24,7 @@ import {
|
||||
DeviceDescription,
|
||||
FlipperServer,
|
||||
} from 'flipper-common';
|
||||
import {DeviceSpec, PluginDetails} from 'flipper-plugin-lib';
|
||||
import {DeviceSpec, PluginDetails} from 'flipper-common';
|
||||
import {getPluginKey} from '../utils/pluginKey';
|
||||
import {Base64} from 'js-base64';
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ import dispatcher, {
|
||||
createRequirePluginFunction,
|
||||
getLatestCompatibleVersionOfEachPlugin,
|
||||
} from '../plugins';
|
||||
import {BundledPluginDetails, InstalledPluginDetails} from 'flipper-plugin-lib';
|
||||
import {BundledPluginDetails, InstalledPluginDetails} from 'flipper-common';
|
||||
import path from 'path';
|
||||
import {createRootReducer, State} from '../../reducers/index';
|
||||
import {getLogger} from 'flipper-common';
|
||||
|
||||
@@ -8,12 +8,14 @@
|
||||
*/
|
||||
|
||||
import {
|
||||
DownloadablePluginDetails,
|
||||
getInstalledPluginDetails,
|
||||
getPluginVersionInstallationDir,
|
||||
InstalledPluginDetails,
|
||||
installPluginFromFile,
|
||||
} from 'flipper-plugin-lib';
|
||||
import {
|
||||
InstalledPluginDetails,
|
||||
DownloadablePluginDetails,
|
||||
} from 'flipper-common';
|
||||
import {State, Store} from '../reducers/index';
|
||||
import {
|
||||
PluginDownloadStatus,
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
import type {Store} from '../reducers/index';
|
||||
import type {Logger} from 'flipper-common';
|
||||
import type {Logger, ActivatablePluginDetails} from 'flipper-common';
|
||||
import {
|
||||
LoadPluginActionPayload,
|
||||
UninstallPluginActionPayload,
|
||||
@@ -21,7 +21,6 @@ import {
|
||||
getInstalledPlugins,
|
||||
cleanupOldInstalledPluginVersions,
|
||||
removePlugins,
|
||||
ActivatablePluginDetails,
|
||||
} from 'flipper-plugin-lib';
|
||||
import {sideEffect} from '../utils/sideEffect';
|
||||
import {requirePlugin} from './plugins';
|
||||
|
||||
@@ -32,7 +32,7 @@ import {
|
||||
ActivatablePluginDetails,
|
||||
BundledPluginDetails,
|
||||
ConcretePluginDetails,
|
||||
} from 'flipper-plugin-lib';
|
||||
} from 'flipper-common';
|
||||
import {tryCatchReportPluginFailures, reportUsage} from 'flipper-common';
|
||||
import * as FlipperPluginSDK from 'flipper-plugin';
|
||||
import {_SandyPluginDefinition} from 'flipper-plugin';
|
||||
|
||||
@@ -7,14 +7,13 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {Logger, Settings} from 'flipper-common';
|
||||
import {Logger, Settings, ActivatablePluginDetails} from 'flipper-common';
|
||||
import Client from './Client';
|
||||
import {Component} from 'react';
|
||||
import BaseDevice from './devices/BaseDevice';
|
||||
import {StaticView} from './reducers/connections';
|
||||
import {State as ReduxState} from './reducers';
|
||||
import {DEFAULT_MAX_QUEUE_SIZE} from './reducers/pluginMessageQueue';
|
||||
import {ActivatablePluginDetails} from 'flipper-plugin-lib';
|
||||
import {
|
||||
Notification,
|
||||
Idler,
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
registerInstalledPlugins,
|
||||
} from '../plugins';
|
||||
import {FlipperPlugin, FlipperDevicePlugin, BaseAction} from '../../plugin';
|
||||
import {InstalledPluginDetails} from 'flipper-plugin-lib';
|
||||
import {InstalledPluginDetails} from 'flipper-common';
|
||||
import {wrapSandy} from '../../test-utils/createMockFlipperWithPlugin';
|
||||
|
||||
const testPluginOrig = class extends FlipperPlugin<any, BaseAction, any> {
|
||||
|
||||
@@ -7,10 +7,8 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {
|
||||
DownloadablePluginDetails,
|
||||
getPluginVersionInstallationDir,
|
||||
} from 'flipper-plugin-lib';
|
||||
import {DownloadablePluginDetails} from 'flipper-common';
|
||||
import {getPluginVersionInstallationDir} from 'flipper-plugin-lib';
|
||||
import {Actions} from '.';
|
||||
import produce from 'immer';
|
||||
import {Canceler} from 'axios';
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
import type {Actions} from './';
|
||||
import type {ActivatablePluginDetails} from 'flipper-plugin-lib';
|
||||
import type {ActivatablePluginDetails} from 'flipper-common';
|
||||
import type {PluginDefinition} from '../plugin';
|
||||
import {produce} from 'immer';
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import type {
|
||||
ActivatablePluginDetails,
|
||||
BundledPluginDetails,
|
||||
InstalledPluginDetails,
|
||||
} from 'flipper-plugin-lib';
|
||||
} from 'flipper-common';
|
||||
import type {Actions} from '.';
|
||||
import produce from 'immer';
|
||||
import {isDevicePluginDefinition} from '../utils/pluginUtils';
|
||||
|
||||
@@ -24,7 +24,7 @@ import {getPluginTitle, getPluginTooltip} from '../../utils/pluginUtils';
|
||||
import {selectPlugin} from '../../reducers/connections';
|
||||
import Client from '../../Client';
|
||||
import BaseDevice from '../../devices/BaseDevice';
|
||||
import {DownloadablePluginDetails} from 'flipper-plugin-lib';
|
||||
import {DownloadablePluginDetails} from 'flipper-common';
|
||||
import {
|
||||
DownloadablePluginState,
|
||||
PluginDownloadStatus,
|
||||
@@ -35,7 +35,7 @@ import {
|
||||
switchPlugin,
|
||||
uninstallPlugin,
|
||||
} from '../../reducers/pluginManager';
|
||||
import {BundledPluginDetails} from 'flipper-plugin-lib';
|
||||
import {BundledPluginDetails} from 'flipper-common';
|
||||
import {reportUsage} from 'flipper-common';
|
||||
import ConnectivityStatus from './fb-stubs/ConnectivityStatus';
|
||||
import {useSelector} from 'react-redux';
|
||||
|
||||
@@ -23,7 +23,7 @@ import {registerPlugins} from '../reducers/plugins';
|
||||
import {getLogger} from 'flipper-common';
|
||||
import {initializeFlipperLibImplementation} from '../utils/flipperLibImplementation';
|
||||
import pluginManager from '../dispatcher/pluginManager';
|
||||
import {PluginDetails} from 'flipper-plugin-lib';
|
||||
import {PluginDetails} from 'flipper-common';
|
||||
import ArchivedDevice from '../devices/ArchivedDevice';
|
||||
import {ClientQuery, DeviceOS} from 'flipper-common';
|
||||
import {TestDevice} from './TestDevice';
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
import {DeviceOS, DeviceType} from 'flipper-plugin';
|
||||
import {DeviceSpec} from 'flipper-plugin-lib';
|
||||
import {DeviceSpec} from 'flipper-common';
|
||||
import BaseDevice from '../devices/BaseDevice';
|
||||
|
||||
export class TestDevice extends BaseDevice {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {PluginDetails} from 'flipper-plugin-lib';
|
||||
import {PluginDetails} from 'flipper-common';
|
||||
import semver from 'semver';
|
||||
import {getRenderHostInstance} from '../RenderHost';
|
||||
import {getAppVersion} from './info';
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {ConcretePluginDetails} from 'flipper-plugin-lib';
|
||||
import {ConcretePluginDetails} from 'flipper-common';
|
||||
import semver from 'semver';
|
||||
import isPluginCompatible from './isPluginCompatible';
|
||||
|
||||
|
||||
@@ -12,10 +12,10 @@ import fs from 'fs-extra';
|
||||
import {
|
||||
getSourcePlugins,
|
||||
moveInstalledPluginsFromLegacyDir,
|
||||
InstalledPluginDetails,
|
||||
getAllInstalledPluginVersions,
|
||||
getAllInstalledPluginsInDir,
|
||||
} from 'flipper-plugin-lib';
|
||||
import {InstalledPluginDetails} from 'flipper-common';
|
||||
import {getStaticPath} from '../utils/pathUtils';
|
||||
|
||||
// Load "dynamic" plugins, e.g. those which are either pre-installed (default), installed or loaded from sources (for development).
|
||||
|
||||
@@ -17,7 +17,7 @@ import type {
|
||||
BundledPluginDetails,
|
||||
DownloadablePluginDetails,
|
||||
PluginDetails,
|
||||
} from 'flipper-plugin-lib';
|
||||
} from 'flipper-common';
|
||||
import {getLatestCompatibleVersionOfEachPlugin} from '../dispatcher/plugins';
|
||||
import {getPluginKey} from './pluginKey';
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
import {
|
||||
ActivatablePluginDetails,
|
||||
DownloadablePluginDetails,
|
||||
} from 'flipper-plugin-lib';
|
||||
} from 'flipper-common';
|
||||
|
||||
export function createMockDownloadablePluginDetails(
|
||||
params: {
|
||||
|
||||
@@ -154,6 +154,7 @@
|
||||
"express": "^4.15.2",
|
||||
"fb-watchman": "^2.0.1",
|
||||
"flipper-babel-transformer": "0.0.0",
|
||||
"flipper-common": "0.0.0",
|
||||
"flipper-pkg-lib": "0.0.0",
|
||||
"flipper-plugin-lib": "0.0.0",
|
||||
"fs-extra": "^9.0.0",
|
||||
|
||||
@@ -16,7 +16,9 @@ import recursiveReaddirImport from 'recursive-readdir';
|
||||
import {promisify} from 'util';
|
||||
import inquirer from 'inquirer';
|
||||
import {homedir} from 'os';
|
||||
import {PluginType} from 'flipper-plugin-lib';
|
||||
// only type imported
|
||||
// eslint-disable-next-line
|
||||
import type {PluginType} from 'flipper-common';
|
||||
|
||||
const recursiveReaddir = promisify<string, string[]>(recursiveReaddirImport);
|
||||
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
{
|
||||
"path": "../plugin-lib"
|
||||
},
|
||||
{
|
||||
"path": "../flipper-common"
|
||||
},
|
||||
{
|
||||
"path": "../test-utils"
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"decompress-targz": "^4.1.1",
|
||||
"decompress-unzip": "^4.0.1",
|
||||
"expand-tilde": "^2.0.2",
|
||||
"flipper-common": "^0.0.0",
|
||||
"fs-extra": "^10.0.0",
|
||||
"live-plugin-manager": "^0.17.0",
|
||||
"npm-api": "^1.0.1",
|
||||
|
||||
@@ -18,7 +18,7 @@ import {
|
||||
import {getInstalledPlugins} from '../pluginInstaller';
|
||||
import {mocked} from 'ts-jest/utils';
|
||||
import type {Package} from 'npm-api';
|
||||
import {InstalledPluginDetails} from '../PluginDetails';
|
||||
import {InstalledPluginDetails} from 'flipper-common';
|
||||
|
||||
jest.mock('npm-api', () => {
|
||||
return jest.fn().mockImplementation(() => {
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
DownloadablePluginDetails,
|
||||
InstalledPluginDetails,
|
||||
PluginDetails,
|
||||
} from './PluginDetails';
|
||||
} from 'flipper-common';
|
||||
import {pluginCacheDir} from './pluginPaths';
|
||||
|
||||
export async function readPluginPackageJson(dir: string): Promise<any> {
|
||||
|
||||
@@ -15,7 +15,7 @@ import pmap from 'p-map';
|
||||
import pfilter from 'p-filter';
|
||||
import {satisfies} from 'semver';
|
||||
import {getInstalledPluginDetails, isPluginDir} from './getPluginDetails';
|
||||
import {InstalledPluginDetails} from './PluginDetails';
|
||||
import {InstalledPluginDetails} from 'flipper-common';
|
||||
|
||||
const flipperVersion = require('../package.json').version;
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {InstalledPluginDetails} from './PluginDetails';
|
||||
import {InstalledPluginDetails} from 'flipper-common';
|
||||
import {getInstalledPlugins} from './pluginInstaller';
|
||||
import semver from 'semver';
|
||||
import {getNpmHostedPlugins, NpmPackageDescriptor} from './getNpmHostedPlugins';
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
export * from './PluginDetails';
|
||||
export * from './getPluginDetails';
|
||||
export * from './pluginInstaller';
|
||||
export * from './getUpdatablePlugins';
|
||||
|
||||
@@ -18,7 +18,7 @@ import decompress from 'decompress';
|
||||
import decompressTargz from 'decompress-targz';
|
||||
import decompressUnzip from 'decompress-unzip';
|
||||
import tmp from 'tmp';
|
||||
import {InstalledPluginDetails} from './PluginDetails';
|
||||
import {InstalledPluginDetails} from 'flipper-common';
|
||||
import {getInstalledPluginDetails, isPluginDir} from './getPluginDetails';
|
||||
import {
|
||||
getPluginVersionInstallationDir,
|
||||
|
||||
@@ -3,5 +3,10 @@
|
||||
"compilerOptions": {
|
||||
"outDir": "lib",
|
||||
"rootDir": "src"
|
||||
}
|
||||
},
|
||||
"references": [
|
||||
{
|
||||
"path": "../flipper-common"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -18,12 +18,11 @@ import {
|
||||
stripSourceMapComment,
|
||||
} from 'flipper-pkg-lib';
|
||||
import getAppWatchFolders from './get-app-watch-folders';
|
||||
import {
|
||||
getSourcePlugins,
|
||||
getPluginSourceFolders,
|
||||
import {getSourcePlugins, getPluginSourceFolders} from 'flipper-plugin-lib';
|
||||
import type {
|
||||
BundledPluginDetails,
|
||||
InstalledPluginDetails,
|
||||
} from 'flipper-plugin-lib';
|
||||
} from 'flipper-common';
|
||||
import {
|
||||
appDir,
|
||||
staticDir,
|
||||
|
||||
Reference in New Issue
Block a user