Load bundled server add-ons

Reviewed By: antonk52

Differential Revision: D34238883

fbshipit-source-id: 01b4b1c1c0a63cbfb639e903f6a77307ae370330
This commit is contained in:
Andrey Goncharov
2022-02-28 03:50:34 -08:00
committed by Facebook GitHub Bot
parent b655efc78e
commit 2ce037d96b
3 changed files with 26 additions and 19 deletions

View File

@@ -16,13 +16,22 @@ import {
} from 'flipper-common';
import {ServerAddOnDesktopToModuleConnection} from './ServerAddOnDesktopToModuleConnection';
import {ServerAddOnModuleToDesktopConnection} from './ServerAddOnModuleToDesktopConnection';
// @ts-ignore
import defaultPlugins from '../defaultPlugins';
interface ServerAddOnModule {
default?: ServerAddOnFn;
default: ServerAddOnFn;
}
const loadPlugin = (_pluginName: string): ServerAddOnModule => {
// TODO: Implement me
const loadPlugin = (pluginName: string): ServerAddOnModule => {
console.debug('loadPlugin', pluginName);
const bundledPlugin = defaultPlugins[pluginName];
if (bundledPlugin) {
return bundledPlugin;
}
// TODO: Use getInstalledPlugin
return {default: async () => async () => {}};
};
@@ -51,7 +60,7 @@ export class ServerAddOn {
assertNotNull(serverAddOn);
assert(
typeof serverAddOn === 'function',
`ServerAddOn ${pluginName} must export "serverAddOn" function.`,
`ServerAddOn ${pluginName} must export "serverAddOn" function as a default export.`,
);
const serverAddOnModuleToDesktopConnection =

View File

@@ -34,7 +34,7 @@ export class ServerAddOnModuleToDesktopConnection
params: {
method,
params,
api: '', // TODO: Consider using here pluginId and validate it
api: '', // TODO: Consider using here pluginName and validate it
},
};
this.emit('message', message);

View File

@@ -174,11 +174,10 @@ async function generateDefaultPluginEntryPoints(
const serverAddOns = defaultPlugins.filter(
({serverAddOnSource}) => !!serverAddOnSource,
);
if (serverAddOns.length) {
const serverAddOnRequires = serverAddOns
.map(
(x) =>
` '${x.name}': tryRequire('${x.serverAddOnSource}', () => require('${x.serverAddOnSource}'))`,
` '${x.name}': tryRequire('${x.name}', () => require('${x.name}/${x.serverAddOnSource}'))`,
)
.join(',\n');
const generatedIndexServerAddOns = getGeneratedIndex(serverAddOnRequires);
@@ -187,7 +186,6 @@ async function generateDefaultPluginEntryPoints(
path.join(serverCoreDir, 'src', 'defaultPlugins', 'index.tsx'),
generatedIndexServerAddOns,
);
}
console.log('✅ Generated bundled plugin entry points.');
}