Files
flipper/desktop/flipper-frontend-core/src/flipperLibImplementation/index.tsx
Andrey Goncharov 82e5cfd368 Expose isLoggedIn to plugin creators
Summary: Re-expose one of the legacy exports we had before. Requested by MSYS

Reviewed By: passy

Differential Revision: D40979328

fbshipit-source-id: 7e8f089a182a62f392f3a720bee9b81698930f9d
2022-11-03 06:29:24 -07:00

122 lines
4.0 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 {RemoteServerContext, FlipperLib} from 'flipper-plugin-core';
import {
BufferEncoding,
ExecOptions,
fsConstants,
Logger,
MkdirOptions,
RmOptions,
} from 'flipper-common';
import constants from '../fb-stubs/constants';
import {RenderHost} from '../RenderHost';
import {downloadFileFactory} from './downloadFile';
import {Base64} from 'js-base64';
export function baseFlipperLibImplementation(
renderHost: RenderHost,
logger: Logger,
): Omit<
FlipperLib,
'enableMenuEntries' | 'selectPlugin' | 'showNotification' | 'createPaste'
> {
return {
isFB: !constants.IS_PUBLIC_BUILD,
logger,
GK: renderHost.GK,
writeTextToClipboard: renderHost.writeTextToClipboard,
openLink: renderHost.openLink,
importFile: renderHost.importFile,
exportFile: renderHost.exportFile,
exportFileBinary: renderHost.exportFileBinary,
paths: {
appPath: renderHost.serverConfig.paths.appPath,
homePath: renderHost.serverConfig.paths.homePath,
staticPath: renderHost.serverConfig.paths.staticPath,
tempPath: renderHost.serverConfig.paths.tempPath,
},
environmentInfo: {
os: renderHost.serverConfig.environmentInfo.os,
},
intern: {
graphGet: (...args) =>
renderHost.flipperServer.exec('intern-graph-get', ...args),
graphPost: (...args) =>
renderHost.flipperServer.exec('intern-graph-post', ...args),
isLoggedIn: () => renderHost.flipperServer.exec('is-logged-in'),
},
remoteServerContext: {
childProcess: {
exec: async (
command: string,
options?: ExecOptions & {encoding?: BufferEncoding},
) => renderHost.flipperServer.exec('node-api-exec', command, options),
},
fs: {
access: async (path: string, mode?: number) =>
renderHost.flipperServer.exec('node-api-fs-access', path, mode),
pathExists: async (path: string, mode?: number) =>
renderHost.flipperServer.exec('node-api-fs-pathExists', path, mode),
unlink: async (path: string) =>
renderHost.flipperServer.exec('node-api-fs-unlink', path),
mkdir: (async (
path: string,
options?: {recursive?: boolean} & MkdirOptions,
) =>
renderHost.flipperServer.exec(
'node-api-fs-mkdir',
path,
options,
)) as RemoteServerContext['fs']['mkdir'],
rm: async (path: string, options?: RmOptions) =>
renderHost.flipperServer.exec('node-api-fs-rm', path, options),
copyFile: async (src: string, dest: string, flags?: number) =>
renderHost.flipperServer.exec(
'node-api-fs-copyFile',
src,
dest,
flags,
),
constants: fsConstants,
stat: async (path: string) =>
renderHost.flipperServer.exec('node-api-fs-stat', path),
readlink: async (path: string) =>
renderHost.flipperServer.exec('node-api-fs-readlink', path),
readFile: (path, options) =>
renderHost.flipperServer.exec('node-api-fs-readfile', path, options),
readFileBinary: async (path) =>
Base64.toUint8Array(
await renderHost.flipperServer.exec(
'node-api-fs-readfile-binary',
path,
),
),
writeFile: (path, contents, options) =>
renderHost.flipperServer.exec(
'node-api-fs-writefile',
path,
contents,
options,
),
writeFileBinary: async (path, contents) => {
const base64contents = Base64.fromUint8Array(contents);
return await renderHost.flipperServer.exec(
'node-api-fs-writefile-binary',
path,
base64contents,
);
},
},
downloadFile: downloadFileFactory(renderHost),
},
};
}