inversify / InversifyJS

A powerful and lightweight inversion of control container for JavaScript & Node.js apps powered by TypeScript.
http://inversify.io/
MIT License
10.98k stars 713 forks source link

inversify-devtools #215

Open remojansen opened 8 years ago

remojansen commented 8 years ago

Create a SPA with React the application will provide a GUI for kernel, bindings and resolution plan.

Visit inversify-devtools fro more info.

TODO

Log panel

remojansen commented 8 years ago

Block by #220

remojansen commented 8 years ago

A small sneak peek https://www.youtube.com/watch?v=BmeTffguFio

JoshuaKGoldberg commented 6 years ago

@remojansen is this issue complete? Can you provide details on what else needs to be done?

remojansen commented 6 years ago

It is far from being completed. The main technical challenge is that ideally, we want the Devtools UI to run in a process (in a chrome extension or in a Nodejs child process). Then we need to connect your app to the Devtools process so it can access the container instance and its bindings.

The problem is that memory cannot be shared. I started to think about serialization but it won't work because, for example, binding constraints are functions and they are not serializable.

I'm sure that we can find a solution but I just don't have enough time to think about this at the moment :cry: because I'm writing a book about TypeScript. The project is not dead I plan to get back to it when I have time but if you want to help that would be awesome.

The actual UI is almost done (it is a Redux app) but the dependencies are very outdated.

amir-arad commented 6 years ago

i'm checking out InversifyJS, and would have loved it if I had some dev-tools lib to plug into my application in dev setup, so that i can at least enjoy it in development. currently it seems that the devtools project has to catch up with the core lib. pitty.

polesskiy-dev commented 5 years ago

Any news or thoughts about implementation?

remojansen commented 5 years ago

This one is quite tricky to implement. The main problem is that you cannot share memory between de extension (Chrome) and the app. The extension needs to read the inversify container bindings but the only way is to serialize them. The problem is that the bindings contain functions and functions are not serializable. I have some ideas but not enough time to complete it right now :( Please feel free to work on it as a side project if you wish.