From 71c3d6c3fda9b3c95562309ae9bbdca47f30f82e Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Sun, 29 Mar 2020 21:13:04 +0200 Subject: [PATCH] Updates contributing.md --- CONTRIBUTING.md | 11 +++++++++++ docs/exported/main/Main.png | Bin 14031 -> 19679 bytes docs/main.plantuml | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e8e6867..98bec34 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,6 +42,17 @@ Implements the UI and is hosted inside a webview in VS Code. Can be opened in a browser window. Uses websockets and JSON RPC to communicate with the extension. +### visualization + +Contains React components that visualize various JSON documents. +Also provides infrastructure for selecting the best visualization for a given JSON document. + +### visualization-playground + +A playground to test and play with the visualizations for the web. +Is hosted at [https://hediet.github.io/vscode-debug-visualizer/](https://hediet.github.io/vscode-debug-visualizer/). +Aims to have fast build times. + ### extension Creates the webview in VS Code, hosts a webserver and a websocket server. diff --git a/docs/exported/main/Main.png b/docs/exported/main/Main.png index 51b000a9c84e68c6e80bab43855933e16f4c2120..035055950b3282fd32ba4c47f1dae588bb3d1125 100644 GIT binary patch literal 19679 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 F{{S|r9L@j$ diff --git a/docs/main.plantuml b/docs/main.plantuml index 1d87b8a..dc90972 100644 --- a/docs/main.plantuml +++ b/docs/main.plantuml @@ -3,10 +3,16 @@ [data-extraction] [webview] [extension] +[visualization] +[visualization-playground] [webview] ..> [extension]: "Uses RPC contracts, connects using websockets" [extension] ..> [webview]: "Loads into a Webview in VS Code" +[webview] ..> [visualization]: "Uses React Components" + +[visualization-playground] ..> [visualization]: "Uses React Components" + [extension] ..> [data-extraction]: "Injects Runtime into JavaScript applications" [webview] ..> [data-extraction]: "Uses common types"