Commit Graph

6715 Commits

Author SHA1 Message Date
Andrey Goncharov
aec05533d7 Expose a subset of flipper-plugin to flipper server
Summary: Flipper plugins rely on 'flipper-plugin' package being accessible from 'global'. Expose a subset (without UI stuff) of flipper-plugin to server add-ons

Reviewed By: mweststrate

Differential Revision: D34400811

fbshipit-source-id: e0079ddfa67e66c1b24ab02d7682917ddfc84aaf
2022-02-28 03:50:34 -08:00
Andrey Goncharov
9449f61adb Add server add-on babel transform
Reviewed By: antonk52

Differential Revision: D34393126

fbshipit-source-id: d910392d9ac7e7a44e2e9ede690a6bed77f018c7
2022-02-28 03:50:34 -08:00
Andrey Goncharov
01a5f3da90 Add generics to server add-on connection
Reviewed By: mweststrate

Differential Revision: D34307356

fbshipit-source-id: 27e61355a85995368ebb197c42d58f4145473567
2022-02-28 03:50:34 -08:00
Andrey Goncharov
673bb9135e Allow Node APIs for server add-ons
Reviewed By: antonk52

Differential Revision: D34386916

fbshipit-source-id: b2484dff15b0a1b0d08f8b0b2e17916d037570c8
2022-02-28 03:50:34 -08:00
Andrey Goncharov
dcfc84cce6 Add onServerAddOnStart and onServerAddOnStop plugin hooks
Reviewed By: mweststrate

Differential Revision: D34378231

fbshipit-source-id: e086eebcf94c01da76bfe8b88c6528bd21d89968
2022-02-28 03:50:34 -08:00
Andrey Goncharov
9e4ac0aaa9 Add unit tests for PluginManager
Reviewed By: mweststrate

Differential Revision: D34307076

fbshipit-source-id: 7cb6c808bea10d15627958e8fabc02b4563183d4
2022-02-28 03:50:34 -08:00
Andrey Goncharov
d96cf8127f Add unit tests for ServerAddOn
Reviewed By: mweststrate

Differential Revision: D34303780

fbshipit-source-id: 03a4570a6e891d979b87caca14f51068d74df877
2022-02-28 03:50:34 -08:00
Andrey Goncharov
81d0057a8d Fix potential race conditions for starting/stopping server add-ons
Reviewed By: mweststrate

Differential Revision: D34301593

fbshipit-source-id: 2950de8a8567318cd3e87eff176657df5ba8fd1b
2022-02-28 03:50:34 -08:00
Andrey Goncharov
bdbf79e3e1 Limit events and methods in server contact to strings only
Reviewed By: antonk52

Differential Revision: D34300854

fbshipit-source-id: 79cd3e3da9bb5dbac75243ac90118f32e12d8177
2022-02-28 03:50:34 -08:00
Andrey Goncharov
8b94186783 Load installed server add-ons
Reviewed By: nikoant

Differential Revision: D34300475

fbshipit-source-id: 6bb6c0ab811e28806a0924b3487931bdb0dd2c59
2022-02-28 03:50:34 -08:00
Andrey Goncharov
b4b9c0ab28 Implement receiving messages from add-on on the client
Reviewed By: mweststrate

Differential Revision: D34249101

fbshipit-source-id: 07297b84ed8640e3b41599726ba613b6b4e2b62e
2022-02-28 03:50:34 -08:00
Andrey Goncharov
4067f5bd88 Implement sending messages from desktop to add-on
Reviewed By: antonk52

Differential Revision: D34239803

fbshipit-source-id: 1a18d522ba877ade3d0703fbb374c15b596241d7
2022-02-28 03:50:34 -08:00
Andrey Goncharov
2ce037d96b Load bundled server add-ons
Reviewed By: antonk52

Differential Revision: D34238883

