Implementation
static Future<T> run<T>(
Executable<T> executable, {
List<String> imports = const [],
Uri? packageConfigURI,
String? additionalContents,
List<Type> additionalTypes = const [],
void Function(dynamic event)? eventHandler,
void Function(String line)? logHandler,
}) async {
final source = SourceGenerator(
executable.runtimeType,
imports: imports,
additionalContents: additionalContents,
additionalTypes: additionalTypes,
);
final executor = IsolateExecutor<T>(
source,
packageConfigURI: packageConfigURI,
message: executable.message,
);
if (eventHandler != null) {
executor.events.listen(eventHandler);
}
if (logHandler != null) {
executor.console.listen(logHandler);
}
return executor.execute();
}