Skip to content

Commit 7ed5ad7

Browse files
author
Anna Gringauze
authored
Restructure LoadStrategy to provide build arguments (#2270)
* Make load strategy provide the build settings * Rename TestLoadStrategySettings to TestBuildSettings * Only allow configurable build settings to in context setup * Guess the entrypoint in webdev * Cleanup * Update changelog * Cleanup * Add tests * Add TestBuildSettings for construction * Cleanup * Remove unused parameter * Use build settings for expression compiler * Build * Pass compiler options to resident compiler and expression compiler in tests * Add TestCompilerOptions * Addressed CR comments
1 parent 5ad79c2 commit 7ed5ad7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+815
-470
lines changed

dwds/CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
## 22.2.0-wip
1+
## 23.0.0-wip
2+
- Restructure `LoadStrategy` to provide build settings. - [#2270](https://github.com/dart-lang/webdev/pull/2270)
23

34
## 22.1.0
4-
- Update `package:vm_service` constraint to `^13.0.0`. - [#2235](https://github.com/dart-lang/webdev/pull/2265)
5+
- Update `package:vm_service` constraint to `^13.0.0`. - [#2265](https://github.com/dart-lang/webdev/pull/2265)
56

67
## 22.0.0
78

dwds/lib/dwds.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ export 'src/loaders/frontend_server_require.dart'
2323
show FrontendServerRequireStrategyProvider;
2424
export 'src/loaders/legacy.dart' show LegacyStrategy;
2525
export 'src/loaders/require.dart' show RequireStrategy;
26-
export 'src/loaders/strategy.dart' show LoadStrategy, ReloadConfiguration;
26+
export 'src/loaders/strategy.dart'
27+
show LoadStrategy, ReloadConfiguration, BuildSettings;
2728
export 'src/readers/asset_reader.dart' show AssetReader, PackageUriMapper;
2829
export 'src/readers/frontend_server_asset_reader.dart'
2930
show FrontendServerAssetReader;

dwds/lib/expression_compiler.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,8 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
export 'src/services/expression_compiler.dart'
6-
show ExpressionCompilationResult, ExpressionCompiler, ModuleInfo;
6+
show
7+
ExpressionCompilationResult,
8+
ExpressionCompiler,
9+
CompilerOptions,
10+
ModuleInfo;

dwds/lib/src/config/tool_configuration.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class ToolConfiguration {
1414
final DebugSettings debugSettings;
1515
final AppMetadata appMetadata;
1616

17-
ToolConfiguration({
17+
const ToolConfiguration({
1818
required this.loadStrategy,
1919
required this.debugSettings,
2020
required this.appMetadata,
@@ -37,14 +37,12 @@ class AppMetadata {
3737
final String hostname;
3838
final bool isInternalBuild;
3939
final String? workspaceName;
40-
Future<bool> Function() isFlutterApp;
4140

42-
AppMetadata({
41+
const AppMetadata({
4342
this.hostname = 'localhost',
4443
this.isInternalBuild = false,
4544
this.workspaceName,
46-
Future<bool> Function()? isFlutterApp,
47-
}) : isFlutterApp = isFlutterApp ?? (() => Future.value(true));
45+
});
4846
}
4947

5048
typedef UrlEncoder = Future<String> Function(String url);
@@ -68,7 +66,7 @@ class DebugSettings {
6866
final ExpressionCompiler? expressionCompiler;
6967
final UrlEncoder? urlEncoder;
7068

71-
DebugSettings({
69+
const DebugSettings({
7270
this.enableDebugging = true,
7371
this.enableDebugExtension = false,
7472
this.useSseForDebugProxy = true,

dwds/lib/src/debugging/libraries.dart

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,12 @@ class LibraryHelper extends Domain {
2929

3030
Future<LibraryRef> get rootLib async {
3131
if (_rootLib != null) return _rootLib!;
32-
// TODO: read entrypoint from app metadata.
33-
// Issue: https://github.com/dart-lang/webdev/issues/1290
3432
final libraries = await libraryRefs;
35-
if (globalToolConfiguration.loadStrategy.appEntrypoint != null) {
33+
final mainLibrary =
34+
globalToolConfiguration.loadStrategy.buildSettings.appEntrypoint;
35+
if (mainLibrary != null) {
3636
_rootLib = libraries.firstWhereOrNull(
37-
(lib) =>
38-
Uri.parse(lib.uri ?? '') ==
39-
globalToolConfiguration.loadStrategy.appEntrypoint,
37+
(lib) => Uri.parse(lib.uri ?? '') == mainLibrary,
4038
);
4139
}
4240
_rootLib = _rootLib ??

dwds/lib/src/debugging/location.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,9 @@ class Locations {
298298
}
299299
final result = <Location>{};
300300
if (module.isEmpty) return _moduleToLocations[module] = result;
301-
if (module.endsWith('dart_sdk') || module.endsWith('dart_library')) {
301+
if (module.endsWith('dart_sdk') ||
302+
(module.endsWith('dart_library') &&
303+
!module.endsWith('.dart_library'))) {
302304
return result;
303305
}
304306
final modulePath = await globalToolConfiguration.loadStrategy

dwds/lib/src/handlers/injector.dart

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ class DwdsInjector {
9696
devHandlerPath = '$requestedUriBase/$devHandlerPath';
9797
_devHandlerPaths.add(devHandlerPath);
9898
final entrypoint = request.url.path;
99-
globalToolConfiguration.loadStrategy.trackEntrypoint(entrypoint);
99+
await globalToolConfiguration.loadStrategy
100+
.trackEntrypoint(entrypoint);
100101
body = await _injectClientAndHoistMain(
101102
body,
102103
appId,
@@ -184,25 +185,32 @@ Future<String> _injectedClientSnippet(
184185
String entrypointPath,
185186
String? extensionUri,
186187
) async {
187-
final isFlutterApp = await globalToolConfiguration.appMetadata.isFlutterApp();
188+
final loadStrategy = globalToolConfiguration.loadStrategy;
189+
final buildSettings = loadStrategy.buildSettings;
190+
final appMetadata = globalToolConfiguration.appMetadata;
191+
final debugSettings = globalToolConfiguration.debugSettings;
192+
188193
var injectedBody = 'window.\$dartAppId = "$appId";\n'
189-
'window.\$dartReloadConfiguration = "${globalToolConfiguration.loadStrategy.reloadConfiguration}";\n'
190-
'window.\$dartModuleStrategy = "${globalToolConfiguration.loadStrategy.id}";\n'
191-
'window.\$loadModuleConfig = ${globalToolConfiguration.loadStrategy.loadModuleSnippet};\n'
194+
'window.\$dartReloadConfiguration = "${loadStrategy.reloadConfiguration}";\n'
195+
'window.\$dartModuleStrategy = "${loadStrategy.id}";\n'
196+
'window.\$loadModuleConfig = ${loadStrategy.loadModuleSnippet};\n'
192197
'window.\$dwdsVersion = "$packageVersion";\n'
193198
'window.\$dwdsDevHandlerPath = "$devHandlerPath";\n'
194-
'window.\$dwdsEnableDevToolsLaunch = ${globalToolConfiguration.debugSettings.enableDevToolsLaunch};\n'
199+
'window.\$dwdsEnableDevToolsLaunch = ${debugSettings.enableDevToolsLaunch};\n'
195200
'window.\$dartEntrypointPath = "$entrypointPath";\n'
196-
'window.\$dartEmitDebugEvents = ${globalToolConfiguration.debugSettings.emitDebugEvents};\n'
197-
'window.\$isInternalBuild = ${globalToolConfiguration.appMetadata.isInternalBuild};\n'
198-
'window.\$isFlutterApp = $isFlutterApp;\n'
199-
'${globalToolConfiguration.loadStrategy.loadClientSnippet(_clientScript)}';
201+
'window.\$dartEmitDebugEvents = ${debugSettings.emitDebugEvents};\n'
202+
'window.\$isInternalBuild = ${appMetadata.isInternalBuild};\n'
203+
'window.\$isFlutterApp = ${buildSettings.isFlutterApp};\n'
204+
'${loadStrategy.loadClientSnippet(_clientScript)}';
205+
200206
if (extensionUri != null) {
201207
injectedBody += 'window.\$dartExtensionUri = "$extensionUri";\n';
202208
}
203-
final workspaceName = globalToolConfiguration.appMetadata.workspaceName;
209+
210+
final workspaceName = appMetadata.workspaceName;
204211
if (workspaceName != null) {
205212
injectedBody += 'window.\$dartWorkspaceName = "$workspaceName";\n';
206213
}
214+
207215
return injectedBody;
208216
}

0 commit comments

Comments
 (0)