fbshipit-source-id: 01b4b1c1c0a63cbfb639e903f6a77307ae370330
2022-02-28 03:50:34 -08:00
Andrey Goncharov
b655efc78e Migrate to default exports for server add-ons
Reviewed By: antonk52

Differential Revision: D34201906

fbshipit-source-id: 3ee2bf831d5a1f5c6c9252acce1b1731462871f1
2022-02-28 03:50:34 -08:00
Andrey Goncharov
5cdb7c952e Update build scripts to support bundling server add-ons
Summary: Summary

Reviewed By: nikoant

Differential Revision: D34170565

fbshipit-source-id: be9904809bf33e85536a4c6ead0e753ef05209ff
2022-02-28 03:50:34 -08:00
Andrey Goncharov
47dd675dc8 Update schema
Reviewed By: mweststrate

Differential Revision: D34169727

fbshipit-source-id: 4df1eeb17ff3894e60b7b857a571524dba7de085
2022-02-28 03:50:34 -08:00
Andrey Goncharov
04eab80c98 Move server add-on interfaces to flipper-common
Reviewed By: antonk52

Differential Revision: D34169419

fbshipit-source-id: 69fcc8da7d98f59818fbb5b486a488f19830cd81
2022-02-28 03:50:34 -08:00
Andrey Goncharov
b9294645d3 Limit methods server add on can access
Reviewed By: mweststrate

Differential Revision: D34076174

fbshipit-source-id: e51a1b08dab54de6b7dc82ca59ec18a10f81ddd7
2022-02-28 03:50:34 -08:00
Andrey Goncharov
b80755721c Draft communication with server add-ons from the client side
Reviewed By: nikoant

Differential Revision: D34075379

fbshipit-source-id: 09f575f5cced866ad7b9290d7739ce60f38edeee
2022-02-28 03:50:34 -08:00
Andrey Goncharov
db976d5113 Implement sending messages from a server add-on
Reviewed By: mweststrate

Differential Revision: D34074383

fbshipit-source-id: de85e7a22dc9bb780163fc5b522708e8bc976df3
2022-02-28 03:50:34 -08:00
Andrey Goncharov
842b2c810a Implement sending messages to server add-on
Reviewed By: mweststrate

Differential Revision: D34073403

fbshipit-source-id: eacd73811b436f2b5c4255a83d8eb09367a96a67
2022-02-28 03:50:34 -08:00
Andrey Goncharov
12151e4a71 Extend Flipper commands to support server add-on messaging
Reviewed By: mweststrate

Differential Revision: D34046466

fbshipit-source-id: 9acc172c1805ec724b8709999bacf9e899c39e6b
2022-02-28 03:50:34 -08:00
Andrey Goncharov
3b390b74ff Track client connections and autostop server add-ons when all clients leave
Reviewed By: mweststrate

Differential Revision: D34045584

fbshipit-source-id: 1ad0cfffb9d304f0359c973d76d6956f7e932f72
2022-02-28 03:50:34 -08:00
Andrey Goncharov
9113006851 Make Client initialize server add-ons
Reviewed By: mweststrate

Differential Revision: D34044353

fbshipit-source-id: 99bcb1559787b2a904bdd796233666a7a4783ea4
2022-02-28 03:50:34 -08:00
Andrey Goncharov
a60865f0be Intergrate ServerAddOn with PluginManager
Reviewed By: lblasa

Differential Revision: D34042338

fbshipit-source-id: 2ae3992738e647075f19c4dba0ebfb01e6c12b8f
2022-02-28 03:50:34 -08:00
Andrey Goncharov
016299b374 Add server-side ServerAddOn entity
Reviewed By: lblasa

Differential Revision: D33982373

fbshipit-source-id: a07589e515fe82d3735402cc26d1258e1d212931
2022-02-28 03:50:34 -08:00
Andrey Goncharov
fc20abf392 Add Flipper server command definitions
Reviewed By: lblasa

Differential Revision: D33980529

fbshipit-source-id: b64f48134d4816d3502c70d15beff90a044490a4
2022-02-28 03:50:34 -08:00
Jong Hyun Park
035ba5613c Add neighbouring lines feature to Flipper Logs plugin
Summary:
Adding a feature to Flipper's Logs plugin where:
1) you search for something,
2) click on a line among the filtered search results,
3) press control,
4) get taken back to unfiltered list of all messages, centered on your selected line

This is to help debugging where the user may add a print statement but the error happens after it, and it's difficult to catch without a lot of scrolling.

Reviewed By: mweststrate

Differential Revision: D33446285

fbshipit-source-id: 19aa472a12de074e561dbe37b44821fc29bf5c91
2022-02-25 10:07:42 -08:00
Lorenzo Blasa
30becc1ced Remove RSocket
Summary:
^
Changelog: Remove rsocket dependency for Android

Reviewed By: aigoncharov

Differential Revision: D34418565

fbshipit-source-id: d2bfd6cede3c85709e252a8205525aa4595b4791
2022-02-25 02:33:22 -08:00
Lorenzo Blasa
9aed8ce02d Remove RSocket
Summary:
^
Changelog: Remove rsocket dependency for iOS

Reviewed By: aigoncharov

Differential Revision: D33656299

fbshipit-source-id: aab00c425976273112a127e06aca82dfd63194eb
2022-02-25 02:02:24 -08:00
Lorenzo Blasa
c4f80a826e Remove RSocket
Summary:
^
Changelog: Remove rsocket references from xplat

Reviewed By: aigoncharov

Differential Revision: D34418118

fbshipit-source-id: bd49b9da119e3a2a1ce396d14e0dca73e1b9c692
2022-02-24 23:56:22 -08:00
Scott Kyle
c15605afd3 Fixes for Mac Catalyst
Summary: When building for Mac Catalyst, it mostly appears as if it's targeting iOS (`TARGET_OS_OSX` is `0`) and the behavior should be aligned with iOS Simulator builds.

Reviewed By: lblasa

Differential Revision: D34413681

fbshipit-source-id: 1e56bbb3f16f8cd78e77771ff641c5cfcbc49955
2022-02-23 09:22:15 -08:00
Flipper Bot
faddf82317 Flipper Snapshot Bump: v0.136.1-SNAPSHOT
Summary: Releasing snapshot version 0.136.1-SNAPSHOT

Reviewed By: jknoxville

Differential Revision: D34414614

fbshipit-source-id: 176dd6c48587ea3b6a1bd24203210a5a649438d5
2022-02-23 08:22:34 -08:00
Flipper Bot
e1746932ce Flipper Release: v0.136.0
Summary: Releasing version 0.136.0

Reviewed By: jknoxville

Differential Revision: D34414615

fbshipit-source-id: 7239b27687b1af22cf26597e0d1fca138f9f9c7f
2022-02-23 08:22:34 -08:00
Lorenzo Blasa
5993a748ba C++ WebSocket
Summary:
^

Changes include:
- C++ WebSocket integration
- Explicit asio namespace usage as namespace asio = websocketpp::lib::asio; this way we don't care if boost::asio or just asio is used in the end.

Reviewed By: javache

Differential Revision: D34388770

