PojoViz

PojoViz - Plain Old JavaScript Object Visualization Build Status

%PojoViz is a tool to analyze the plain objects of a JavaScript object hierarchy by finding all the relationships found between the hierarchy entry point (in most libraries/frameworks a global variable) and the objects/functions linked to it.

Note: this webpage uses Shadow DOM, it’s suggested that you use a browser that supports this technology for a complete experience.

Why?

How many times did you find an awesome library/framework and wanted to see how it’s structured just for fun?

Features

How does it work?

In short %PojoViz receives as input a collection of JS objects and then:

Development

See development

FAQ

I want to see the structure of my library, how can I do it?

See an interactive tutorial on how to visualize your stuff

This project is not analyzing some stuff I have, why?

%PojoViz doesn’t analyze the AST of your code (which might be done by Esprima btw), it’s sort of an static analysis tool but it doesn’t analyze your code, it just traverses JS objects

Let’s say that you give %PojoViz the following constructor Point

// reachable
function Point(x, y) {
  // unreachable
  this.foo = function () {
  };
  
  // unreachable
  this.bar = {};
}

// reachable
Point.prototype.publicMethod = function () {
}

To make the method foo and the object bar reachable you’d need to create an instance of Point e.g. instance = new Point(1, 2) %PojoViz doesn’t know about how to instantiate stuff, however if you feed %Pojoviz Point AND instance you’re good to go :)

A huge description of this and other uses of %PojoViz can be found in the development section

Can I use this stuff within the node environment

Sure you can, in fact the Node Globals section makes a query to a node server hosted on heroku and the analysis is done on runtime! The output of %PojoViz is an “stringifiable” collection which is rendered by pojoviz-renderer, you can even analyze code of other programming languages with an adapter that outputs a similar collection and render it with pojoviz-renderer!

TODO list

Screenshots

Acknowledgments

Special thanks once again to @mrdoob the author of three.js and to @mbostock author of d3.

Technologies used in this project