Skip to content
This repository has been archived by the owner on May 25, 2021. It is now read-only.

Massive refactoring of entire backend and most of the frontend #546

Merged
merged 50 commits into from
Aug 25, 2016
Merged

Massive refactoring of entire backend and most of the frontend #546

merged 50 commits into from
Aug 25, 2016

Conversation

clbond
Copy link
Contributor

@clbond clbond commented Aug 25, 2016

This PR rewrites the entire backend and the majority of the frontend code in Augury. I apologize because it is a massive huge commit that no reasonable person would want to review all the way through. But since it was such a thorough refactoring, I was not able to submit discrete pieces of work in small PRs. Anyway here is what this PR changes:

  • Rewrites the communication mechanism between the browser and the extension
    1. Messages are no longer stateless and each side may respond to any messages they receive
    2. This 'response' functionality is used throughout the application now in order to support complex UI flows
  • Rewrites the entire backend
    1. Rewrite the backend in a way that makes it much more solid and resilient. I think we are less likely to see random bugs and errors as people use Augury on their applications, either large or small.
    2. Creates several new serialization mechanisms: binary msgpack transmission; custom 'meta object recreator' serialization that creates a function that is capable of reconstructing the original object, including any circular references
    3. This allows us to display state that previously was excluded from the UI (anything that could not be JSON.stringify'd)
  • Rewrites large chunks of the frontend
    1. Mainly just to clean up and refactor code that had become unwieldy
    2. But also to reduce bugs and make the application state a lot easier to understand

If you have an interest in this PR I strongly suggest cloning it and running the application, checking it out, checking for bugs, etc etc.

serialize componentInstance only when the node has actually been
selected by the user and is going to be displayed in the righthand
panel. This saves us the performance cost of serializing the
componentInstance property of each node and is made possible by the new
request-response messaging system
- Fix up some styling
@mention-bot
Copy link

@clbond, thanks for your PR! By analyzing the annotation information on this pull request, we identified @sumitarora, @vanessayuenn and @winkerVSbecks to be potential reviewers

@clbond
Copy link
Contributor Author

clbond commented Aug 25, 2016

Two things I did not finish implementing:

  1. The Dependency tab in the component info window
  2. Searching for routes in the Router Tree (but search in Component Tree works and it would be simple to finish the router search using the same control, in fact there's already a placeholder that throws a 'not implemented' exception)

But I don't think these are big enough issues to stop the PR. I would like to get it merged because it's such a drastic departure that the merge conflicts are going to be unbelievably difficult to deal with. Basically every line that gets changed between now and when this PR gets merged is going to conflict.

export interface Property {
key: string;
value: string;
value;
}

export abstract class Description {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@clbond I don't think we are gaining anything from making this class abstract

@clbond clbond merged commit dfa410b into rangle:dev Aug 25, 2016
@xorgy
Copy link
Contributor

xorgy commented Aug 25, 2016

😬

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants