From c3ff0ff3554550307d92eea656ac6bbe1e95a1f3 Mon Sep 17 00:00:00 2001 From: Michel Weststrate Date: Fri, 8 Oct 2021 01:31:45 -0700 Subject: [PATCH] Set up Flipper decapitated packages Summary: This diff introduces the packages necessary for Flipper decapitated. * flipper-common: utilities & types shared between client, server, flipper-plugin * flipper-server-core: all device & client management goes in here. Basically flipper's backend * flipper-ui-core: all UI goes in here, as far as it doesn't depend on Electron * desktop: the Electron app, will load server-core and ui-core, and glue them together, providing implementations for some electron specific stuff like dialgos * flipper-server: A node process hosting flipper-server-core, that can be connected to over websockets. And probably can serve a browser version of the UI as well. * flipper-ui-browser: thin wrapper around flipper-ui-core, providing some browser specific behavior / stubs. * flipper-dump: (might remove later), but want to hack a quick and dirt flipper dump in here, as alternative way to test flipper-server-core. This diff just creates the packages, but doesn't move any code, so it can be summarized as: restoftheowl Reviewed By: nikoant Differential Revision: D30218646 fbshipit-source-id: 735598a1261a98e584f52504b5eba01ec0afa162 --- desktop/README.md | 41 +++++++++++++++++++++++ desktop/app/package.json | 2 ++ desktop/app/src/init.tsx | 3 ++ desktop/app/tsconfig.json | 15 ++++++--- desktop/flipper-common/README.md | 3 ++ desktop/flipper-common/package.json | 27 +++++++++++++++ desktop/flipper-common/src/index.tsx | 12 +++++++ desktop/flipper-common/tsconfig.json | 8 +++++ desktop/flipper-dump/README.md | 3 ++ desktop/flipper-dump/package.json | 28 ++++++++++++++++ desktop/flipper-dump/src/index.tsx | 12 +++++++ desktop/flipper-dump/tsconfig.json | 12 +++++++ desktop/flipper-plugin/tsconfig.json | 3 ++ desktop/flipper-server-core/README.md | 5 +++ desktop/flipper-server-core/package.json | 28 ++++++++++++++++ desktop/flipper-server-core/src/index.tsx | 12 +++++++ desktop/flipper-server-core/tsconfig.json | 12 +++++++ desktop/flipper-server/README.md | 5 +++ desktop/flipper-server/package.json | 28 ++++++++++++++++ desktop/flipper-server/src/index.tsx | 12 +++++++ desktop/flipper-server/tsconfig.json | 12 +++++++ desktop/flipper-ui-browser/README.md | 3 ++ desktop/flipper-ui-browser/package.json | 28 ++++++++++++++++ desktop/flipper-ui-browser/src/index.tsx | 12 +++++++ desktop/flipper-ui-browser/tsconfig.json | 12 +++++++ desktop/flipper-ui-core/README.md | 3 ++ desktop/flipper-ui-core/package.json | 28 ++++++++++++++++ desktop/flipper-ui-core/src/index.tsx | 12 +++++++ desktop/flipper-ui-core/tsconfig.json | 15 +++++++++ desktop/jest.config.js | 1 + desktop/package.json | 6 ++++ desktop/tsconfig.base.json | 3 ++ 32 files changed, 401 insertions(+), 5 deletions(-) create mode 100644 desktop/README.md create mode 100644 desktop/flipper-common/README.md create mode 100644 desktop/flipper-common/package.json create mode 100644 desktop/flipper-common/src/index.tsx create mode 100644 desktop/flipper-common/tsconfig.json create mode 100644 desktop/flipper-dump/README.md create mode 100644 desktop/flipper-dump/package.json create mode 100644 desktop/flipper-dump/src/index.tsx create mode 100644 desktop/flipper-dump/tsconfig.json create mode 100644 desktop/flipper-server-core/README.md create mode 100644 desktop/flipper-server-core/package.json create mode 100644 desktop/flipper-server-core/src/index.tsx create mode 100644 desktop/flipper-server-core/tsconfig.json create mode 100644 desktop/flipper-server/README.md create mode 100644 desktop/flipper-server/package.json create mode 100644 desktop/flipper-server/src/index.tsx create mode 100644 desktop/flipper-server/tsconfig.json create mode 100644 desktop/flipper-ui-browser/README.md create mode 100644 desktop/flipper-ui-browser/package.json create mode 100644 desktop/flipper-ui-browser/src/index.tsx create mode 100644 desktop/flipper-ui-browser/tsconfig.json create mode 100644 desktop/flipper-ui-core/README.md create mode 100644 desktop/flipper-ui-core/package.json create mode 100644 desktop/flipper-ui-core/src/index.tsx create mode 100644 desktop/flipper-ui-core/tsconfig.json diff --git a/desktop/README.md b/desktop/README.md new file mode 100644 index 000000000..03027a241 --- /dev/null +++ b/desktop/README.md @@ -0,0 +1,41 @@ +# Flipper Desktop + +This folder contains everything to run the Flipper 'Desktop', that is, the UI which you use to interact with the device / app under debug. + +### Packages provided here: + +* flipper-common: utilities & types shared between client, server, flipper-plugin +* flipper-server-core: all device & client management goes in here. Basically flipper's backend +* flipper-ui-core: all UI goes in here, as far as it doesn't depend on Electron +* flipper-ui-electron: the Electron app, will load server-core and ui-core, and glue them together, providing implementations for some electron * specific stuff like dialgos +* flipper-server: A node process hosting flipper-server-core, that can be connected to over websockets. And probably can serve a browser version of the UI as well. +* flipper-ui-browser: thin wrapper around flipper-ui-core, providing some browser specific behavior / stubs. +* flipper-dump: (might remove later), but want to hack a quick and dirt flipper dump in here, as alternative way to test flipper-server-core. +* flipper-plugin: The flipper SDK used by plugins. Exposes all API's that can be used by plugins +* pkg: CLI tool to manage building flipper plugins +* pkg-lib +* plugin-lib +* babel-transformer +* doctor +* eslint-plugin-flipper + +### Packages overview + +``` +flipper-ui-electron: + - flipper-server-core (directly embedded) + - flipper-ui-core + - plugins (prebundled) + - plugins (installable) + - flipper-plugin + +flipper-server + - flipper-server-core + - flipper-ui-browser (served by webserver) + - flipper-ui-core (communicates using WebSocket with server-core) + - plugins (prebundled) + - plugins (installable)? + +flipper-dump + - flipper-server-core +``` diff --git a/desktop/app/package.json b/desktop/app/package.json index aff0665aa..51865881b 100644 --- a/desktop/app/package.json +++ b/desktop/app/package.json @@ -38,6 +38,8 @@ "flipper-doctor": "0.0.0", "flipper-plugin": "0.0.0", "flipper-plugin-lib": "0.0.0", + "flipper-server-core": "0.0.0", + "flipper-ui-core": "0.0.0", "fs-extra": "^10.0.0", "immer": "^9.0.6", "invariant": "^2.2.2", diff --git a/desktop/app/src/init.tsx b/desktop/app/src/init.tsx index bbf70bc7d..a2e6404c4 100644 --- a/desktop/app/src/init.tsx +++ b/desktop/app/src/init.tsx @@ -51,6 +51,9 @@ import {getVersionString} from './utils/versionString'; import {PersistGate} from 'redux-persist/integration/react'; // eslint-disable-next-line flipper/no-electron-remote-imports import {ipcRenderer, remote} from 'electron'; +import {helloWorld} from 'flipper-server-core'; + +helloWorld(); if (process.env.NODE_ENV === 'development' && os.platform() === 'darwin') { // By default Node.JS has its internal certificate storage and doesn't use diff --git a/desktop/app/tsconfig.json b/desktop/app/tsconfig.json index caaef1b59..626776af9 100644 --- a/desktop/app/tsconfig.json +++ b/desktop/app/tsconfig.json @@ -10,9 +10,18 @@ { "path": "../doctor" }, + { + "path": "../flipper-common" + }, { "path": "../flipper-plugin" }, + { + "path": "../flipper-server-core" + }, + { + "path": "../flipper-ui-core" + }, { "path": "../plugin-lib" }, @@ -23,9 +32,5 @@ "path": "../plugins/public/navigation" } ], - "exclude": [ - "**/node_modules/", - "**/__tests__/", - "**/lib/" - ] + "exclude": ["**/node_modules/", "**/__tests__/", "**/lib/"] } diff --git a/desktop/flipper-common/README.md b/desktop/flipper-common/README.md new file mode 100644 index 000000000..14b7f24b3 --- /dev/null +++ b/desktop/flipper-common/README.md @@ -0,0 +1,3 @@ +# flipper-common + +Utilities that are shared between flipper-ui, flipper-server and flipper-plugin. diff --git a/desktop/flipper-common/package.json b/desktop/flipper-common/package.json new file mode 100644 index 000000000..3f11162e0 --- /dev/null +++ b/desktop/flipper-common/package.json @@ -0,0 +1,27 @@ +{ + "name": "flipper-common", + "version": "0.0.0", + "description": "Server & UI shared Flipper utilities", + "repository": "facebook/flipper", + "main": "lib/index.js", + "flipperBundlerEntry": "src", + "types": "lib/index.d.ts", + "license": "MIT", + "bugs": "https://github.com/facebook/flipper/issues", + "dependencies": {}, + "devDependencies": {}, + "peerDependencies": {}, + "scripts": { + "reset": "rimraf lib *.tsbuildinfo", + "build": "tsc -b", + "prepack": "yarn reset && yarn build" + }, + "files": [ + "lib/**/*" + ], + "homepage": "https://github.com/facebook/flipper", + "keywords": [ + "Flipper" + ], + "author": "Facebook, Inc" +} diff --git a/desktop/flipper-common/src/index.tsx b/desktop/flipper-common/src/index.tsx new file mode 100644 index 000000000..90a375a48 --- /dev/null +++ b/desktop/flipper-common/src/index.tsx @@ -0,0 +1,12 @@ +/** + * 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 function helloWorld() { + return true; +} diff --git a/desktop/flipper-common/tsconfig.json b/desktop/flipper-common/tsconfig.json new file mode 100644 index 000000000..410e2890d --- /dev/null +++ b/desktop/flipper-common/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [] +} diff --git a/desktop/flipper-dump/README.md b/desktop/flipper-dump/README.md new file mode 100644 index 000000000..9d7ce5a26 --- /dev/null +++ b/desktop/flipper-dump/README.md @@ -0,0 +1,3 @@ +# flipper-dump (TBD) + +Stand alone Flipper command, that uses flipper-server-core to connect to apps and dump all incoming messages. diff --git a/desktop/flipper-dump/package.json b/desktop/flipper-dump/package.json new file mode 100644 index 000000000..5fb856f86 --- /dev/null +++ b/desktop/flipper-dump/package.json @@ -0,0 +1,28 @@ +{ + "name": "flipper-dump", + "private": true, + "version": "0.0.0", + "description": "Flipper tool to dump data from clients", + "repository": "facebook/flipper", + "main": "lib/index.js", + "flipperBundlerEntry": "src", + "types": "lib/index.d.ts", + "license": "MIT", + "bugs": "https://github.com/facebook/flipper/issues", + "dependencies": {}, + "devDependencies": {}, + "peerDependencies": {}, + "scripts": { + "reset": "rimraf lib *.tsbuildinfo", + "build": "tsc -b", + "prepack": "yarn reset && yarn build" + }, + "files": [ + "lib/**/*" + ], + "homepage": "https://github.com/facebook/flipper", + "keywords": [ + "Flipper" + ], + "author": "Facebook, Inc" +} diff --git a/desktop/flipper-dump/src/index.tsx b/desktop/flipper-dump/src/index.tsx new file mode 100644 index 000000000..90a375a48 --- /dev/null +++ b/desktop/flipper-dump/src/index.tsx @@ -0,0 +1,12 @@ +/** + * 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 function helloWorld() { + return true; +} diff --git a/desktop/flipper-dump/tsconfig.json b/desktop/flipper-dump/tsconfig.json new file mode 100644 index 000000000..9161fe7a6 --- /dev/null +++ b/desktop/flipper-dump/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [ + { + "path": "../flipper-server-core" + } + ] +} diff --git a/desktop/flipper-plugin/tsconfig.json b/desktop/flipper-plugin/tsconfig.json index 7d199ae13..d8aa49601 100644 --- a/desktop/flipper-plugin/tsconfig.json +++ b/desktop/flipper-plugin/tsconfig.json @@ -7,6 +7,9 @@ "references": [ { "path": "../plugin-lib" + }, + { + "path": "../flipper-common" } ] } diff --git a/desktop/flipper-server-core/README.md b/desktop/flipper-server-core/README.md new file mode 100644 index 000000000..3e72c00ba --- /dev/null +++ b/desktop/flipper-server-core/README.md @@ -0,0 +1,5 @@ +# flipper-server-core + +Package that manages connections with flipper clients, queries for adb/idb clients, accepts incoming websocket / rsocket connections and takes care of certificate exchange. + +Used by Flipper desktop, flipper-server and flipper-dump diff --git a/desktop/flipper-server-core/package.json b/desktop/flipper-server-core/package.json new file mode 100644 index 000000000..97510d286 --- /dev/null +++ b/desktop/flipper-server-core/package.json @@ -0,0 +1,28 @@ +{ + "name": "flipper-server-core", + "private": true, + "version": "0.0.0", + "description": "Flipper server connection SDK", + "repository": "facebook/flipper", + "main": "lib/index.js", + "flipperBundlerEntry": "src", + "types": "lib/index.d.ts", + "license": "MIT", + "bugs": "https://github.com/facebook/flipper/issues", + "dependencies": {}, + "devDependencies": {}, + "peerDependencies": {}, + "scripts": { + "reset": "rimraf lib *.tsbuildinfo", + "build": "tsc -b", + "prepack": "yarn reset && yarn build" + }, + "files": [ + "lib/**/*" + ], + "homepage": "https://github.com/facebook/flipper", + "keywords": [ + "Flipper" + ], + "author": "Facebook, Inc" +} diff --git a/desktop/flipper-server-core/src/index.tsx b/desktop/flipper-server-core/src/index.tsx new file mode 100644 index 000000000..90a375a48 --- /dev/null +++ b/desktop/flipper-server-core/src/index.tsx @@ -0,0 +1,12 @@ +/** + * 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 function helloWorld() { + return true; +} diff --git a/desktop/flipper-server-core/tsconfig.json b/desktop/flipper-server-core/tsconfig.json new file mode 100644 index 000000000..4bb952b9f --- /dev/null +++ b/desktop/flipper-server-core/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [ + { + "path": "../flipper-common" + } + ] +} diff --git a/desktop/flipper-server/README.md b/desktop/flipper-server/README.md new file mode 100644 index 000000000..04b84c5c1 --- /dev/null +++ b/desktop/flipper-server/README.md @@ -0,0 +1,5 @@ +# flipper-server (TBD) + +Stand alone Flipper server as NodeJS process, that uses flipper-server-core for device communication and also provides a webserver to serve flipper-ui. + +Flipper-server can be used as background process, for example on CI servers or to power IDE plugins. diff --git a/desktop/flipper-server/package.json b/desktop/flipper-server/package.json new file mode 100644 index 000000000..2c1be5870 --- /dev/null +++ b/desktop/flipper-server/package.json @@ -0,0 +1,28 @@ +{ + "name": "flipper-server", + "private": true, + "version": "0.0.0", + "description": "Standalone nodeJS based Flipper server", + "repository": "facebook/flipper", + "main": "lib/index.js", + "flipperBundlerEntry": "src", + "types": "lib/index.d.ts", + "license": "MIT", + "bugs": "https://github.com/facebook/flipper/issues", + "dependencies": {}, + "devDependencies": {}, + "peerDependencies": {}, + "scripts": { + "reset": "rimraf lib *.tsbuildinfo", + "build": "tsc -b", + "prepack": "yarn reset && yarn build" + }, + "files": [ + "lib/**/*" + ], + "homepage": "https://github.com/facebook/flipper", + "keywords": [ + "Flipper" + ], + "author": "Facebook, Inc" +} diff --git a/desktop/flipper-server/src/index.tsx b/desktop/flipper-server/src/index.tsx new file mode 100644 index 000000000..90a375a48 --- /dev/null +++ b/desktop/flipper-server/src/index.tsx @@ -0,0 +1,12 @@ +/** + * 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 function helloWorld() { + return true; +} diff --git a/desktop/flipper-server/tsconfig.json b/desktop/flipper-server/tsconfig.json new file mode 100644 index 000000000..9161fe7a6 --- /dev/null +++ b/desktop/flipper-server/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [ + { + "path": "../flipper-server-core" + } + ] +} diff --git a/desktop/flipper-ui-browser/README.md b/desktop/flipper-ui-browser/README.md new file mode 100644 index 000000000..1e2c94d80 --- /dev/null +++ b/desktop/flipper-ui-browser/README.md @@ -0,0 +1,3 @@ +# flipper-ui-browser (TBD) + +Flippers UI, ready to be served to a webbrowser. Typically served by flipper-server. Leverages flipper-ui-core and binds the necessary features to the browser, such as file dialogs or menu's. diff --git a/desktop/flipper-ui-browser/package.json b/desktop/flipper-ui-browser/package.json new file mode 100644 index 000000000..2ff886336 --- /dev/null +++ b/desktop/flipper-ui-browser/package.json @@ -0,0 +1,28 @@ +{ + "name": "flipper-ui-browser", + "private": true, + "version": "0.0.0", + "description": "Flipper's UI, packaged for the browser", + "repository": "facebook/flipper", + "main": "lib/index.js", + "flipperBundlerEntry": "src", + "types": "lib/index.d.ts", + "license": "MIT", + "bugs": "https://github.com/facebook/flipper/issues", + "dependencies": {}, + "devDependencies": {}, + "peerDependencies": {}, + "scripts": { + "reset": "rimraf lib *.tsbuildinfo", + "build": "tsc -b", + "prepack": "yarn reset && yarn build" + }, + "files": [ + "lib/**/*" + ], + "homepage": "https://github.com/facebook/flipper", + "keywords": [ + "Flipper" + ], + "author": "Facebook, Inc" +} diff --git a/desktop/flipper-ui-browser/src/index.tsx b/desktop/flipper-ui-browser/src/index.tsx new file mode 100644 index 000000000..90a375a48 --- /dev/null +++ b/desktop/flipper-ui-browser/src/index.tsx @@ -0,0 +1,12 @@ +/** + * 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 function helloWorld() { + return true; +} diff --git a/desktop/flipper-ui-browser/tsconfig.json b/desktop/flipper-ui-browser/tsconfig.json new file mode 100644 index 000000000..6a7070447 --- /dev/null +++ b/desktop/flipper-ui-browser/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [ + { + "path": "../flipper-ui-core" + } + ] +} diff --git a/desktop/flipper-ui-core/README.md b/desktop/flipper-ui-core/README.md new file mode 100644 index 000000000..94f9ba257 --- /dev/null +++ b/desktop/flipper-ui-core/README.md @@ -0,0 +1,3 @@ +# flipper-ui-core (TBD) + +Flipper's UI, agnostic of Electron vs Browser. diff --git a/desktop/flipper-ui-core/package.json b/desktop/flipper-ui-core/package.json new file mode 100644 index 000000000..efd27b172 --- /dev/null +++ b/desktop/flipper-ui-core/package.json @@ -0,0 +1,28 @@ +{ + "name": "flipper-ui-core", + "private": true, + "version": "0.0.0", + "description": "Flipper's UI", + "repository": "facebook/flipper", + "main": "lib/index.js", + "flipperBundlerEntry": "src", + "types": "lib/index.d.ts", + "license": "MIT", + "bugs": "https://github.com/facebook/flipper/issues", + "dependencies": {}, + "devDependencies": {}, + "peerDependencies": {}, + "scripts": { + "reset": "rimraf lib *.tsbuildinfo", + "build": "tsc -b", + "prepack": "yarn reset && yarn build" + }, + "files": [ + "lib/**/*" + ], + "homepage": "https://github.com/facebook/flipper", + "keywords": [ + "Flipper" + ], + "author": "Facebook, Inc" +} diff --git a/desktop/flipper-ui-core/src/index.tsx b/desktop/flipper-ui-core/src/index.tsx new file mode 100644 index 000000000..90a375a48 --- /dev/null +++ b/desktop/flipper-ui-core/src/index.tsx @@ -0,0 +1,12 @@ +/** + * 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 function helloWorld() { + return true; +} diff --git a/desktop/flipper-ui-core/tsconfig.json b/desktop/flipper-ui-core/tsconfig.json new file mode 100644 index 000000000..e77f9c028 --- /dev/null +++ b/desktop/flipper-ui-core/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "references": [ + { + "path": "../flipper-common" + }, + { + "path": "../flipper-plugin" + } + ] +} diff --git a/desktop/jest.config.js b/desktop/jest.config.js index 4bd0a1067..8b8ac90e4 100644 --- a/desktop/jest.config.js +++ b/desktop/jest.config.js @@ -17,6 +17,7 @@ module.exports = { moduleNameMapper: { '^flipper$': '/app/src', '^flipper-plugin$': '/flipper-plugin/src', + '^flipper-(server-core|ui-core|common)$': '/flipper-$1/src', '^flipper-(pkg|pkg-lib|doctor|test-utils)$': '/$1/src', }, clearMocks: true, diff --git a/desktop/package.json b/desktop/package.json index 592afe895..0581eb059 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -269,7 +269,13 @@ "doctor", "pkg", "pkg-lib", + "flipper-common", "flipper-plugin", + "flipper-server-core", + "flipper-ui-core", + "flipper-ui-browser", + "flipper-server", + "flipper-dump", "static", "e2e", "plugin-lib", diff --git a/desktop/tsconfig.base.json b/desktop/tsconfig.base.json index ee2c0e9b5..65312683b 100644 --- a/desktop/tsconfig.base.json +++ b/desktop/tsconfig.base.json @@ -23,6 +23,9 @@ "flipper": ["./app/src"], "flipper-plugin": ["./flipper-plugin/src"], "eslint-plugin-flipper": ["./eslint-plugin-flipper/src"], + "flipper-server-core": ["./flipper-server-core/src"], + "flipper-server-ui": ["./flipper-server-ui/src"], + "flipper-common": ["./flipper-common/src"], "flipper-*": ["./*/src"] } },