diff --git a/README.md b/README.md index b11600f..c9fd0d5 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,12 @@ You can get the extension in the [marketplace](https://marketplace.visualstudio. ## Dev Instructions +This project uses yarn workspaces. + - Clone the repository - Run `yarn` in the repository root - Run `yarn build` initially (or `yarn dev` for every project) -- Run `yarn dev` **inside** the project you are working on. +- Run `yarn dev` for the project you are working on. For the UI, `yarn dev` will start a webserver that you can access on port 8080. You can use VS Code do launch and debug the extension. diff --git a/docs/exported/main/Main.png b/docs/exported/main/Main.png new file mode 100644 index 0000000..0c1c34a Binary files /dev/null and b/docs/exported/main/Main.png differ diff --git a/docs/main.plantuml b/docs/main.plantuml new file mode 100644 index 0000000..6ba613e --- /dev/null +++ b/docs/main.plantuml @@ -0,0 +1,12 @@ +@startuml Main + +[data-extraction] +[debug-visualizer-webview] +[debug-visualizer] + +[debug-visualizer-webview] ..> [debug-visualizer]: "Uses RPC contracts, connects using websockets" +[debug-visualizer] ..> [debug-visualizer-webview]: "Opens Webview in VS Code" + +[debug-visualizer] ..> [data-extraction]: "Injects Runtime into JavaScript applications" + +@enduml \ No newline at end of file diff --git a/extension/package.json b/extension/package.json index 7c6d393..4d5ad3b 100644 --- a/extension/package.json +++ b/extension/package.json @@ -1,5 +1,6 @@ { "name": "debug-visualizer", + "private": true, "displayName": "Debug Visualizer", "description": "An extension that visualizes values while debugging.", "icon": "docs/logo.png", @@ -49,7 +50,7 @@ "pub": "vsce publish --yarn --baseImagesUrl https://github.com/hediet/vscode-debug-visualizer/raw/master/extension --baseContentUrl https://github.com/hediet/vscode-debug-visualizer/raw/master/extension", "vscode:prepublish": "yarn build", "build": "webpack --mode production", - "dev": "tsc -watch -p ./" + "dev": "shx rm -rf dist && tsc -watch -p ./" }, "dependencies": { "@hediet/std": "^0.6.0", @@ -74,6 +75,7 @@ "typescript": "^3.8.2", "webpack": "^4.41.6", "webpack-cli": "^3.3.11", - "ts-loader": "^6.2.1" + "ts-loader": "^6.2.1", + "shx": "^0.3.2" } } diff --git a/extension/src/ConnectionHandler.ts b/extension/src/ConnectionHandler.ts index 4256382..0f0cb5f 100644 --- a/extension/src/ConnectionHandler.ts +++ b/extension/src/ConnectionHandler.ts @@ -1,5 +1,5 @@ import { Disposable } from "@hediet/std/disposable"; -import { debugVisualizerUIContract } from "@hediet/debug-visualizer-vscode-shared"; +import { debugVisualizerUIContract } from "./contract"; import { ConsoleRpcLogger, RequestHandlingError } from "@hediet/typed-json-rpc"; import { EvaluationWatcher, DataSource } from "./DataSource/DataSource"; import { WebSocketStream } from "@hediet/typed-json-rpc-websocket"; diff --git a/extension/src/DataSource/DataSource.ts b/extension/src/DataSource/DataSource.ts index a8ea47f..be13202 100644 --- a/extension/src/DataSource/DataSource.ts +++ b/extension/src/DataSource/DataSource.ts @@ -1,8 +1,5 @@ import { DataExtractorId } from "@hediet/debug-visualizer-data-extraction"; -import { - DataExtractionState, - CompletionItem, -} from "@hediet/debug-visualizer-vscode-shared"; +import { DataExtractionState, CompletionItem } from "../contract"; export interface DataSource { createEvaluationWatcher( diff --git a/extension/src/DataSource/DataSourceImpl.ts b/extension/src/DataSource/DataSourceImpl.ts index e6292b6..7f27b98 100644 --- a/extension/src/DataSource/DataSourceImpl.ts +++ b/extension/src/DataSource/DataSourceImpl.ts @@ -6,10 +6,7 @@ import { import { observable, autorun, action } from "mobx"; import { Disposable } from "@hediet/std/disposable"; import { DataExtractorId } from "@hediet/debug-visualizer-data-extraction"; -import { - DataExtractionState, - CompletionItem, -} from "@hediet/debug-visualizer-vscode-shared"; +import { DataExtractionState, CompletionItem } from "../contract"; import { hotClass } from "@hediet/node-reload"; import { VsCodeDebuggerView } from "../VsCodeDebugger"; import { DataExtractionProviderFactory } from "./DataExtractionProvider/DataExtractionProvider"; diff --git a/extension/src/Server.ts b/extension/src/Server.ts index a7bb61c..0136b49 100644 --- a/extension/src/Server.ts +++ b/extension/src/Server.ts @@ -1,7 +1,6 @@ import { WebSocketStream } from "@hediet/typed-json-rpc-websocket"; import { AddressInfo } from "net"; import WebSocket = require("ws"); -import { join } from "path"; import { ConnectionHandler } from "./ConnectionHandler"; import { Sources } from "./DataSource"; import * as express from "express"; @@ -9,6 +8,7 @@ import * as http from "http"; import * as serveStatic from "serve-static"; import { Config } from "./Config"; import cryptoRandomString = require("crypto-random-string"); +import { distPath } from "debug-visualizer-webview"; export class Server { private server: http.Server; @@ -16,11 +16,17 @@ export class Server { constructor(sources: Sources, config: Config) { const app = express(); - const distPath = join(__dirname, "../ui/dist"); + app.use(serveStatic(distPath)); this.server = app.listen(); + console.log( + `Serving "${distPath}" on port ${ + (this.server.address() as AddressInfo).port + }` + ); + const wss = new WebSocket.Server({ server: this.server }); wss.on("connection", ws => { const stream = new WebSocketStream(ws); diff --git a/extension/src/VsCodeDebugger.ts b/extension/src/VsCodeDebugger.ts index 31fc397..97f0895 100644 --- a/extension/src/VsCodeDebugger.ts +++ b/extension/src/VsCodeDebugger.ts @@ -1,7 +1,7 @@ import { Disposable } from "@hediet/std/disposable"; import { debug, DebugSession } from "vscode"; import { EventEmitter } from "@hediet/std/events"; -import { CompletionItem } from "@hediet/debug-visualizer-vscode-shared"; +import { CompletionItem } from "./contract"; import { observable, runInAction } from "mobx"; export class VsCodeDebugger { diff --git a/shared/src/contract.ts b/extension/src/contract.ts similarity index 100% rename from shared/src/contract.ts rename to extension/src/contract.ts diff --git a/extension/src/types.d.ts b/extension/src/types.d.ts index 33a08b8..ef361e7 100644 --- a/extension/src/types.d.ts +++ b/extension/src/types.d.ts @@ -4,3 +4,7 @@ declare namespace NodeJS { USE_DEV_UI?: "true"; } } + +declare module "debug-visualizer-webview" { + export const distPath: string; +} diff --git a/extension/webpack.config.ts b/extension/webpack.config.ts index 42f2beb..0881eb4 100644 --- a/extension/webpack.config.ts +++ b/extension/webpack.config.ts @@ -2,6 +2,7 @@ import * as webpack from "webpack"; import path = require("path"); import { CleanWebpackPlugin } from "clean-webpack-plugin"; import CopyPlugin = require("copy-webpack-plugin"); +import { readFileSync } from "fs"; const r = (file: string) => path.resolve(__dirname, file); @@ -19,6 +20,7 @@ module.exports = { vscode: "commonjs vscode", "@hediet/debug-visualizer-data-extraction": "@hediet/debug-visualizer-data-extraction", + "debug-visualizer-webview": "debug-visualizer-webview", }, resolve: { extensions: [".ts", ".js"], @@ -41,14 +43,22 @@ module.exports = { }, plugins: [ new CleanWebpackPlugin(), - new CopyPlugin([ - { - from: r("../data-extraction/"), - to: r( - "./dist/node_modules/@hediet/debug-visualizer-data-extraction/" - ), - ignore: ["**/node_modules/**/*"], - }, - ]), + includeDependency(r("../data-extraction/")), + includeDependency(r("../webview/")), ], } as webpack.Configuration; + +function includeDependency(location: string) { + const content = readFileSync(path.join(location, "package.json"), { + encoding: "utf8", + }); + const pkgName = JSON.parse(content).name; + + return new CopyPlugin([ + { + from: location, + to: r(`./dist/node_modules/${pkgName}`), + ignore: ["**/node_modules/**/*"], + }, + ]); +} diff --git a/package.json b/package.json index dc69cdd..0afa6a6 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,14 @@ { "private": true, "workspaces": [ - "./shared", "./data-extraction", "./extension", - "./extension/ui" + "./webview" ], "scripts": { - "build": "yarn build-data-extraction && yarn build-shared && yarn build-extension && yarn build-ui", + "build": "yarn build-data-extraction && yarn build-extension && yarn build-ui", "build-data-extraction": "yarn workspace @hediet/debug-visualizer-data-extraction build", - "build-shared": "yarn workspace @hediet/debug-visualizer-vscode-shared build", "build-extension": "yarn workspace debug-visualizer build", - "build-ui": "yarn workspace debug-visualizer-ui build" + "build-ui": "yarn workspace debug-visualizer-webview build" } } diff --git a/shared/package.json b/shared/package.json deleted file mode 100644 index cfc6e49..0000000 --- a/shared/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@hediet/debug-visualizer-vscode-shared", - "private": true, - "version": "1.0.0", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "author": { - "name": "Henning Dieterichs", - "email": "henning.dieterichs@live.de" - }, - "license": "MIT", - "files": [ - "dist", - "src" - ], - "scripts": { - "dev": "tsc --watch", - "build": "tsc" - }, - "dependencies": { - "@hediet/std": "^0.6.0", - "@hediet/typed-json-rpc": "^0.7.7" - } -} diff --git a/shared/src/index.ts b/shared/src/index.ts deleted file mode 100644 index 52ef7a8..0000000 --- a/shared/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./contract"; diff --git a/shared/tsconfig.json b/shared/tsconfig.json deleted file mode 100644 index 02e20c7..0000000 --- a/shared/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "strict": true, - "outDir": "dist", - "skipLibCheck": true, - "rootDir": "./src", - "resolveJsonModule": true, - "declaration": true, - "declarationMap": true, - "newLine": "LF", - "sourceMap": true - }, - "include": ["./src/**/*"] -} diff --git a/webview/index.js b/webview/index.js new file mode 100644 index 0000000..82a7dea --- /dev/null +++ b/webview/index.js @@ -0,0 +1,5 @@ +// This is the entry point when this package is used as library from the extension. +// This package MUST NOT be bundled. +const path = require("path"); + +module.exports.distPath = path.join(__dirname, "dist"); diff --git a/extension/ui/package.json b/webview/package.json similarity index 96% rename from extension/ui/package.json rename to webview/package.json index a40f6e6..f1ac8c8 100644 --- a/extension/ui/package.json +++ b/webview/package.json @@ -1,11 +1,12 @@ { - "name": "debug-visualizer-ui", + "name": "debug-visualizer-webview", "version": "0.0.1", "scripts": { "dev": "webpack-dev-server --hot", "dev-playground": "webpack-dev-server --hot --port 8090 --playground", "build": "webpack" }, + "main": "./index.js", "dependencies": { "@blueprintjs/core": "^3.23.1", "@hediet/std": "^0.6.0", diff --git a/extension/ui/src/Components/ExpressionInput.tsx b/webview/src/components/ExpressionInput.tsx similarity index 98% rename from extension/ui/src/Components/ExpressionInput.tsx rename to webview/src/components/ExpressionInput.tsx index 53420ce..955b399 100644 --- a/extension/ui/src/Components/ExpressionInput.tsx +++ b/webview/src/components/ExpressionInput.tsx @@ -1,5 +1,5 @@ import React = require("react"); -import { Model } from "../Model/Model"; +import { Model } from "../model/Model"; import { observer, disposeOnUnmount } from "mobx-react"; import { observable, action, autorun } from "mobx"; import * as monaco from "monaco-editor"; diff --git a/extension/ui/src/Components/GUI.tsx b/webview/src/components/GUI.tsx similarity index 98% rename from extension/ui/src/Components/GUI.tsx rename to webview/src/components/GUI.tsx index af71e3a..c761ada 100644 --- a/extension/ui/src/Components/GUI.tsx +++ b/webview/src/components/GUI.tsx @@ -2,7 +2,7 @@ import React = require("react"); import { Button, Spinner } from "@blueprintjs/core"; import { observable, action } from "mobx"; import { observer } from "mobx-react"; -import { Model } from "../Model/Model"; +import { Model } from "../model/Model"; import { ExpressionInput } from "./ExpressionInput"; import { Visualizer } from "./Visualizer"; import classnames = require("classnames"); diff --git a/extension/ui/src/Components/NoData.tsx b/webview/src/components/NoData.tsx similarity index 100% rename from extension/ui/src/Components/NoData.tsx rename to webview/src/components/NoData.tsx diff --git a/extension/ui/src/Components/Point.ts b/webview/src/components/Point.ts similarity index 100% rename from extension/ui/src/Components/Point.ts rename to webview/src/components/Point.ts diff --git a/extension/ui/src/Components/SvgElements.tsx b/webview/src/components/SvgElements.tsx similarity index 100% rename from extension/ui/src/Components/SvgElements.tsx rename to webview/src/components/SvgElements.tsx diff --git a/extension/ui/src/Components/Visualizer.tsx b/webview/src/components/Visualizer.tsx similarity index 96% rename from extension/ui/src/Components/Visualizer.tsx rename to webview/src/components/Visualizer.tsx index 5b5ce89..c52a7ff 100644 --- a/extension/ui/src/Components/Visualizer.tsx +++ b/webview/src/components/Visualizer.tsx @@ -1,5 +1,5 @@ import React = require("react"); -import { Model } from "../Model/Model"; +import { Model } from "../model/Model"; import { observer } from "mobx-react"; import { NoData } from "./NoData"; diff --git a/extension/ui/src/Components/VisualizerHeaderDetails.tsx b/webview/src/components/VisualizerHeaderDetails.tsx similarity index 97% rename from extension/ui/src/Components/VisualizerHeaderDetails.tsx rename to webview/src/components/VisualizerHeaderDetails.tsx index e8325bc..28dfcc4 100644 --- a/extension/ui/src/Components/VisualizerHeaderDetails.tsx +++ b/webview/src/components/VisualizerHeaderDetails.tsx @@ -3,8 +3,8 @@ import { Popover } from "@blueprintjs/core"; import { DataExtractorInfo } from "@hediet/debug-visualizer-data-extraction"; import { computed } from "mobx"; import { observer } from "mobx-react"; -import { Model } from "../Model/Model"; -import { VisualizationId } from "../Visualizers/Visualizer"; +import { Model } from "../model/Model"; +import { VisualizationId } from "../visualizers/Visualizer"; @observer export class VisualizerHeaderDetails extends React.Component<{ model: Model }> { diff --git a/extension/ui/src/index.tsx b/webview/src/index.tsx similarity index 77% rename from extension/ui/src/index.tsx rename to webview/src/index.tsx index ef1fa8f..2892db2 100644 --- a/extension/ui/src/index.tsx +++ b/webview/src/index.tsx @@ -1,8 +1,8 @@ import * as React from "react"; import * as ReactDOM from "react-dom"; import "./style.scss"; -import { Model } from "./Model/Model"; -import Components = require("./Components/GUI"); +import { Model } from "./model/Model"; +import Components = require("./components/GUI"); const model = new Model(); @@ -15,7 +15,7 @@ if (model.runningMode !== "webView") { } function render(target: HTMLDivElement) { - const c = require("./Components/GUI") as typeof Components; + const c = require("./components/GUI") as typeof Components; ReactDOM.render(, target); } @@ -31,7 +31,7 @@ declare var module: { declare var require: (name: string) => any; if (module.hot) { - module.hot.accept("./Components/GUI", () => { + module.hot.accept("./components/GUI", () => { render(target); }); } diff --git a/extension/ui/src/Model/Model.ts b/webview/src/model/Model.ts similarity index 96% rename from extension/ui/src/Model/Model.ts rename to webview/src/model/Model.ts index ee83890..dec9a63 100644 --- a/extension/ui/src/Model/Model.ts +++ b/webview/src/model/Model.ts @@ -1,13 +1,13 @@ import { debugVisualizerUIContract, DataExtractionState, -} from "@hediet/debug-visualizer-vscode-shared"; +} from "debug-visualizer/src/contract"; import { WebSocketStream } from "@hediet/typed-json-rpc-websocket"; import { ConsoleRpcLogger } from "@hediet/typed-json-rpc"; import { observable, action, computed, when, autorun } from "mobx"; import { DataExtractorId } from "@hediet/debug-visualizer-data-extraction"; -import { Visualization, VisualizationId } from "../Visualizers/Visualizer"; -import { knownVisualizations } from "../Visualizers"; +import { Visualization, VisualizationId } from "../visualizers/Visualizer"; +import { knownVisualizations } from "../visualizers"; import { getApi as getVsCodeApi } from "./VsCodeApi"; import { MonacoBridge } from "./MonacoBridge"; import { Disposable } from "@hediet/std/disposable"; diff --git a/extension/ui/src/Model/MonacoBridge.ts b/webview/src/model/MonacoBridge.ts similarity index 100% rename from extension/ui/src/Model/MonacoBridge.ts rename to webview/src/model/MonacoBridge.ts diff --git a/extension/ui/src/Model/VsCodeApi.ts b/webview/src/model/VsCodeApi.ts similarity index 100% rename from extension/ui/src/Model/VsCodeApi.ts rename to webview/src/model/VsCodeApi.ts diff --git a/extension/ui/src/Model/lib.es5.d.ts.txt b/webview/src/model/lib.es5.d.ts.txt similarity index 100% rename from extension/ui/src/Model/lib.es5.d.ts.txt rename to webview/src/model/lib.es5.d.ts.txt diff --git a/extension/ui/src/playground.tsx b/webview/src/playground.tsx similarity index 100% rename from extension/ui/src/playground.tsx rename to webview/src/playground.tsx diff --git a/extension/ui/src/playground/index.tsx b/webview/src/playground/index.tsx similarity index 94% rename from extension/ui/src/playground/index.tsx rename to webview/src/playground/index.tsx index c6304de..837c3cb 100644 --- a/extension/ui/src/playground/index.tsx +++ b/webview/src/playground/index.tsx @@ -1,6 +1,6 @@ import React = require("react"); import "../style.scss"; -import { DecoratedGridComponent } from "../Visualizers/GridVisualizer"; +import { DecoratedGridComponent } from "../visualizers/GridVisualizer"; import { observable } from "mobx"; import { observer } from "mobx-react"; diff --git a/extension/ui/src/style.scss b/webview/src/style.scss similarity index 100% rename from extension/ui/src/style.scss rename to webview/src/style.scss diff --git a/extension/ui/src/Visualizers/AstVisualizer.tsx b/webview/src/visualizers/AstVisualizer.tsx similarity index 98% rename from extension/ui/src/Visualizers/AstVisualizer.tsx rename to webview/src/visualizers/AstVisualizer.tsx index e2b1b52..68eb11c 100644 --- a/extension/ui/src/Visualizers/AstVisualizer.tsx +++ b/webview/src/visualizers/AstVisualizer.tsx @@ -8,13 +8,13 @@ import { isCommonDataType, CommonDataTypes, } from "@hediet/debug-visualizer-data-extraction"; -import { createTreeViewModelFromTreeNodeData } from "./TreeVisualizer/Visualizer"; +import { createTreeViewModelFromTreeNodeData } from "./TreeVisualizer/TreeVisualizer"; import { TreeWithPathView, TreeViewModel } from "./TreeVisualizer/Views"; import React = require("react"); import { observer, disposeOnUnmount } from "mobx-react"; import { observable, autorun, trace } from "mobx"; import * as monaco from "monaco-editor"; -import { getLanguageId } from "./TextVisualizer/MonacoTextVisualizer"; +import { getLanguageId } from "./text-visualizers/MonacoTextVisualizer"; import LineColumn = require("line-column"); export class AstVisualizer extends VisualizationProvider { diff --git a/extension/ui/src/Visualizers/GridVisualizer.tsx b/webview/src/visualizers/GridVisualizer.tsx similarity index 100% rename from extension/ui/src/Visualizers/GridVisualizer.tsx rename to webview/src/visualizers/GridVisualizer.tsx diff --git a/extension/ui/src/Visualizers/PlotlyVisualizer.tsx b/webview/src/visualizers/PlotlyVisualizer.tsx similarity index 100% rename from extension/ui/src/Visualizers/PlotlyVisualizer.tsx rename to webview/src/visualizers/PlotlyVisualizer.tsx diff --git a/extension/ui/src/Visualizers/SvgVisualizer.tsx b/webview/src/visualizers/SvgVisualizer.tsx similarity index 100% rename from extension/ui/src/Visualizers/SvgVisualizer.tsx rename to webview/src/visualizers/SvgVisualizer.tsx diff --git a/extension/ui/src/Visualizers/TreeVisualizer/Visualizer.tsx b/webview/src/visualizers/TreeVisualizer/TreeVisualizer.tsx similarity index 100% rename from extension/ui/src/Visualizers/TreeVisualizer/Visualizer.tsx rename to webview/src/visualizers/TreeVisualizer/TreeVisualizer.tsx index ccd6a7e..42726de 100644 --- a/extension/ui/src/Visualizers/TreeVisualizer/Visualizer.tsx +++ b/webview/src/visualizers/TreeVisualizer/TreeVisualizer.tsx @@ -16,6 +16,25 @@ import { } from "../Visualizer"; import React = require("react"); +export class TreeVisualizer extends VisualizationProvider { + getVisualizations( + data: ExtractedData, + collector: VisualizationCollector + ): void { + if (isCommonDataType(data, { tree: true })) { + collector.addVisualization({ + id: asVisualizationId("tree"), + name: "Tree", + priority: 100, + render() { + const m = createTreeViewModelFromTreeNodeData(data.root); + return ; + }, + }); + } + } +} + export function createTreeViewModelFromTreeNodeData( root: TreeNode ): TreeViewModel { @@ -46,22 +65,3 @@ export function createTreeViewModelFromTreeNodeData( return model; } } - -export class TreeVisualizer extends VisualizationProvider { - getVisualizations( - data: ExtractedData, - collector: VisualizationCollector - ): void { - if (isCommonDataType(data, { tree: true })) { - collector.addVisualization({ - id: asVisualizationId("tree"), - name: "Tree", - priority: 100, - render() { - const m = createTreeViewModelFromTreeNodeData(data.root); - return ; - }, - }); - } - } -} diff --git a/extension/ui/src/Visualizers/TreeVisualizer/Views.tsx b/webview/src/visualizers/TreeVisualizer/Views.tsx similarity index 99% rename from extension/ui/src/Visualizers/TreeVisualizer/Views.tsx rename to webview/src/visualizers/TreeVisualizer/Views.tsx index 697413a..b2e6247 100644 --- a/extension/ui/src/Visualizers/TreeVisualizer/Views.tsx +++ b/webview/src/visualizers/TreeVisualizer/Views.tsx @@ -2,8 +2,8 @@ import { observer, disposeOnUnmount } from "mobx-react"; import { observable, autorun, computed, action, runInAction } from "mobx"; import React = require("react"); import classNames = require("classnames"); -import { Rectangle, Point } from "../../Components/Point"; -import { SvgLine } from "../../Components/SvgElements"; +import { Rectangle, Point } from "../../components/Point"; +import { SvgLine } from "../../components/SvgElements"; import "./style.scss"; export class TreeViewModel { diff --git a/extension/ui/src/Visualizers/TreeVisualizer/style.scss b/webview/src/visualizers/TreeVisualizer/style.scss similarity index 100% rename from extension/ui/src/Visualizers/TreeVisualizer/style.scss rename to webview/src/visualizers/TreeVisualizer/style.scss diff --git a/extension/ui/src/Visualizers/Visualizer.ts b/webview/src/visualizers/Visualizer.ts similarity index 100% rename from extension/ui/src/Visualizers/Visualizer.ts rename to webview/src/visualizers/Visualizer.ts diff --git a/extension/ui/src/Visualizers/GraphVisualizer/GraphvizDotVisualizer.tsx b/webview/src/visualizers/graph-visualizers/GraphvizDotVisualizer.tsx similarity index 100% rename from extension/ui/src/Visualizers/GraphVisualizer/GraphvizDotVisualizer.tsx rename to webview/src/visualizers/graph-visualizers/GraphvizDotVisualizer.tsx diff --git a/extension/ui/src/Visualizers/GraphVisualizer/GraphvizGraphVisualizer.tsx b/webview/src/visualizers/graph-visualizers/GraphvizGraphVisualizer.tsx similarity index 100% rename from extension/ui/src/Visualizers/GraphVisualizer/GraphvizGraphVisualizer.tsx rename to webview/src/visualizers/graph-visualizers/GraphvizGraphVisualizer.tsx diff --git a/extension/ui/src/Visualizers/GraphVisualizer/VisJsGraphVisualizer.tsx b/webview/src/visualizers/graph-visualizers/VisJsGraphVisualizer.tsx similarity index 100% rename from extension/ui/src/Visualizers/GraphVisualizer/VisJsGraphVisualizer.tsx rename to webview/src/visualizers/graph-visualizers/VisJsGraphVisualizer.tsx diff --git a/extension/ui/src/Visualizers/index.ts b/webview/src/visualizers/index.ts similarity index 57% rename from extension/ui/src/Visualizers/index.ts rename to webview/src/visualizers/index.ts index 8e34328..8df895f 100644 --- a/extension/ui/src/Visualizers/index.ts +++ b/webview/src/visualizers/index.ts @@ -1,13 +1,13 @@ import "./style.scss"; import { ComposedVisualizationProvider } from "./Visualizer"; -import { TreeVisualizer } from "./TreeVisualizer/Visualizer"; -import { GraphvizGraphVisualizer } from "./GraphVisualizer/GraphvizGraphVisualizer"; +import { TreeVisualizer } from "./TreeVisualizer/TreeVisualizer"; +import { GraphvizGraphVisualizer } from "./graph-visualizers/GraphvizGraphVisualizer"; import { SvgVisualizer } from "./SvgVisualizer"; -import { GraphvizDotVisualizer } from "./GraphVisualizer/GraphvizDotVisualizer"; -import { TextVisualizer } from "./TextVisualizer/TextVisualizer"; -import { MonacoTextVisualizer } from "./TextVisualizer/MonacoTextVisualizer"; +import { GraphvizDotVisualizer } from "./graph-visualizers/GraphvizDotVisualizer"; +import { TextVisualizer } from "./text-visualizers/TextVisualizer"; +import { MonacoTextVisualizer } from "./text-visualizers/MonacoTextVisualizer"; import { AstVisualizer } from "./AstVisualizer"; -import { VisJsGraphVisualizer } from "./GraphVisualizer/VisJsGraphVisualizer"; +import { VisJsGraphVisualizer } from "./graph-visualizers/VisJsGraphVisualizer"; import { PlotlyVisualizer } from "./PlotlyVisualizer"; import { GridVisualizer } from "./GridVisualizer"; diff --git a/extension/ui/src/Visualizers/style.scss b/webview/src/visualizers/style.scss similarity index 100% rename from extension/ui/src/Visualizers/style.scss rename to webview/src/visualizers/style.scss diff --git a/extension/ui/src/Visualizers/TextVisualizer/MonacoTextVisualizer.tsx b/webview/src/visualizers/text-visualizers/MonacoTextVisualizer.tsx similarity index 100% rename from extension/ui/src/Visualizers/TextVisualizer/MonacoTextVisualizer.tsx rename to webview/src/visualizers/text-visualizers/MonacoTextVisualizer.tsx diff --git a/extension/ui/src/Visualizers/TextVisualizer/TextVisualizer.tsx b/webview/src/visualizers/text-visualizers/TextVisualizer.tsx similarity index 100% rename from extension/ui/src/Visualizers/TextVisualizer/TextVisualizer.tsx rename to webview/src/visualizers/text-visualizers/TextVisualizer.tsx diff --git a/extension/ui/src/Visualizers/types.d.ts b/webview/src/visualizers/types.d.ts similarity index 100% rename from extension/ui/src/Visualizers/types.d.ts rename to webview/src/visualizers/types.d.ts diff --git a/extension/ui/src/vscode-dark.scss b/webview/src/vscode-dark.scss similarity index 100% rename from extension/ui/src/vscode-dark.scss rename to webview/src/vscode-dark.scss diff --git a/extension/ui/src/vscode-light.scss b/webview/src/vscode-light.scss similarity index 100% rename from extension/ui/src/vscode-light.scss rename to webview/src/vscode-light.scss diff --git a/extension/ui/tsconfig.json b/webview/tsconfig.json similarity index 100% rename from extension/ui/tsconfig.json rename to webview/tsconfig.json diff --git a/extension/ui/webpack.config.js b/webview/webpack.config.js similarity index 100% rename from extension/ui/webpack.config.js rename to webview/webpack.config.js diff --git a/extension/ui/webpack.config.ts b/webview/webpack.config.ts similarity index 89% rename from extension/ui/webpack.config.ts rename to webview/webpack.config.ts index 986e780..6393e27 100644 --- a/extension/ui/webpack.config.ts +++ b/webview/webpack.config.ts @@ -47,7 +47,12 @@ module.exports = { new CleanWebpackPlugin(), ]; if (mode === "default") { - plugins.push(new MonacoWebpackPlugin()); + plugins.push( + new MonacoWebpackPlugin({ + // Add more languages here once webworker issues are solved. + languages: ["typescript"], + }) + ); } return plugins; })(), diff --git a/extension/ui/yarn.lock b/webview/yarn.lock similarity index 100% rename from extension/ui/yarn.lock rename to webview/yarn.lock diff --git a/yarn.lock b/yarn.lock index 5b9f64a..3f344f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2906,6 +2906,11 @@ es6-iterator@^2.0.3, es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" +es6-object-assign@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + es6-promise@^3.0.2: version "3.3.1" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" @@ -4659,7 +4664,7 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -interpret@1.2.0: +interpret@1.2.0, interpret@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== @@ -7292,6 +7297,13 @@ readdirp@^3.1.1: dependencies: picomatch "^2.0.4" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -7581,7 +7593,7 @@ resolve@^0.6.1: resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY= -resolve@^1.0.0, resolve@^1.1.5: +resolve@^1.0.0, resolve@^1.1.5, resolve@^1.1.6: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== @@ -7979,6 +7991,24 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shelljs@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" + integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +shx@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.2.tgz#40501ce14eb5e0cbcac7ddbd4b325563aad8c123" + integrity sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA== + dependencies: + es6-object-assign "^1.0.3" + minimist "^1.2.0" + shelljs "^0.8.1" + signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"