fbshipit-source-id: d0b3ee8ac687751ab1b93d483729eb2baccb8687
2022-02-23 04:23:07 -08:00
Chris Hogan
4c91382e09 Synchronize access to dict in FLEXNetworkRecorder (#3457)
Summary:
All our read/write to `identifierDict` in FLEXNetworkRecorder are done in their own thread-safe queue except one read and one write call.

Those two non-thread-safe read/write calls are causing ThreadSanitizer crashes in `react-native-macOS` when we consume flipper. By adding these calls to the `dispatch_async(self.queue` a few lines lower in the method, their access becomes thread safe as well.

Never having worked on Flipper I don't have much context on what FLEXNetworkRecorder actually does and the git history for this file shows the bug has existed since the "Initial commit" so it's unclear to me if we've purposefully not included these calls in the dispatch queue for some reason.

That said, I'd propose this as a fix as the thread sanitizing crash no longer repros for me downstream and I don't see anything immediately obvious for why this can't be in the self.queue as well.

## Changelog

Fix thread sanitizer crash in FLEXNetworkRecorder.

Pull Request resolved: https://github.com/facebook/flipper/pull/3457

Test Plan:
Running react-native-macOS with the ThreadSanitizer consistently hits this race condition on a library object in Flipper with the error below.

```
WARNING: ThreadSanitizer: race on NSMutableDictionary (pid=32575)
  Read-only access of NSMutableDictionary at 0x000133ae5c60 by thread T11:
    #0 -[__NSDictionaryM objectForKeyedSubscript:] <null>:130036204 (CoreFoundation:arm64+0x1897d8)
    https://github.com/facebook/flipper/issues/1 __85-[FLEXNetworkRecorder recordRequestWillBeSentWithRequestID:request:redirectResponse:]_block_invoke FLEXNetworkRecorder.mm:130 (RNTester:arm64+0x1007afc48)
    https://github.com/facebook/flipper/issues/2 __tsan::invoke_and_release_block(void*) <null>:130036204 (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x70514)
    https://github.com/facebook/flipper/issues/3 _dispatch_client_callout <null>:130036204 (libdispatch.dylib:arm64+0x581c)

  Previous modifying access of NSMutableDictionary at 0x000133ae5c60 by thread T1:
    #0 -[__NSDictionaryM setObject:forKeyedSubscript:] <null>:130036204 (CoreFoundation:arm64+0x188808)
    https://github.com/facebook/flipper/issues/1 -[FLEXNetworkRecorder recordRequestWillBeSentWithRequestID:request:redirectResponse:] FLEXNetworkRecorder.mm:118 (RNTester:arm64+0x1007af754)
    https://github.com/facebook/flipper/issues/2 __73-[FLEXNetworkObserver(NSURLSessionTaskHelpers) URLSessionTaskWillResume:]_block_invoke FLEXNetworkObserver.mm:1690 (RNTester:arm64+0x1007adc70)
    https://github.com/facebook/flipper/issues/3 __tsan::invoke_and_release_block(void*) <null>:130036204 (libclang_rt.tsan_iossim_dynamic.dylib:arm64+0x70514)
    https://github.com/facebook/flipper/issues/4 _dispatch_client_callout <null>:130036204 (libdispatch.dylib:arm64+0x581c)
```
After moving the only non-thread safe read/write call into the appropriate dispatch queues I'm not longer able to repro this thread access crash after many attempts.

Reviewed By: fabiomassimo

Differential Revision: D34388079

Pulled By: lblasa

fbshipit-source-id: 2e654d601bc6a7d8d78d9a824e0aee66889b7fb9
2022-02-22 10:22:23 -08:00
Andrey Goncharov
bed23c586b Replace style guide references
Summary:
allow-large-files
See D34339758

Reviewed By: jknoxville

Differential Revision: D34378570

fbshipit-source-id: ad451afc1774e6d38902d510629ce1b92457adf0
2022-02-22 08:25:28 -08:00
Andrey Goncharov
342c316c84 Add style guide
Summary:
allow-large-files
See D34339758

Reviewed By: jknoxville

Differential Revision: D34378571

fbshipit-source-id: a7c845f4676b25998dc63bf3029c5d1ec8205611
2022-02-22 08:25:28 -08:00
Andrey Goncharov
3d8d43b562 Update babel config
Summary:
allow-large-files

During decapitation the style guide was accidentally removed. In this diff we bring it back and embed it into our docs.
The only caveat is that the fonts have slightly changes because we included antd.css. It does not change too much from my point of view, but I would love to hear from the team.

Reviewed By: jknoxville

Differential Revision: D34339758

fbshipit-source-id: 10d347bc805f9314ae717de483bf8b766000280f
2022-02-22 08:25:28 -08:00
Anton Nikolaev
38c81ca159 Make internal plugin distribution code publicly available (#3473)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/3473

This diff is the first one which addresses https://github.com/facebook/flipper/issues/3320.

In this diff we are making a part of the code used for internal Flipper plugin distribution in Meta also available publicly for re-using in other orgs.

Some explanation on how plugin installation and updates is designed now:
1) We periodically poll for plugins available for download. API for retrieving available plugins list is abstracted and will be different between public and fb versions, however all other logic is re-used.
2) In addition to "Enabled" and "Disabled" plugins in the left panel Flipper shows "Detected in App" list. Plugins in this list are those which are known compatible with the currently selected device/app, but not yet installed.
3) User can install any of "Detected in App" plugins by clicking to "Download and install" button near them in the left panel similarly to enabling plugins in "Disabled" list.
4) If we detect that for some installed plugin we have a newer version available for download - we download it silently and store on disk.
5) If the plugin for which we have new downloaded version is disabled - we update it silently without any notifications by loading new version from the disk and unloading the previous version from cache.
6) If the plugin for which we have new downloaded version is enabled then we avoid updating it automatically (because we need to reset plugin state in such case) and instead show notification on top of the plugin and ask user to reload it to apply new version. On reloading we reset the plugin state.
7) On Flipper startup we always update all plugins to their latest versions available on the disk.

