From 10f95ea9c9f2999b0df748b42190b06f824f6da8 Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Thu, 8 Aug 2019 01:22:42 +0200 Subject: [PATCH] Minor improvements. --- data-extraction/src/js/DataExtractorApi.ts | 6 ++++++ data-extraction/src/js/Extractors/index.ts | 2 +- example-project/src/index.ts | 10 ++++++---- extension/README.md | 2 +- extension/package.json | 4 +++- extension/src/DataSource/JsDebuggerSource.ts | 10 +++++++++- 6 files changed, 26 insertions(+), 8 deletions(-) diff --git a/data-extraction/src/js/DataExtractorApi.ts b/data-extraction/src/js/DataExtractorApi.ts index 225864f..8a3ed4b 100644 --- a/data-extraction/src/js/DataExtractorApi.ts +++ b/data-extraction/src/js/DataExtractorApi.ts @@ -24,6 +24,7 @@ export interface DataExtractorApi { registerExtractor( extractor: DataExtractor ): void; + registerExtractors(extractors: DataExtractor[]): void; getData( value: unknown, evalFn: (expression: string) => T, @@ -56,6 +57,11 @@ export function selfContainedInitDataExtractorApi(): boolean { registerExtractor(extractor) { obj[prefix + extractor.id] = extractor; }, + registerExtractors(extractors: DataExtractor[]) { + for (const e of extractors) { + this.registerExtractor(e); + } + }, getData(value, evalFn, preferredDataExtractorId) { const extractions = new Array>(); const collector: ExtractionCollector = { diff --git a/data-extraction/src/js/Extractors/index.ts b/data-extraction/src/js/Extractors/index.ts index ada96b8..1afe5a5 100644 --- a/data-extraction/src/js/Extractors/index.ts +++ b/data-extraction/src/js/Extractors/index.ts @@ -2,7 +2,7 @@ import { getDataExtractorApi } from "../DataExtractorApi"; import { TypeScriptAstDataExtractor } from "./TypeScriptDataExtractors"; import { AsIsDataExtractor } from "./AsIsDataExtractor"; -export * from "./TypeScriptDataExtractors"; +export { AsIsDataExtractor, TypeScriptAstDataExtractor }; export function registerAll() { const api = getDataExtractorApi(); diff --git a/example-project/src/index.ts b/example-project/src/index.ts index 5d05930..5c56566 100644 --- a/example-project/src/index.ts +++ b/example-project/src/index.ts @@ -1,20 +1,22 @@ +import * as ts from "typescript"; import { enableHotReload, registerUpdateReconciler, getReloadCount, hotClass, } from "@hediet/node-reload"; +enableHotReload(); + +/* import { registerAll, CommonDataTypes, } from "@hediet/debug-visualizer-data-extraction"; -enableHotReload(); -import * as ts from "typescript"; +registerAll(); +*/ registerUpdateReconciler(module); -registerAll(); - @hotClass(module) class Main { run() { diff --git a/extension/README.md b/extension/README.md index 92f4ac8..7d07361 100644 --- a/extension/README.md +++ b/extension/README.md @@ -4,7 +4,7 @@ Provides infrastructure to visualize values while debugging. -This extension is still in development. Some VS Code APIs are still missing for the best experience. +This extension is still in development. Also, for the best user experience some VS Code APIs are missing. ![](docs/demo.gif) diff --git a/extension/package.json b/extension/package.json index d1207bb..1baf2d3 100644 --- a/extension/package.json +++ b/extension/package.json @@ -23,7 +23,9 @@ ], "preview": true, "activationEvents": [ - "*" + "onCommand:vscode-debug-visualizer.new-visualizer", + "onDebug", + "onWebviewPanel:debugVisualizer" ], "main": "./out/extension.js", "contributes": { diff --git a/extension/src/DataSource/JsDebuggerSource.ts b/extension/src/DataSource/JsDebuggerSource.ts index cc20bbd..3a5ee70 100644 --- a/extension/src/DataSource/JsDebuggerSource.ts +++ b/extension/src/DataSource/JsDebuggerSource.ts @@ -12,6 +12,8 @@ import { DataExtractorId, ApiHasNotBeenInitializedCode, selfContainedInitDataExtractorApi, + TypeScriptAstDataExtractor, + AsIsDataExtractor, } from "@hediet/debug-visualizer-data-extraction"; import { DataExtractionState, @@ -144,7 +146,13 @@ class JsDebuggerSourceImplementation implements JsDataSource { session: vscode.DebugSession ): Promise { try { - const expression = `(${selfContainedInitDataExtractorApi.toString()})()`; + let expression = `(${selfContainedInitDataExtractorApi.toString()})();`; + + const es = [TypeScriptAstDataExtractor, AsIsDataExtractor].map( + e => `new (${e.toString()})()` + ); + expression += `(${selfContainedGetInitializedDataExtractorApi.toString()})()`; + expression += `.registerExtractors([${es.join(",")}])`; const reply = await session.customRequest("evaluate", { expression,