From 6a71c23fdb5724df3a33a23abb65b414a194a21d Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Tue, 24 Mar 2020 15:37:31 +0100 Subject: [PATCH] Renames DataSource to EvaluationWatchService and DataExtractionProvider to Evaluator. --- extension/src/ClientConnection.ts | 7 ++++-- .../ComposedDataExtractionProviderFactory.ts | 22 ------------------- .../DataExtractionProvider/index.ts | 6 ----- extension/src/DataSource/index.ts | 1 - .../ComposedEvaluationEngine.ts | 16 ++++++++++++++ .../ConfiguredEvaluationEngine.ts} | 18 +++++---------- .../EvaluationEngine/EvaluationEngine.ts} | 12 +++++----- .../GenericEvaluationEngine.ts} | 21 ++++++++---------- .../EvaluationEngine/JsEvaluationEngine.ts} | 21 ++++++++---------- .../EvaluationEngine/index.ts | 6 +++++ ...EvaluationResultFromGenericDebugAdapter.ts | 0 .../EvaluationWatchService.ts} | 2 +- .../EvaluationWatchServiceImpl.ts} | 14 ++++++------ extension/src/EvaluationWatchService/index.ts | 2 ++ extension/src/Server.ts | 4 ++-- extension/src/extension.ts | 22 +++++++++---------- webview/package.json | 1 - 17 files changed, 79 insertions(+), 96 deletions(-) delete mode 100644 extension/src/DataSource/DataExtractionProvider/ComposedDataExtractionProviderFactory.ts delete mode 100644 extension/src/DataSource/DataExtractionProvider/index.ts delete mode 100644 extension/src/DataSource/index.ts create mode 100644 extension/src/EvaluationWatchService/EvaluationEngine/ComposedEvaluationEngine.ts rename extension/src/{DataSource/DataExtractionProvider/ConfiguredDataExtractionProviderFactory.ts => EvaluationWatchService/EvaluationEngine/ConfiguredEvaluationEngine.ts} (63%) rename extension/src/{DataSource/DataExtractionProvider/DataExtractionProvider.ts => EvaluationWatchService/EvaluationEngine/EvaluationEngine.ts} (62%) rename extension/src/{DataSource/DataExtractionProvider/GenericDataExtractionProviderFactory.ts => EvaluationWatchService/EvaluationEngine/GenericEvaluationEngine.ts} (76%) rename extension/src/{DataSource/DataExtractionProvider/JsDataExtractionProviderFactory.ts => EvaluationWatchService/EvaluationEngine/JsEvaluationEngine.ts} (86%) create mode 100644 extension/src/EvaluationWatchService/EvaluationEngine/index.ts rename extension/src/{DataSource/DataExtractionProvider => EvaluationWatchService/EvaluationEngine}/parseEvaluationResultFromGenericDebugAdapter.ts (100%) rename extension/src/{DataSource/DataSource.ts => EvaluationWatchService/EvaluationWatchService.ts} (94%) rename extension/src/{DataSource/DataSourceImpl.ts => EvaluationWatchService/EvaluationWatchServiceImpl.ts} (89%) create mode 100644 extension/src/EvaluationWatchService/index.ts diff --git a/extension/src/ClientConnection.ts b/extension/src/ClientConnection.ts index c16972f..dad0618 100644 --- a/extension/src/ClientConnection.ts +++ b/extension/src/ClientConnection.ts @@ -1,7 +1,10 @@ import { Disposable } from "@hediet/std/disposable"; import { debugVisualizerUIContract } from "./contract"; import { ConsoleRpcLogger, RequestHandlingError } from "@hediet/typed-json-rpc"; -import { EvaluationWatcher, DataSource } from "./DataSource/DataSource"; +import { + EvaluationWatcher, + EvaluationWatchService, +} from "./EvaluationWatchService"; import { WebSocketStream } from "@hediet/typed-json-rpc-websocket"; import { observable, autorun } from "mobx"; import { Server } from "./Server"; @@ -17,7 +20,7 @@ export class ClientConnection { private readonly client: typeof debugVisualizerUIContract["TClientInterface"]; constructor( - dataSource: DataSource, + dataSource: EvaluationWatchService, stream: WebSocketStream, server: Server, config: Config, diff --git a/extension/src/DataSource/DataExtractionProvider/ComposedDataExtractionProviderFactory.ts b/extension/src/DataSource/DataExtractionProvider/ComposedDataExtractionProviderFactory.ts deleted file mode 100644 index ae3a563..0000000 --- a/extension/src/DataSource/DataExtractionProvider/ComposedDataExtractionProviderFactory.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { - DataExtractionProviderFactory, - DataExtractionProvider, -} from "./DataExtractionProvider"; -import { VsCodeDebugSession } from "../../VsCodeDebugger"; - -export class ComposedDataExtractionProviderFactory - implements DataExtractionProviderFactory { - constructor(public readonly factories: DataExtractionProviderFactory[]) {} - - createDataExtractionProvider( - session: VsCodeDebugSession - ): DataExtractionProvider | undefined { - for (const f of this.factories) { - const provider = f.createDataExtractionProvider(session); - if (provider) { - return provider; - } - } - return undefined; - } -} diff --git a/extension/src/DataSource/DataExtractionProvider/index.ts b/extension/src/DataSource/DataExtractionProvider/index.ts deleted file mode 100644 index c9de44d..0000000 --- a/extension/src/DataSource/DataExtractionProvider/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from "./DataExtractionProvider"; - -export { ComposedDataExtractionProviderFactory } from "./ComposedDataExtractionProviderFactory"; -export { JsDataExtractionProviderFactory } from "./JsDataExtractionProviderFactory"; -export { GenericDataExtractionProviderFactory } from "./GenericDataExtractionProviderFactory"; -export { ConfiguredDataExtractionProviderFactory } from "./ConfiguredDataExtractionProviderFactory"; diff --git a/extension/src/DataSource/index.ts b/extension/src/DataSource/index.ts deleted file mode 100644 index 15e8db1..0000000 --- a/extension/src/DataSource/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./DataSourceImpl"; diff --git a/extension/src/EvaluationWatchService/EvaluationEngine/ComposedEvaluationEngine.ts b/extension/src/EvaluationWatchService/EvaluationEngine/ComposedEvaluationEngine.ts new file mode 100644 index 0000000..61ca35d --- /dev/null +++ b/extension/src/EvaluationWatchService/EvaluationEngine/ComposedEvaluationEngine.ts @@ -0,0 +1,16 @@ +import { EvaluationEngine, Evaluator } from "./EvaluationEngine"; +import { VsCodeDebugSession } from "../../VsCodeDebugger"; + +export class ComposedEvaluationEngine implements EvaluationEngine { + constructor(public readonly engines: EvaluationEngine[]) {} + + createEvaluator(session: VsCodeDebugSession): Evaluator | undefined { + for (const f of this.engines) { + const evaluator = f.createEvaluator(session); + if (evaluator) { + return evaluator; + } + } + return undefined; + } +} diff --git a/extension/src/DataSource/DataExtractionProvider/ConfiguredDataExtractionProviderFactory.ts b/extension/src/EvaluationWatchService/EvaluationEngine/ConfiguredEvaluationEngine.ts similarity index 63% rename from extension/src/DataSource/DataExtractionProvider/ConfiguredDataExtractionProviderFactory.ts rename to extension/src/EvaluationWatchService/EvaluationEngine/ConfiguredEvaluationEngine.ts index a385316..dc09ea5 100644 --- a/extension/src/DataSource/DataExtractionProvider/ConfiguredDataExtractionProviderFactory.ts +++ b/extension/src/EvaluationWatchService/EvaluationEngine/ConfiguredEvaluationEngine.ts @@ -1,32 +1,26 @@ import { DataExtractorId } from "@hediet/debug-visualizer-data-extraction"; import { VsCodeDebugSession } from "../../VsCodeDebugger"; -import { - DataExtractionProviderFactory, - DataExtractionProvider, -} from "./DataExtractionProvider"; +import { EvaluationEngine, Evaluator } from "./EvaluationEngine"; import { Config, DebugAdapterConfig } from "../../Config"; -import { GenericDataExtractionProvider } from "./GenericDataExtractionProviderFactory"; +import { GenericEvaluator } from "./GenericEvaluationEngine"; import { registerUpdateReconciler, hotClass } from "@hediet/node-reload"; registerUpdateReconciler(module); @hotClass(module) -export class ConfiguredDataExtractionProviderFactory - implements DataExtractionProviderFactory { +export class ConfiguredEvaluationEngine implements EvaluationEngine { constructor(private readonly config: Config) {} - createDataExtractionProvider( - session: VsCodeDebugSession - ): DataExtractionProvider | undefined { + createEvaluator(session: VsCodeDebugSession): Evaluator | undefined { const config = this.config.getDebugAdapterConfig(session.session.type); if (!config) { return undefined; } - return new ConfiguredDataExtractionProvider(session, config); + return new ConfiguredEvaluator(session, config); } } -class ConfiguredDataExtractionProvider extends GenericDataExtractionProvider { +class ConfiguredEvaluator extends GenericEvaluator { constructor( session: VsCodeDebugSession, private readonly config: DebugAdapterConfig diff --git a/extension/src/DataSource/DataExtractionProvider/DataExtractionProvider.ts b/extension/src/EvaluationWatchService/EvaluationEngine/EvaluationEngine.ts similarity index 62% rename from extension/src/DataSource/DataExtractionProvider/DataExtractionProvider.ts rename to extension/src/EvaluationWatchService/EvaluationEngine/EvaluationEngine.ts index 12fd609..c3f4643 100644 --- a/extension/src/DataSource/DataExtractionProvider/DataExtractionProvider.ts +++ b/extension/src/EvaluationWatchService/EvaluationEngine/EvaluationEngine.ts @@ -5,22 +5,20 @@ import { import { VsCodeDebugSession } from "../../VsCodeDebugger"; import { FormattedMessage } from "../../contract"; -export interface DataExtractionProviderFactory { - createDataExtractionProvider( - session: VsCodeDebugSession - ): DataExtractionProvider | undefined; +export interface EvaluationEngine { + createEvaluator(session: VsCodeDebugSession): Evaluator | undefined; } -export interface DataExtractionProvider { +export interface Evaluator { evaluate( - args: DataExtractionProviderArgs + args: EvaluationArgs ): Promise< | { kind: "data"; result: DataExtractionResult } | { kind: "error"; message: FormattedMessage } >; } -export interface DataExtractionProviderArgs { +export interface EvaluationArgs { expression: string; preferredExtractorId: DataExtractorId | undefined; frameId: number | undefined; diff --git a/extension/src/DataSource/DataExtractionProvider/GenericDataExtractionProviderFactory.ts b/extension/src/EvaluationWatchService/EvaluationEngine/GenericEvaluationEngine.ts similarity index 76% rename from extension/src/DataSource/DataExtractionProvider/GenericDataExtractionProviderFactory.ts rename to extension/src/EvaluationWatchService/EvaluationEngine/GenericEvaluationEngine.ts index f0d5674..8b121cb 100644 --- a/extension/src/DataSource/DataExtractionProvider/GenericDataExtractionProviderFactory.ts +++ b/extension/src/EvaluationWatchService/EvaluationEngine/GenericEvaluationEngine.ts @@ -4,10 +4,10 @@ import { } from "@hediet/debug-visualizer-data-extraction"; import { VsCodeDebugSession } from "../../VsCodeDebugger"; import { - DataExtractionProviderFactory, - DataExtractionProvider, - DataExtractionProviderArgs, -} from "./DataExtractionProvider"; + EvaluationEngine, + Evaluator, + EvaluationArgs, +} from "./EvaluationEngine"; import { parseEvaluationResultFromGenericDebugAdapter } from "./parseEvaluationResultFromGenericDebugAdapter"; import { FormattedMessage } from "../../contract"; import { hotClass, registerUpdateReconciler } from "@hediet/node-reload"; @@ -15,23 +15,20 @@ import { hotClass, registerUpdateReconciler } from "@hediet/node-reload"; registerUpdateReconciler(module); @hotClass(module) -export class GenericDataExtractionProviderFactory - implements DataExtractionProviderFactory { - createDataExtractionProvider( - session: VsCodeDebugSession - ): DataExtractionProvider | undefined { - return new GenericDataExtractionProvider(session); +export class GenericEvaluationEngine implements EvaluationEngine { + createEvaluator(session: VsCodeDebugSession): Evaluator | undefined { + return new GenericEvaluator(session); } } -export class GenericDataExtractionProvider implements DataExtractionProvider { +export class GenericEvaluator implements Evaluator { constructor(private readonly session: VsCodeDebugSession) {} public async evaluate({ expression, preferredExtractorId, frameId, - }: DataExtractionProviderArgs): Promise< + }: EvaluationArgs): Promise< | { kind: "data"; result: DataExtractionResult } | { kind: "error"; message: FormattedMessage } > { diff --git a/extension/src/DataSource/DataExtractionProvider/JsDataExtractionProviderFactory.ts b/extension/src/EvaluationWatchService/EvaluationEngine/JsEvaluationEngine.ts similarity index 86% rename from extension/src/DataSource/DataExtractionProvider/JsDataExtractionProviderFactory.ts rename to extension/src/EvaluationWatchService/EvaluationEngine/JsEvaluationEngine.ts index 026f1b3..d8b8ccf 100644 --- a/extension/src/DataSource/DataExtractionProvider/JsDataExtractionProviderFactory.ts +++ b/extension/src/EvaluationWatchService/EvaluationEngine/JsEvaluationEngine.ts @@ -7,21 +7,18 @@ import { } from "@hediet/debug-visualizer-data-extraction"; import { VsCodeDebugSession } from "../../VsCodeDebugger"; import { - DataExtractionProviderFactory, - DataExtractionProvider, - DataExtractionProviderArgs, -} from "./DataExtractionProvider"; + EvaluationEngine, + Evaluator, + EvaluationArgs, +} from "./EvaluationEngine"; import { FormattedMessage } from "../../contract"; import { registerUpdateReconciler, hotClass } from "@hediet/node-reload"; registerUpdateReconciler(module); @hotClass(module) -export class JsDataExtractionProviderFactory - implements DataExtractionProviderFactory { - createDataExtractionProvider( - session: VsCodeDebugSession - ): DataExtractionProvider | undefined { +export class JsEvaluationEngine implements EvaluationEngine { + createEvaluator(session: VsCodeDebugSession): Evaluator | undefined { const supportedDebugAdapters = [ "node", "node2", @@ -29,20 +26,20 @@ export class JsDataExtractionProviderFactory "chrome", ]; if (supportedDebugAdapters.indexOf(session.session.type) !== -1) { - return new JsDataEvaluator(session); + return new JsEvaluator(session); } return undefined; } } -class JsDataEvaluator implements DataExtractionProvider { +class JsEvaluator implements Evaluator { constructor(private readonly session: VsCodeDebugSession) {} public async evaluate({ expression, preferredExtractorId, frameId, - }: DataExtractionProviderArgs): Promise< + }: EvaluationArgs): Promise< | { kind: "data"; result: DataExtractionResult } | { kind: "error"; message: FormattedMessage } > { diff --git a/extension/src/EvaluationWatchService/EvaluationEngine/index.ts b/extension/src/EvaluationWatchService/EvaluationEngine/index.ts new file mode 100644 index 0000000..1d57263 --- /dev/null +++ b/extension/src/EvaluationWatchService/EvaluationEngine/index.ts @@ -0,0 +1,6 @@ +export * from "./EvaluationEngine"; + +export { ComposedEvaluationEngine } from "./ComposedEvaluationEngine"; +export { JsEvaluationEngine } from "./JsEvaluationEngine"; +export { GenericEvaluationEngine } from "./GenericEvaluationEngine"; +export { ConfiguredEvaluationEngine } from "./ConfiguredEvaluationEngine"; diff --git a/extension/src/DataSource/DataExtractionProvider/parseEvaluationResultFromGenericDebugAdapter.ts b/extension/src/EvaluationWatchService/EvaluationEngine/parseEvaluationResultFromGenericDebugAdapter.ts similarity index 100% rename from extension/src/DataSource/DataExtractionProvider/parseEvaluationResultFromGenericDebugAdapter.ts rename to extension/src/EvaluationWatchService/EvaluationEngine/parseEvaluationResultFromGenericDebugAdapter.ts diff --git a/extension/src/DataSource/DataSource.ts b/extension/src/EvaluationWatchService/EvaluationWatchService.ts similarity index 94% rename from extension/src/DataSource/DataSource.ts rename to extension/src/EvaluationWatchService/EvaluationWatchService.ts index be13202..c59206d 100644 --- a/extension/src/DataSource/DataSource.ts +++ b/extension/src/EvaluationWatchService/EvaluationWatchService.ts @@ -1,7 +1,7 @@ import { DataExtractorId } from "@hediet/debug-visualizer-data-extraction"; import { DataExtractionState, CompletionItem } from "../contract"; -export interface DataSource { +export interface EvaluationWatchService { createEvaluationWatcher( expression: string, options: EvaluationWatcherOptions diff --git a/extension/src/DataSource/DataSourceImpl.ts b/extension/src/EvaluationWatchService/EvaluationWatchServiceImpl.ts similarity index 89% rename from extension/src/DataSource/DataSourceImpl.ts rename to extension/src/EvaluationWatchService/EvaluationWatchServiceImpl.ts index 6c42c3a..394cc9a 100644 --- a/extension/src/DataSource/DataSourceImpl.ts +++ b/extension/src/EvaluationWatchService/EvaluationWatchServiceImpl.ts @@ -1,24 +1,24 @@ import { - DataSource, + EvaluationWatchService, EvaluationWatcher, EvaluationWatcherOptions, -} from "./DataSource"; +} from "./EvaluationWatchService"; import { observable, autorun, action } from "mobx"; import { Disposable } from "@hediet/std/disposable"; import { DataExtractorId } from "@hediet/debug-visualizer-data-extraction"; import { DataExtractionState, CompletionItem } from "../contract"; import { hotClass } from "@hediet/node-reload"; import { VsCodeDebuggerView } from "../VsCodeDebugger"; -import { DataExtractionProviderFactory } from "./DataExtractionProvider/DataExtractionProvider"; +import { EvaluationEngine } from "./EvaluationEngine/EvaluationEngine"; @hotClass(module) -export class DataSourceImpl implements DataSource { +export class EvaluationWatchServiceImpl implements EvaluationWatchService { public readonly dispose = Disposable.fn(); private readonly watchers = new Set(); constructor( private readonly vsCodeDebuggerView: VsCodeDebuggerView, - private readonly dataExtractionProviderFactory: DataExtractionProviderFactory + private readonly dataExtractionProviderFactory: EvaluationEngine ) { this.dispose.track({ dispose: autorun(() => { @@ -59,7 +59,7 @@ export class DataSourceImpl implements DataSource { w._state = { kind: "loading" }; - const extractionProvider = this.dataExtractionProviderFactory.createDataExtractionProvider( + const extractionProvider = this.dataExtractionProviderFactory.createEvaluator( session ); if (!extractionProvider) { @@ -98,7 +98,7 @@ export class DataSourceImpl implements DataSource { class ObservableEvaluationWatcher implements EvaluationWatcher { constructor( public readonly expression: string, - private readonly source: DataSourceImpl, + private readonly source: EvaluationWatchServiceImpl, options: EvaluationWatcherOptions ) { this._preferredDataExtractor = options.preferredDataExtractor; diff --git a/extension/src/EvaluationWatchService/index.ts b/extension/src/EvaluationWatchService/index.ts new file mode 100644 index 0000000..4062c46 --- /dev/null +++ b/extension/src/EvaluationWatchService/index.ts @@ -0,0 +1,2 @@ +export * from "./EvaluationWatchServiceImpl"; +export * from "./EvaluationWatchService"; diff --git a/extension/src/Server.ts b/extension/src/Server.ts index af67c8e..25a7a32 100644 --- a/extension/src/Server.ts +++ b/extension/src/Server.ts @@ -8,7 +8,7 @@ import * as serveStatic from "serve-static"; import { Config } from "./Config"; import cryptoRandomString = require("crypto-random-string"); import { distPath } from "debug-visualizer-webview"; -import { DataSource } from "./DataSource/DataSource"; +import { EvaluationWatchService } from "./EvaluationWatchService/EvaluationWatchService"; export class Server { private server: http.Server; @@ -16,7 +16,7 @@ export class Server { public readonly connections = new Set(); - constructor(dataSource: DataSource, config: Config) { + constructor(dataSource: EvaluationWatchService, config: Config) { const app = express(); app.use(serveStatic(distPath)); diff --git a/extension/src/extension.ts b/extension/src/extension.ts index 1ecca65..f0a7921 100644 --- a/extension/src/extension.ts +++ b/extension/src/extension.ts @@ -16,13 +16,13 @@ import { WebViews } from "./WebViews"; import { Server } from "./Server"; import { Config } from "./Config"; import { VsCodeDebugger, VsCodeDebuggerView } from "./VsCodeDebugger"; -import { DataSourceImpl } from "./DataSource"; +import { EvaluationWatchServiceImpl } from "./EvaluationWatchService"; import { - ComposedDataExtractionProviderFactory, - JsDataExtractionProviderFactory, - GenericDataExtractionProviderFactory, - ConfiguredDataExtractionProviderFactory, -} from "./DataSource/DataExtractionProvider"; + ComposedEvaluationEngine, + JsEvaluationEngine, + GenericEvaluationEngine, + ConfiguredEvaluationEngine, +} from "./EvaluationWatchService/EvaluationEngine"; export class Extension { public readonly dispose = Disposable.fn(); @@ -34,12 +34,12 @@ export class Extension { new VsCodeDebuggerView(this.debugger) ); - public readonly dataSource = new DataSourceImpl( + public readonly dataSource = new EvaluationWatchServiceImpl( this.debuggerView, - new ComposedDataExtractionProviderFactory([ - new ConfiguredDataExtractionProviderFactory(this.config), - new JsDataExtractionProviderFactory(), - new GenericDataExtractionProviderFactory(), + new ComposedEvaluationEngine([ + new ConfiguredEvaluationEngine(this.config), + new JsEvaluationEngine(), + new GenericEvaluationEngine(), ]) ); diff --git a/webview/package.json b/webview/package.json index b4025fa..08c2f78 100644 --- a/webview/package.json +++ b/webview/package.json @@ -3,7 +3,6 @@ "version": "0.0.1", "scripts": { "dev": "webpack-dev-server --hot", - "dev-playground": "webpack-dev-server --hot --port 8090 --playground", "build": "webpack" }, "main": "./index.js",