Reviewed By: aigoncharov

Differential Revision: D34380308

fbshipit-source-id: a94d724e42aa5ef78445af266fcd4c424226a703
2022-02-22 05:23:05 -08:00
Anton Nikolaev
5da0a83a36 Refactor recommended plugin API
Summary:
This is just refactoring in preparation to open-sourcing internal plugin distribution code to make it available for other orgs so they can distribute their internal plugins. See other diffs in the same stack.

This diff moves recommended plugins handling from `pluginMarketplace` which will be the same for fb-internal and OS versions into `pluginMarketplaceAPI` which will differ for fb-internal and OS versions. This will make it possible for other orgs to define their own "recommended" plugins which then will be automatically installed/enabled for new users.

Reviewed By: aigoncharov

Differential Revision: D34379981

fbshipit-source-id: 5c3a4efb6d0171256cf508f9005d914d7332e14f
2022-02-22 05:23:05 -08:00
Lorenzo Blasa
395708348d Remove RSocket documentation references
Summary:
^
Changelog: Remove RSocket documentation references

Reviewed By: jknoxville

Differential Revision: D34345316

fbshipit-source-id: 5b9fac8c04e325f3f02ef3713b0146b17e694c9d
2022-02-21 06:22:44 -08:00
Andrey Goncharov
4d1d9648f0 JS Flipper announcement
Summary: Annonce JS flipper

Reviewed By: mweststrate

Differential Revision: D33565875

fbshipit-source-id: da7140ea3a331ff3d387801410e88d1f6746bee3
2022-02-21 04:23:16 -08:00
John Knox
ab0775a987 automatic update for docusaurus-plugin-internaldocs-fb@0.10.6
Reviewed By: antonk52

Differential Revision: D34343082

fbshipit-source-id: d6baf684e951e6ad4099034595331f5ed9e764d5
2022-02-21 04:23:16 -08:00
Lorenzo Blasa
c45164ec2b Log unable to extract clientQuery as warning instead of error
Summary:
^
LogView is raising this up but I don't think there's an actionable item from our side. If a client doesn't have the right arguments on the query string then we effectively are unable to construct a valid query.

All our clients do this correctly, but there may be instances that either a browser or another process is 'trying' to connect to Flipper even if unintentionally. This behaviour I've observed in the past.

