Commit Graph

684 Commits

Author SHA1 Message Date
Pritesh Nandgaonkar
b1fd70a3c3 Show status message with percentage for the seriailization
Reviewed By: passy

Differential Revision: D16382096

fbshipit-source-id: 17c44a7befcef82815dc9d2379898e23a36a05c8
2019-07-30 06:50:23 -07:00
Pascal Hartig
dd59daffa3 Disable onMessageCallback logging
Summary:
Will post about this in more detail later but in short, this is taking
up wayyyy too much space.

Reviewed By: danielbuechele

Differential Revision: D16543587

fbshipit-source-id: 8130a1a8378e5a6ffde669d651063ef92eb021c0
2019-07-29 10:42:05 -07:00
Benjamin Elo
0609811224 Added dropdown sheet for nav bar
Summary:
Here I've added a drop down sheet for the nav bar. Currently it only supports showing the first five bookmarks with no filtering.

I use a custom hook to handle navigation with the keyboard in the nav bar, so that works well.

So you can use the arrow keys to select a uri from the dropdown, or by using the mouse.

Reviewed By: danielbuechele

Differential Revision: D16542218

fbshipit-source-id: 4c242fd3097297fc599b36523bb4821bbc172f88
2019-07-29 10:13:37 -07:00
Daniel Büchele
2c7371d264 typescript eslint plugin
Summary: This is required to properly run eslint in Atom/VSCode on TypeScript files

Reviewed By: jknoxville

Differential Revision: D16201418

