diff --git a/desktop/app/src/dispatcher/__tests__/plugins.node.tsx b/desktop/app/src/dispatcher/__tests__/plugins.node.tsx index c2ee8ff9c..806d0a3f9 100644 --- a/desktop/app/src/dispatcher/__tests__/plugins.node.tsx +++ b/desktop/app/src/dispatcher/__tests__/plugins.node.tsx @@ -7,7 +7,7 @@ * @format */ -jest.mock('../../defaultPlugins/index'); +jest.mock('../../defaultPlugins'); import dispatcher, { getDynamicPlugins, @@ -114,7 +114,7 @@ test('checkGK for failing plugin', () => { }); test('requirePlugin returns null for invalid requires', () => { - const requireFn = requirePlugin([], require); + const requireFn = requirePlugin([], {}, require); const plugin = requireFn({ name: 'pluginID', entry: 'this/path/does not/exist', @@ -125,7 +125,7 @@ test('requirePlugin returns null for invalid requires', () => { test('requirePlugin loads plugin', () => { const name = 'pluginID'; - const requireFn = requirePlugin([], require); + const requireFn = requirePlugin([], {}, require); const plugin = requireFn({ name, entry: path.join(__dirname, 'TestPlugin'), diff --git a/desktop/app/src/dispatcher/plugins.tsx b/desktop/app/src/dispatcher/plugins.tsx index 4af95ad9f..2e34c3773 100644 --- a/desktop/app/src/dispatcher/plugins.tsx +++ b/desktop/app/src/dispatcher/plugins.tsx @@ -31,7 +31,7 @@ import {notNull} from '../utils/typeUtils'; import {sideEffect} from '../utils/sideEffect'; // eslint-disable-next-line import/no-unresolved -import {default as defaultPluginsIndex} from '../defaultPlugins/index'; +import getPluginIndex from '../utils/getDefaultPluginsIndex'; export type PluginDefinition = { id?: string; @@ -53,12 +53,14 @@ export default (store: Store, logger: Logger) => { const disabledPlugins: Array = []; const failedPlugins: Array<[PluginDefinition, string]> = []; + const defaultPluginsIndex = getPluginIndex(); + const initialPlugins: Array< typeof FlipperPlugin | typeof FlipperDevicePlugin > = [...getBundledPlugins(), ...getDynamicPlugins()] .filter(checkDisabled(disabledPlugins)) .filter(checkGK(gatekeepedPlugins)) - .map(requirePlugin(failedPlugins)) + .map(requirePlugin(failedPlugins, defaultPluginsIndex)) .filter(notNull); store.dispatch(addGatekeepedPlugins(gatekeepedPlugins)); @@ -150,6 +152,7 @@ export const checkDisabled = (disabledPlugins: Array) => ( export const requirePlugin = ( failedPlugins: Array<[PluginDefinition, string]>, + defaultPluginsIndex: any, reqFn: Function = global.electronRequire, ) => { return ( diff --git a/desktop/app/src/utils/getDefaultPluginsIndex.tsx b/desktop/app/src/utils/getDefaultPluginsIndex.tsx new file mode 100644 index 000000000..43c511bbe --- /dev/null +++ b/desktop/app/src/utils/getDefaultPluginsIndex.tsx @@ -0,0 +1,13 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + */ + +export default function () { + // eslint-disable-next-line import/no-unresolved + return require('../defaultPlugins'); +} diff --git a/desktop/scripts/build-utils.ts b/desktop/scripts/build-utils.ts index be46f061e..80bad647a 100644 --- a/desktop/scripts/build-utils.ts +++ b/desktop/scripts/build-utils.ts @@ -43,6 +43,7 @@ export async function generatePluginEntryPoints() { .map((x) => ` '${x.name}': require('${x.name}')`) .join(',\n'); const generatedIndex = ` + /* eslint-disable */ // THIS FILE IS AUTO-GENERATED by function "generatePluginEntryPoints" in "build-utils.ts". export default {\n${pluginRequres}\n} as any `;