Changelog: Log 'Unable to extract the client query from the request URL' as warning

Reviewed By: passy

Differential Revision: D34340068

fbshipit-source-id: f5fc36a9803a83d6662b6383589bc0aa99774798
2022-02-18 05:50:07 -08:00
facebook-flipper-bot
db68ff5b3a Automated: Update Podfile.lock (#3456)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/3456

Test Plan:
Imported from GitHub, without a `Test Plan:` line.

**Static Docs Preview: flipper**
|[Full Site](https://our.intern.facebook.com/intern/staticdocs/eph/D34299173/V2/flipper/)|

|**Modified Pages**|
|[docs/getting-started/ios-native](https://our.intern.facebook.com/intern/staticdocs/eph/D34299173/V2/flipper/docs/getting-started/ios-native/)|

Reviewed By: nikoant

Differential Revision: D34299173

Pulled By: aigoncharov

fbshipit-source-id: 2595b9e239415007e43adf79f58fd62c65dd381a
2022-02-17 02:51:54 -08:00
Dominik Pich
9703a68423 surpress unused error for retainedData as it is deliberate to delay its deallocation
Summary:
this diff ignores an used variable error as it is deliberate
xcode 13.3 doesnt like that

see:
https://www.internalfb.com/intern/testinfra/diagnostics/5066549669072759.844424981821815.1644949594/

Note: feel free to commandeer for better fix!

Reviewed By: d16r

Differential Revision: D34259729

fbshipit-source-id: 7c6ba4129a83a6f82981e927744c3a36046d88df
2022-02-16 15:48:54 -08:00
Xin Yue
9833105764 Edit intro.mdx using inpage editor
Summary:
This diff has been automatically generated by the inpage editor.
                        If you want to update this diff, go through the preview link that would be attached to the test plan.
                        Please ensure you are editing the same page that was used to create this diff.

Reviewed By: nikoant

Differential Revision: D34249537

fbshipit-source-id: cc64c219d3400633af7bbcb5ab002c13dfb83899
2022-02-16 11:36:15 -08:00
tsubasa kogoma
63cec41e29 Change label from iOS to ObjC (#3398)
Summary:
The documentation shows Swift and ObjC code, but the label names are Swift and iOS.

## Changelog
Modify the documentation

Pull Request resolved: https://github.com/facebook/flipper/pull/3398

Test Plan:
No test plan

**Static Docs Preview: flipper**
|[Full Site](https://our.intern.facebook.com/intern/staticdocs/eph/D34269458/V2/flipper/)|

|**Modified Pages**|
|[docs/getting-started/ios-native](https://our.intern.facebook.com/intern/staticdocs/eph/D34269458/V2/flipper/docs/getting-started/ios-native/)|

Reviewed By: mweststrate

Differential Revision: D34269458

Pulled By: aigoncharov

fbshipit-source-id: 98909b539b49a54eb6cba8605b55a00e53619a19
2022-02-16 08:31:53 -08:00
Pascal Hartig
d8530baa25 Upgrade to Gradle 7.4 (#3437)
Summary:
Done using

```
./gradlew wrapper --gradle-version=7.4 --distribution-type=all
```

Waiting for CI result to check if this also addresses the build problem.

Note for reviewers: This is generated. Scanning for Bad Things is appreciated but you don't need to carefully read every line.

Depends on https://github.com/facebook/flipper/issues/3436.

Pull Request resolved: https://github.com/facebook/flipper/pull/3437

Test Plan: The recently added test step for verifying that this doesn't regress our APK creation is passing: https://github.com/facebook/flipper/runs/5188576639?check_suite_focus=true

Reviewed By: lblasa

Differential Revision: D34218046

Pulled By: passy

fbshipit-source-id: 20d3c543db8f1c12f996977d0bb34d62ea5bcd0b
2022-02-16 08:22:09 -08:00