Summary: Doc: https://docs.google.com/document/d/1miofxds9DJgWScj0zFyBbdpRH5Rj0T9FqiCapof5-vU/edit#heading=h.pg8svtdjlx7 Reviewed By: lblasa Differential Revision: D48866308 fbshipit-source-id: 72ed7eb1401e44722d9bb9e680d6fa5d558b8eed
161 lines
3.7 KiB
TypeScript
161 lines
3.7 KiB
TypeScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
*/
|
|
|
|
import {readFile} from 'fs';
|
|
import {promisify} from 'util';
|
|
import * as FlipperPluginModule from '../index';
|
|
|
|
test('Correct top level API exposed', () => {
|
|
const exposedAPIs: string[] = [];
|
|
const exposedTypes: string[] = [];
|
|
Object.entries(FlipperPluginModule).forEach(([key, value]) => {
|
|
if (key[0] === '_') {
|
|
return;
|
|
}
|
|
if (value === undefined) {
|
|
exposedTypes.push(key);
|
|
} else {
|
|
exposedAPIs.push(key);
|
|
}
|
|
});
|
|
|
|
// Note, all `exposedAPIs` should be documented in `flipper-plugin.mdx`
|
|
expect(exposedAPIs.sort()).toMatchInlineSnapshot(`
|
|
[
|
|
"CodeBlock",
|
|
"DataDescription",
|
|
"DataFormatter",
|
|
"DataInspector",
|
|
"DataList",
|
|
"DataSource",
|
|
"DataTable",
|
|
"DetailSidebar",
|
|
"Dialog",
|
|
"ElementsInspector",
|
|
"FileSelector",
|
|
"HighlightContext",
|
|
"HighlightProvider",
|
|
"Layout",
|
|
"MarkerTimeline",
|
|
"MasterDetail",
|
|
"NUX",
|
|
"Panel",
|
|
"PowerSearch",
|
|
"Spinner",
|
|
"Tab",
|
|
"Tabs",
|
|
"TestUtils",
|
|
"TimelineDataDescription",
|
|
"Toolbar",
|
|
"Tracked",
|
|
"TrackingScope",
|
|
"batch",
|
|
"createControlledPromise",
|
|
"createDataSource",
|
|
"createState",
|
|
"createTablePlugin",
|
|
"getFlipperLib",
|
|
"isAtom",
|
|
"path",
|
|
"produce",
|
|
"renderReactRoot",
|
|
"safeStringify",
|
|
"sleep",
|
|
"styled",
|
|
"suggestNewPlugin",
|
|
"textContent",
|
|
"theme",
|
|
"timeout",
|
|
"useHighlighter",
|
|
"useLocalStorageState",
|
|
"useLogger",
|
|
"useMemoize",
|
|
"usePlugin",
|
|
"useTrackedCallback",
|
|
"useValue",
|
|
"uuid",
|
|
"withTrackingScope",
|
|
]
|
|
`);
|
|
|
|
expect(exposedTypes.sort()).toMatchInlineSnapshot(`
|
|
[
|
|
"Atom",
|
|
"AtomPersistentStorage",
|
|
"CrashLog",
|
|
"CrashLogListener",
|
|
"CreatePasteArgs",
|
|
"CreatePasteResult",
|
|
"DataDescriptionType",
|
|
"DataInspectorExpanded",
|
|
"DataSourceVirtualizer",
|
|
"DataTableColumn",
|
|
"DataTableManager",
|
|
"DataValueExtractor",
|
|
"DefaultKeyboardAction",
|
|
"Device",
|
|
"DeviceLogEntry",
|
|
"DeviceLogLevel",
|
|
"DeviceLogListener",
|
|
"DeviceOS",
|
|
"DevicePluginClient",
|
|
"DeviceType",
|
|
"DialogResult",
|
|
"DownloadFileResponse",
|
|
"Draft",
|
|
"ElementAttribute",
|
|
"ElementData",
|
|
"ElementExtraInfo",
|
|
"ElementID",
|
|
"ElementSearchResultSet",
|
|
"ElementsInspectorElement",
|
|
"ElementsInspectorProps",
|
|
"FieldConfig",
|
|
"FileDescriptor",
|
|
"FileEncoding",
|
|
"FlipperLib",
|
|
"FlipperPluginInstance",
|
|
"FlipperServerForServerAddOn",
|
|
"HighlightManager",
|
|
"Idler",
|
|
"InteractionReport",
|
|
"InteractionReporter",
|
|
"Logger",
|
|
"MenuEntry",
|
|
"NormalizedMenuEntry",
|
|
"Notification",
|
|
"OperatorConfig",
|
|
"PluginClient",
|
|
"PowerSearchConfig",
|
|
"RemoteServerContext",
|
|
"SearchExpressionTerm",
|
|
"ServerAddOn",
|
|
"ServerAddOnPluginConnection",
|
|
]
|
|
`);
|
|
});
|
|
|
|
test('All APIs documented', async () => {
|
|
const docs = await promisify(readFile)(
|
|
__dirname + '/../../../../docs/extending/flipper-plugin.mdx',
|
|
'utf8',
|
|
);
|
|
Object.keys(FlipperPluginModule)
|
|
.filter(
|
|
(key) =>
|
|
!key.startsWith('_') && (FlipperPluginModule as any)[key] !== undefined,
|
|
)
|
|
.forEach((key) => {
|
|
// There should be a header with this identifier
|
|
if (!new RegExp(`# ${key}\\b`).test(docs)) {
|
|
fail(`Not documented: '${key}'`);
|
|
}
|
|
});
|
|
});
|