fbshipit-source-id: 31da04c2d313e9147e0f868c1af15bf3115e6d6a
2019-07-29 06:39:11 -07:00
Pascal Hartig
2dd580f24a Fix flow errors (#502)
Summary:
We had a brief moment without Flow coverage, where this must have snuck
in. Not sure if there's a better type for `node` given the current
structure, but the rest should be obvious.
Pull Request resolved: https://github.com/facebook/flipper/pull/502

Test Plan: flow

Reviewed By: jknoxville

Differential Revision: D16533248

Pulled By: passy

fbshipit-source-id: 51e493208050e4af531e161fb49eda77fdf2494e
2019-07-29 06:08:37 -07:00
Benjamin Elo
4372fccacc Alphabetize bookmarks
Summary: The bookmarks would appear in different order upon reloading the app. Here I have a fixed order.

Reviewed By: jknoxville

Differential Revision: D16540496

fbshipit-source-id: ebc3e1065dbd2ae76b919a943c2cc7f81d857ca8
2019-07-29 04:29:46 -07:00
Benjamin Elo
fc28b904a0 Added ability to remove bookmarks
Summary: Here I add the ability to remove bookmarks. If a bookmark already exists, a different dialouge menu appears.

Reviewed By: danielbuechele

Differential Revision: D16540394

fbshipit-source-id: 5d6737e1efb1a9663519bf17084ef3b55a6ba28e
2019-07-29 04:29:45 -07:00
Benjamin Elo
292efb0bb3 Moved NavPlugin types into seperate file
Summary: Moved Flow types into their own file. I will be adding more types as part of the auto complete for the navigation bar and this is to keep the code more organized.

Reviewed By: danielbuechele

Differential Revision: D16540279

fbshipit-source-id: d69ac0d05f91e9d92fcda37325c791ddc83a52c9
2019-07-29 03:47:49 -07:00
Benjamin Elo
84f9a1d8b5 Added ability to save bookmarks in Nav Plugin
Summary:
This is a glue commit that glues all the components I've added in the past together.

Favouriting a page (i.e. clicking on the star) adds it as a bookmark.

There's four main parts to make your rreview easier:
1. Add bookmarks and favouriting to all the components that support it, including their parents. (NavigationInfoBox, SearchBar, Timeline)

2. Persist bookmarks using the indexedDB. (index.js)

3. Add saving to db through the SaveBookmarksDialog

4. Various other changes due to a changed architecture. i.e. moving bookmarks from persistedState to state.

Still to come.

1. Removing bookmarks.

2. Pressing enter to save the bookmarks when the SaveBookmarksDialog pops up.

3. Alphabetizing bookmarks? Order seems to jump around.

Reviewed By: jknoxville

Differential Revision: D16518013

fbshipit-source-id: 2e0cef14123c611db43cca360bc66dc4c05b11ed
2019-07-28 12:50:31 -07:00
Benjamin Elo
e4601a89f3 Added IndexedDB utility functions for reading and writing bookmarks
Summary:
These are utility function for reading from the IndexedDB and writing to it. This will be used for persistant storage of bookmarks.

The reason I chose IndexedDB over local storage is due to the poor efficiency of stringifying and parsing a long list of bookmarks everytime we read and write to local storage.

With IndexedDB we can modify a single value at a time.

Bookmarks are passed around as a Map, with the key being the uri's and the common names being the values. This allows me to check if a specified uri is in the Map in O(1) time, so that I can highlight the star icon in the UI with gold.

Reviewed By: jknoxville

Differential Revision: D16498744

fbshipit-source-id: 7c7af28bf4eb3fcc985a71dfd61ffbdb8481b6a6
2019-07-28 12:50:31 -07:00
Pritesh Nandgaonkar
e7198040ea Add UI to select plugins
Summary: Adds UI to the select the plugin to export. It lists the plugins which has currently some data in the redux store and it also lists those plugins which has implemented `exportPersistedState` function, as it might happen that the redux store may not have the data for a plugin but it will still export the data by calling `exportPersistedState`, which will ping the mobile client to get the data at point while we export the flipper trace.

Reviewed By: jknoxville

Differential Revision: D16468408

fbshipit-source-id: 452a7caf7199dd2b8df330bbb10d0a90008e92ec
2019-07-26 10:53:27 -07:00
Sara Valderrama
594565de31 Fix icons url redundancy for variant argument
Summary: Update Flipper icon request URL (variant argument was appended twice in certain cases).

Reviewed By: jknoxville

Differential Revision: D16443282

fbshipit-source-id: e64e03e40030baa1a7e6067cfc2a9aaf7a75302a
2019-07-25 13:26:06 -07:00
John Knox
b0140c6364 Add rating tooltip
Summary: I felt it would be good to say what these stars are actually for.

Reviewed By: passy

Differential Revision: D16457243

fbshipit-source-id: 961933f71efdcb6835936d5e1da7fe817eccc996
2019-07-25 07:12:45 -07:00
Benjamin Elo
dbfc7ae416 Added SaveBookmarkDialog component
Summary: This adds a dialog box component that allow saving of bookmarks.

Reviewed By: jknoxville

Differential Revision: D16491842

fbshipit-source-id: fc8332bba491ad0583564fd6a85b5ad225bbd461
2019-07-25 06:54:39 -07:00
John Knox
d0a61d6455 Back out "[flipper] Add 1h tolerance to ssl certs"
Summary:
Original commit changeset: bdbd61bce1bc

That change appears to be causing some issues for open source users: https://github.com/facebook/flipper/issues/498

To mitigate the issue I'm reverting it, the change turns out to be unnecessary anyway.

Reviewed By: passy

Differential Revision: D16486136

fbshipit-source-id: 70decca6e017a6a2903cc484641fb2e736dc5d7c
2019-07-25 04:11:59 -07:00
Roman Gorbunov
cb374ffccd Flipper sent messages while editing
Summary: In previous version when you edited something in the flipper, after each symbol flipper sent a message to edit a value to mobile side. Now "change message" will be sent only after pressing "Enter" button.

Reviewed By: priteshrnandgaonkar

Differential Revision: D16338101

fbshipit-source-id: 6605663d0b0059fdb2d20cb279e133afc25d47f1
2019-07-25 04:03:02 -07:00
Zoltán Gilián
5beb4f7b2b Call plugin teardown method when plugin is destroyed
Summary: `teardown()` was not called for device plugins. This diff fixes the issue.

Reviewed By: jknoxville

Differential Revision: D16416440

fbshipit-source-id: 5c9ffa211bfbe4e322504c37b95ff87afab8d061
2019-07-24 03:02:21 -07:00
Benjamin Elo
a86ea5131c Added onHideSheet method to Sheet props
Summary:
This component was added back in January, but it hasn't been used, and thus no one has tested it in the real world.

It needs a onHideSheet method to unmount this component when the plugin sheet becomes hidden. This allows the sheet to appear and dissapear on button clicks, instead of only appearing when the container component loads.

For the old behavior see the test plan in this diff: D13597251

Reviewed By: jknoxville

Differential Revision: D16443836

fbshipit-source-id: 68feec23338287dbafc846689ea2a1b35be4b2b0
2019-07-24 02:53:24 -07:00
John Knox
f7875002dd Add user ratings
Summary:
Adds a star rating to flipper internal.

Based on the nuclide behaviour:
We get an event emitted when a user changes their rating.
And we also get the rating with every ping event, which is fired every minute, if flipper is the primary window.

The only thing I don't like that much is that this doesn't actually say anywhere what the stars are for.

Reviewed By: passy

Differential Revision: D16420281

fbshipit-source-id: 69a52f64058955d7cd068215478e95c554cb9ed4
2019-07-24 00:14:46 -07:00
Benjamin Elo
66bed16333 Added navigation ability to bookmarks sidebar
Summary: I've added the ability to navigate to different pages in the app via the bookmarks sidebar. Still no way to add bookmarks yet.

Reviewed By: jknoxville

Differential Revision: D16438415

fbshipit-source-id: f7dcda1add701eba8655518fba7cb9a82cf49ca1
2019-07-23 09:52:21 -07:00
Timur Valiev
294d158869 immutable data structures in tables 5/n: create table plugin
Summary:
Migrating tables' row collection to Immutable.js List:
1. Migrate createTablePlugin to ManagedTable_immutable

-----
Current implementation of tables forces to copy arrays on new data arrival which causes O(N^2) complexity ->
tables can't handle a lot of new rows in short period of time -> tables freeze and become unresponsive for a few seconds.
Immutable data structures will bring us to O(N) complexity

Reviewed By: jknoxville

Differential Revision: D16416867

fbshipit-source-id: 20890aa851cd2e34e33fd2ed69c5d6048af14cbb
2019-07-23 08:00:55 -07:00
Timur Valiev
d3658f7d31 immutable data structures in tables 3/n: searchable table
Summary:
Migrating tables' row collection to Immutable.js List:
1. Сopy SearchableTable code to SearchableTable_immutable
2. Use ManagedTable_immutable for SearchableTable_immutable

-----
Current implementation of tables forces to copy arrays on new data arrival which causes O(N^2) complexity ->
tables can't handle a lot of new rows in short period of time -> tables freeze and become unresponsive for a few seconds.
Immutable data structures will bring us to O(N) complexity

Reviewed By: jknoxville

Differential Revision: D16416732

fbshipit-source-id: 856ba0407bfdd12bb1b90110e130562a07cc5060
2019-07-23 08:00:54 -07:00
Timur Valiev
6deaf2106f immutable data structures in tables 2/n: managed table
Summary:
Migrating tables' row collection to Immutable.js List:
1. Change native array to Immutable list in ManagedTable_immutable

-----
Current implementation of tables forces to copy arrays on new data arrival which causes O(N^2) complexity ->
tables can't handle a lot of new rows in short period of time -> tables freeze and become unresponsive for a few seconds.
Immutable data structures will bring us to O(N) complexity

Reviewed By: jknoxville

Differential Revision: D16416869

fbshipit-source-id: 6d5690d8f5f70286f31a423e319b2cb22deab8ff
2019-07-23 08:00:54 -07:00
Timur Valiev
af7830d94a immutable data structures in tables 1/n: init
Summary:
Migrating tables' row collection to Immutable.js List:
1. Сopy ManagedTable code, no changes
2. Add deps to Immutable.js

-----
Current implementation of tables forces to copy arrays on new data arrival which causes O(N^2) complexity ->
tables can't handle a lot of new rows in short period of time -> tables freeze and become unresponsive for a few seconds.
Immutable data structures will bring us to O(N) complexity

Reviewed By: jknoxville

Differential Revision: D16416870

fbshipit-source-id: d3e1a9571ea08fa7ccaedc5ad3eca863d22a79a4
2019-07-23 08:00:54 -07:00
dependabot[bot]
5283bf5ada Bump lodash from 4.17.5 to 4.17.13 in /src/plugins/shared_preferences (#496)
Summary:
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.5 to 4.17.13.
<details>
<summary>Commits</summary>

- [`e371828`](e37182845f) Bump to v4.17.13.
- [`357e899`](357e899e68) Rebuild lodash and docs.
- [`fd9a062`](fd9a062d57) Bump to v4.17.12.
- [`e77d681`](e77d68121f) Rebuild lodash and docs.
- [`629d186`](629d186579) Update OpenJS references.
- [`2406eac`](2406eac542) Fix minified build.
- [`17a34bc`](17a34bc585) Fix test bootstrap for core build.
- [`53838a3`](53838a38f8) Fix tests in older browsers.
- [`29e2584`](29e258497b) Fix style:test lint nits.
- [`8f4d3eb`](8f4d3eb018) Update deps.
- Additional commits viewable in [compare view](https://github.com/lodash/lodash/compare/4.17.5...4.17.13)
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lodash&package-manager=npm_and_yarn&previous-version=4.17.5&new-version=4.17.13)](https://help.github.com/articles/configuring-automated-security-fixes)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/facebook/flipper/network/alerts).

</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/496

Reviewed By: jknoxville

Differential Revision: D16417041

Pulled By: passy

fbshipit-source-id: 8e6f08761b0478184569588eec786e577508e058
2019-07-23 06:23:47 -07:00
Benjamin Elo
a262d22399 Added BookmarksSidebar component
Summary:
This is another WIP. Here I construct a skeleton functional component which currently just displays that there is no bookmark information.

I have also placed the component into the layout.

Reviewed By: jknoxville

Differential Revision: D16419794

fbshipit-source-id: fe1722255bde2b8363e5514c284a242f077e5185
2019-07-23 03:35:42 -07:00
Benjamin Elo
c6f9d1cb18 Added FavoriteButton component
Summary: I've added a favorite button component. The FavoriteButton is a toggle button that has a gold favorited state and an outlined non-favorited state. This is passed in as a prop.

Reviewed By: jknoxville

Differential Revision: D16418215

fbshipit-source-id: b695ea223d5a543df6bf1e588dc6756f9e84e8e1
2019-07-23 03:35:41 -07:00
Benjamin Elo
eeeb32efa9 Created Timeline component
Summary: This is a WIP component that displays the timeline of nav events to the user.

Reviewed By: jknoxville

Differential Revision: D16417087

fbshipit-source-id: 45a4bcdc271941d413c78fab2424628499c6d5ea
2019-07-23 03:35:41 -07:00
Benjamin Elo
f4e4dccd63 Added word wrap and navigation to nav info box
Summary: What happens in NavInfoBoxes stays in NavInfoBoxes i.e. the text now wraps instead of leaking out of the container. Also the eye icon works for navigation.

Reviewed By: jknoxville

Differential Revision: D16416974

fbshipit-source-id: 029b1c7e56db9fdf6499a52296080cd340078353
2019-07-23 03:35:41 -07:00
Benjamin Elo
f313d5edcb Added full screen flex column
Summary: The original flex colum that came as standard did not flex to fill the remainder of the screen. Adding this component allows for a full screen flex column so that the scroll bar in the timeline looks correct.

Reviewed By: jknoxville

Differential Revision: D16416933

fbshipit-source-id: bd296aea85730f192778ed0aca4b226893b2829d
2019-07-23 03:35:41 -07:00
Pritesh Nandgaonkar
958a335043 Fix the broken metrics feature
Summary:
The metrics feature got broken in this D16280167, due to a review change.

```
+  if (!selectedPlugins.includes(pluginName)) {

-  if (selectedPlugins.length > 0 && !selectedPlugins.includes(pluginName)) {
```

Reviewed By: jknoxville

Differential Revision: D16379959

fbshipit-source-id: ab1c4caf56a55bd97f1299822d6fa4331815c569
2019-07-22 12:54:33 -07:00
Pritesh Nandgaonkar
23d4327f69 Convert multiple arguments as options for the helper functions
Summary: With the each addition of the CLI arguments, there were addition in the arguments to the helper functions for exportStore. To control it, I have moved those arguments into an object

Reviewed By: jknoxville

Differential Revision: D16378511

fbshipit-source-id: e620bc0d4863aa6029a57771aa970aebb7294ba9
2019-07-22 12:54:33 -07:00
Benjamin Elo
aeee96c050 Reversed order of incoming nav events
Summary: Since events will be displayed in a timeline view with a flex-cloumn, it is more efficient to have the events be added to the event array in reverse order; that is the newest events at the front of the array.

Reviewed By: passy

Differential Revision: D16379893

fbshipit-source-id: c85a2cca118e2d4ae990f69134f5d5770c360fbd
2019-07-22 03:07:00 -07:00
Benjamin Elo
9b82dc5025 Added IconButton Component
Summary: Added IconButton component with a ripple effect. I also placed it into the components where it will be used.

Reviewed By: passy

Differential Revision: D16378064

fbshipit-source-id: 6b677ec4a43adf94eb38136a9c607c85919c0176
2019-07-19 11:50:41 -07:00
Pritesh Nandgaonkar
0c0f0d4a90 Fix fresco fetch bug
Summary: Before this diff the "getAllImageData" wasn't triggered as the it used to early exit, because persistedState was not null. That check was unnecessary and not needed.

Reviewed By: jknoxville

Differential Revision: D16377134

fbshipit-source-id: 61ee49fbd908733798086206a82e38890ecd0af6
2019-07-19 07:30:30 -07:00
Pritesh Nandgaonkar
e8a8f87086 Adds capability to select plugins for which the data would be exported
Summary: This diff adds `selectedPlugins` property in the redux store. With this diff now you can pass the list of plugins to headless so that it exports only the selected plugin's data

Reviewed By: passy

Differential Revision: D16280167

fbshipit-source-id: b03a1c49a7f51547470e0bcfa43083e52efabdd0
2019-07-19 07:02:39 -07:00
Pascal Hartig
d81a037962 Convert some CommonJS constructs to ES6
Summary:
Tried to automate this with [cjs-to-es6](https://github.com/nolanlawson/cjs-to-es6) but it only
works on vanilla JS files without any special Flow syntax. I converted some places
manually but we can just do the rest as we modify the files.

Reviewed By: jknoxville

Differential Revision: D16340187

fbshipit-source-id: b55c7ce2d719876e47e85f5f3fce13b8c8ae4010
2019-07-18 12:56:08 -07:00
Pascal Hartig
09c615ce6a Make using require() a warning
Summary: Per title. Let's be more consistent, especially for plugins where authors may not know which one to use.

Reviewed By: jknoxville

Differential Revision: D16340189

fbshipit-source-id: ffe49e509f744279e32fc9fc3f1d59efc1328d80
2019-07-18 12:56:08 -07:00
Pascal Hartig
453b04a008 Remove duplicate import
Summary: Drive-by change. There's a renamed import already in there which is clearer.

Reviewed By: bnelo12

Differential Revision: D16332879

fbshipit-source-id: ac8e829a3533df2991a7f8e5eab073020d6df411
2019-07-18 10:38:28 -07:00
Benjamin Elo
df725de674 Added NavigationInfoBox component
Summary:
Here I added an info box to display the info of the incoming navigation events.

The component is currently missing interaction (navigating to uris and favoriting), but I will add that in my next diff.

While I was here, I modified the component file structure a tiny bit to make importing components easier.

Reviewed By: jknoxville

Differential Revision: D16357204

fbshipit-source-id: 70b137e052181559a2fda02b091a71e54cb1ade0
2019-07-18 08:15:03 -07:00
John Knox
b4585ef72c Add types to reduxDevToolsConfig
Summary: Getting rid of a flowfixme, part of T47375728

Reviewed By: passy

Differential Revision: D16336917

fbshipit-source-id: 163734796b72ba2c8971f27ce213baf7ca3f23a1
2019-07-18 06:30:02 -07:00
John Knox
5288c4ac93 Rename id in CLEAR_PLUGIN_STATE event
Summary:
There's been a bug here where the id was treated as a pluginId.
Renaming to make it clear.

Reviewed By: passy

Differential Revision: D16338884

fbshipit-source-id: 42c6c92653811d88cd37ebf4834346b1f0bb2c2a
2019-07-18 05:28:45 -07:00
John Knox
286f0d7acf Fix persistedState bug
Summary:
Persisted state was not being cleared across client disconnects.
This fixes that.

Reviewed By: passy

Differential Revision: D16338524

fbshipit-source-id: ec51ec3bd999a388a0e8687f08841970872087ec
2019-07-18 05:28:45 -07:00
Benjamin Elo
beb656c84e Added Nav Plugin tests
Summary:
Here I added two tests to test the persisted state reducer in the navigation pliugin.

I uncovered that my state reducer is not pure, as it calls the Date constructor, but I will fix this in a future update by passing the date recorded on the Android device when the nav event occurs and sending that via the socket connection.

For now I have modified the state reducer to take a date as part of the payload on a nav_event, or if none exists record the date as before. Also, if a page has no uri, but we want to record a nav event, I send null uri from the Android side. This doesn't send the uri as null to flipper; the uri object property simply doesn't exist. In this case I explicitly cast the undefined value for uri to null.

Reviewed By: jknoxville

Differential Revision: D16330958

fbshipit-source-id: fe338ea3a244df6ef33356bc7fdef8da9291dc68
2019-07-18 02:54:34 -07:00
Pascal Hartig
a6fb1a9d86 Add prefetcher mercurial setup code
Summary:
Logic for installing an uninstalling a custom `post-update` mercurial hook, invoking the script introduced in the previous diff.

This is to gather some early data before rolling this integration out more broadly, i.e. through the mercurial distribution.

Reviewed By: jknoxville

Differential Revision: D16283081

fbshipit-source-id: e8610509e5f105a9b717a881aa327bb04f9a2f4f
2019-07-18 02:48:28 -07:00
Sidd Srinivasan
4dbf51f28c switch for to htmlFor in <Select>
Summary: Was getting error that the label for Select should be using htmlFor not for. found that when wrapping with JSX - changing this inside select fixes this errorlog.

Reviewed By: passy

Differential Revision: D16264103

fbshipit-source-id: 6a19d723a8356403ba4a169e0b160fed7e137670
2019-07-17 07:57:32 -07:00
John Knox
934bfa97e4 Fix type in test
Summary: fail isn't a thing

Reviewed By: passy

Differential Revision: D16335797

fbshipit-source-id: c2f07b722424f540e6eb1a4cd423397ec1fe545c
2019-07-17 07:19:22 -07:00
John Knox
939513e7a6 Add dateformat flow stub
Summary: `flow-typed create-stub dateformat`

Reviewed By: passy

Differential Revision: D16334489

fbshipit-source-id: d72b89a6578913bb799f93038455e16e386a7422
2019-07-17 07:19:22 -07:00
John Knox
7d3f05dae3 Re-enable flow module checking
Summary:
Setting the module extension to .tsx overrode the defaults, meaning .js files were no longer being checked when imported.

This adds the defaults back to the extensions to be checked, including `.js`
It does seem to cause errors importing `.tsx` at the moment, but there aren't many so I've just $FlowFixMe'd them for now.

https://flow.org/en/docs/config/options/#toc-module-file-ext-string

Reviewed By: passy

Differential Revision: D16333800

fbshipit-source-id: 7bea92c038048234b4f634704f71c15d79ab3c63
2019-07-17 06:40:09 -07:00
Pascal Hartig
37f8caf714 Replace commonjs import
Summary: Feels out of place. More drive-by stuff. I'll set up a linter for this later.

Reviewed By: bnelo12

Differential Revision: D16332869

fbshipit-source-id: 0fb94eabbeeca039f8704df288e26babf34a7e34
2019-07-17 06:29:23 -07:00