blob: 9a9a5185a071c7f99bc20865287dc5c85fdeee7c [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/servers/devtools.dart';
import 'package:dwds/src/services/expression_compiler.dart';
/// Configuration about the app, debug settings, and file system.
///
/// This is set by the code runner and passed to DWDS on start up.
class ToolConfiguration {
final LoadStrategy loadStrategy;
final DebugSettings debugSettings;
final AppMetadata appMetadata;
const ToolConfiguration({
required this.loadStrategy,
required this.debugSettings,
required this.appMetadata,
});
}
/// The tool configuration for the connected app.
///
/// TODO(elliette): Consider making this final (would require updating tests
/// that currently depend on changing the configuration between test cases).
late ToolConfiguration _globalToolConfiguration;
set globalToolConfiguration(ToolConfiguration configuration) =>
_globalToolConfiguration = configuration;
ToolConfiguration get globalToolConfiguration => _globalToolConfiguration;
/// Metadata for the connected app.
///
/// These are set by the code runner and passed to DWDS on start up.
class AppMetadata {
final String hostname;
final bool isInternalBuild;
final String? workspaceName;
final String? codeRunner;
const AppMetadata({
this.hostname = 'localhost',
this.isInternalBuild = false,
this.workspaceName,
this.codeRunner,
});
}
typedef UrlEncoder = Future<String> Function(String url);
typedef DevToolsLauncher = Future<DevTools> Function(String hostname);
/// Debug settings for the connected app.
///
/// These are set by the code runner and passed to DWDS on start up.
class DebugSettings {
final bool enableDebugging;
final bool enableDebugExtension;
final bool useSseForDebugProxy;
final bool useSseForDebugBackend;
final bool useSseForInjectedClient;
final bool spawnDds;
final bool enableDevToolsLaunch;
final bool launchDevToolsInNewWindow;
final bool emitDebugEvents;
final DevToolsLauncher? devToolsLauncher;
final ExpressionCompiler? expressionCompiler;
final UrlEncoder? urlEncoder;
const DebugSettings({
this.enableDebugging = true,
this.enableDebugExtension = false,
this.useSseForDebugProxy = true,
this.useSseForDebugBackend = true,
this.useSseForInjectedClient = true,
this.spawnDds = true,
this.enableDevToolsLaunch = true,
this.launchDevToolsInNewWindow = true,
this.emitDebugEvents = true,
this.devToolsLauncher,
this.expressionCompiler,
this.urlEncoder,
});
}