From d85267aadc3fb1b15f09dbe0cff6645d76516356 Mon Sep 17 00:00:00 2001 From: WiRight Date: Tue, 16 May 2023 10:14:17 +0300 Subject: [PATCH] Add debugName to Isolate and refactoring code --- example/pubspec.lock | 118 +++++++++++++++++++--------------- lib/src/parallel.dart | 46 +++++++++---- lib/src/worker.dart | 52 +++++++++++---- pubspec.lock | 146 ++++++++++++++++++++++++++++-------------- pubspec.yaml | 2 +- 5 files changed, 239 insertions(+), 125 deletions(-) diff --git a/example/pubspec.lock b/example/pubspec.lock index 4bb7c68..585a9a7 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,49 +5,48 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.1.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.1" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: "486b7bc707424572cdf7bd7e812a0c146de3fd47ecadf070254cc60383f21dd8" + url: "https://pub.dev" source: hosted version: "1.0.3" easy_isolate: @@ -56,14 +55,15 @@ packages: path: ".." relative: true source: path - version: "1.2.0" + version: "1.3.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -74,27 +74,46 @@ packages: description: flutter source: sdk version: "0.0.0" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.12.15" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" + source: hosted + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.9.1" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.8.3" sky_engine: dependency: transitive description: flutter @@ -104,58 +123,57 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + url: "https://pub.dev" source: hosted - version: "0.3.0" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0" + version: "0.5.1" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.4" sdks: - dart: ">=2.12.0 <3.0.0" - flutter: ">=1.17.0" + dart: ">=3.0.0-0 <4.0.0" diff --git a/lib/src/parallel.dart b/lib/src/parallel.dart index 661e26c..34fe910 100644 --- a/lib/src/parallel.dart +++ b/lib/src/parallel.dart @@ -39,10 +39,14 @@ class Parallel { /// } /// /// ``` - static FutureOr run(ParallelCallback handler, - {T? entryValue}) async { - final completer = Completer(); - final worker = Worker(); + static FutureOr run( + ParallelCallback handler, { + T? entryValue, + String? debugName, + }) async { + final Completer completer = Completer(); + final Worker worker = Worker(); + await worker.init( (data, _) { completer.complete(data); @@ -50,7 +54,9 @@ class Parallel { }, _isolateHandler, initialMessage: _ParallelRunParams(entryValue, handler), + debugName: debugName, ); + return await completer.future; } @@ -80,12 +86,18 @@ class Parallel { /// /// ``` static FutureOr> map( - List values, FutureOr Function(T item) handler) async { - final completerList = - Map.fromIterables(values, values.map((e) => Completer())); + List values, + FutureOr Function(T item) handler, { + String? debugName, + }) async { + final Map completerList = Map.fromIterables( + values, + values.map((e) => Completer()), + ); for (final item in values) { final worker = Worker(); + await worker.init( (data, _) { completerList[item]?.complete(data); @@ -93,10 +105,12 @@ class Parallel { }, _isolateHandler, initialMessage: _ParallelMapParams(item, handler), + debugName: debugName, ); } final result = await Future.wait(completerList.values.map((e) => e.future)); + return result.cast(); } @@ -125,12 +139,18 @@ class Parallel { /// /// ``` static FutureOr foreach( - List values, FutureOr Function(T item) handler) async { - final completerList = - Map.fromIterables(values, values.map((e) => Completer())); + List values, + FutureOr Function(T item) handler, { + String? debugName, + }) async { + final Map completerList = Map.fromIterables( + values, + values.map((e) => Completer()), + ); for (final item in values) { final worker = Worker(); + await worker.init( (data, _) { completerList[item]?.complete(null); @@ -138,6 +158,7 @@ class Parallel { }, _isolateHandler, initialMessage: _ParallelForeachParams(item, handler), + debugName: debugName, ); } @@ -146,7 +167,10 @@ class Parallel { /// The isolates handler for the parallel methods static void _isolateHandler( - event, SendPort mainSendPort, SendErrorFunction? sendError) async { + event, + SendPort mainSendPort, + SendErrorFunction? sendError, + ) async { if (event is _ParallelMapParams) { final result = await event.apply(); mainSendPort.send(result); diff --git a/lib/src/worker.dart b/lib/src/worker.dart index 126a5f3..9507d53 100644 --- a/lib/src/worker.dart +++ b/lib/src/worker.dart @@ -2,11 +2,19 @@ import 'dart:async'; import 'dart:isolate'; typedef SendErrorFunction = Function(Object? data); + typedef MessageHandler = Function(dynamic data); + typedef MainMessageHandler = FutureOr Function( - dynamic data, SendPort isolateSendPort); + dynamic data, + SendPort isolateSendPort, +); + typedef IsolateMessageHandler = FutureOr Function( - dynamic data, SendPort mainSendPort, SendErrorFunction onSendError); + dynamic data, + SendPort mainSendPort, + SendErrorFunction onSendError, +); /// An abstraction of the [Isolate] to make it easier to use without loosing /// the control of it's capabilities. @@ -20,7 +28,7 @@ typedef IsolateMessageHandler = FutureOr Function( /// /// ```dart /// -/// ... +/// // ... /// Future myMethod() async { /// final worker = Worker(); /// await worker.init(mainMessageHandler, isolateMessageHandler); @@ -30,7 +38,7 @@ typedef IsolateMessageHandler = FutureOr Function( /// /// static void isolateMessageHandler( /// dynamic data, SendPort mainSendPort, SendErrorFunction sendError) {} -/// ... +/// // ... /// /// ``` /// @@ -43,15 +51,16 @@ class Worker { /// Holds the instance of the isolate late Isolate _isolate; - /// Holds the instance of the main thread port for communication - late ReceivePort _mainReceivePort; - /// Holds the instance of the isolate open port to send messages late SendPort _isolateSendPort; + /// Holds the instance of the main thread port for communication + /// The port to communicate with the main thread + late ReceivePort _mainReceivePort; + /// The completer used to make the [init] async awaiting until receive the /// isolate send port from the isolate - final _completer = Completer(); + final Completer _completer = Completer(); /// Return if the worker is initialized. Can be used to validate before /// sending messages in the case where it's not possible to await the [init] @@ -92,14 +101,15 @@ class Worker { bool queueMode = false, MessageHandler? errorHandler, MessageHandler? exitHandler, + String? debugName, }) async { assert(isInitialized == false); if (isInitialized) return; - /// The port to communicate with the main thread - _mainReceivePort = ReceivePort(); - final errorPort = _initializeAndListen(errorHandler); - final exitPort = _initializeAndListen(exitHandler); + _mainReceivePort = ReceivePort(debugName == null ? '' : '${debugName}_rp'); + + final ReceivePort? errorPort = _initializeAndListen(errorHandler); + final ReceivePort? exitPort = _initializeAndListen(exitHandler); _isolate = await Isolate.spawn( _isolateInitializer, @@ -111,6 +121,7 @@ class Worker { ), onError: errorPort?.sendPort, onExit: exitPort?.sendPort, + debugName: debugName, ); /// Listen the main port to handle messages coming from the isolate @@ -119,13 +130,18 @@ class Worker { /// the port is saved and the worker is ready to work if (message is SendPort) { _isolateSendPort = message; + if (!(initialMessage is _NoParameterProvided)) { _isolateSendPort.send(initialMessage); } + _completer.complete(); + return; } + final handlerFuture = mainHandler(message, _isolateSendPort); + if (queueMode) { await handlerFuture; } @@ -133,6 +149,7 @@ class Worker { /// Waits 2 seconds to close the error and exit ports, enabling to receive /// the events when the worker is disposed manually. await Future.delayed(Duration(seconds: 2)); + errorPort?.close(); exitPort?.close(); }); @@ -157,6 +174,7 @@ class Worker { /// are completed. void dispose({bool immediate = false}) { _mainReceivePort.close(); + _isolate.kill( priority: immediate ? Isolate.immediate : Isolate.beforeNextEvent, ); @@ -164,6 +182,7 @@ class Worker { ReceivePort? _initializeAndListen(MessageHandler? handler) { if (handler == null) return null; + return ReceivePort()..listen(handler); } @@ -173,6 +192,7 @@ class Worker { /// the [isInitialized] or awaiting the [init] void sendMessage(Object? message) { if (!isInitialized) throw Exception('Worker is not initialized'); + _isolateSendPort.send(message); } @@ -182,7 +202,7 @@ class Worker { _IsolateInitializerParams params, ) async { /// Create the port to communicate with the isolate - var isolateReceiverPort = ReceivePort(); + final ReceivePort isolateReceiverPort = ReceivePort(); /// Send the isolate port to the main thread using the port in the params params.mainSendPort.send(isolateReceiverPort.sendPort); @@ -190,7 +210,11 @@ class Worker { /// Listen the isolate port to handle messages coming from the main await for (var data in isolateReceiverPort) { final handlerFuture = params.isolateHandler( - data, params.mainSendPort, params.errorSendPort?.send ?? (_) {}); + data, + params.mainSendPort, + params.errorSendPort?.send ?? (_) {}, + ); + if (params.queueMode) { await handlerFuture; } diff --git a/pubspec.lock b/pubspec.lock index dae0454..2556744 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,337 +5,385 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.dartlang.org" + sha256: "09d49759685f577cd71ec1fcf773afa3377e23d3a9137154a1a1d28dd5aaabd8" + url: "https://pub.dev" source: hosted version: "25.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.dartlang.org" + sha256: "21b3e7ffb8505789ecea7794480060b8e66dfa287dfa8923ff3735aadeb9cf29" + url: "https://pub.dev" source: hosted version: "2.2.0" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: "3d82ff8620ec576fd38f6cec0df45a7c088b8704eb1c63d4c336392e5efca6ca" + url: "https://pub.dev" source: hosted version: "2.2.0" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: db4766341bd8ecb66556f31ab891a5d596ef829221993531bd64a8e6342f0cda + url: "https://pub.dev" source: hosted version: "2.8.2" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "5bbf32bc9e518d41ec49718e2931cd4527292c9b0c6d2dffcf7fe6b9a8a8cf72" + url: "https://pub.dev" source: hosted version: "2.1.0" charcode: dependency: transitive description: name: charcode - url: "https://pub.dartlang.org" + sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 + url: "https://pub.dev" source: hosted version: "1.3.1" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.dartlang.org" + sha256: cd9cfe046f8b4d87f45abce8f14ec315a4eaedcf92a211e83fa080faf9ec7c1c + url: "https://pub.dev" source: hosted version: "0.3.3" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "6d4193120997ecfd09acf0e313f13dc122b119e5eca87ef57a7d065ec9183762" + url: "https://pub.dev" source: hosted version: "1.15.0" convert: dependency: transitive description: name: convert - url: "https://pub.dartlang.org" + sha256: f08428ad63615f96a27e34221c65e1a451439b5f26030f78d790f461c686d65d + url: "https://pub.dev" source: hosted version: "3.0.1" coverage: dependency: transitive description: name: coverage - url: "https://pub.dartlang.org" + sha256: ad538fa2e8f6b828d54c04a438af816ce814de404690136d3b9dfb3a436cd01c + url: "https://pub.dev" source: hosted version: "1.0.3" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: cf75650c66c0316274e21d7c43d3dea246273af5955bd94e8184837cd577575c + url: "https://pub.dev" source: hosted version: "3.0.1" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: b69516f2c26a5bcac4eee2e32512e1a5205ab312b3536c1c1227b2b942b5f9ad + url: "https://pub.dev" source: hosted version: "6.1.2" frontend_server_client: dependency: transitive description: name: frontend_server_client - url: "https://pub.dartlang.org" + sha256: "6d2930621b9377f6a4b7d260fce525d48dd77a334f0d5d4177d07b0dcb76c032" + url: "https://pub.dev" source: hosted version: "2.1.2" glob: dependency: transitive description: name: glob - url: "https://pub.dartlang.org" + sha256: dda85ce2aefce16f7e75586acbcb1e8320bf176f69fd94082e31945d6de67f3e + url: "https://pub.dev" source: hosted version: "2.0.1" http_multi_server: dependency: transitive description: name: http_multi_server - url: "https://pub.dartlang.org" + sha256: bfb651625e251a88804ad6d596af01ea903544757906addcb2dcdf088b5ea185 + url: "https://pub.dev" source: hosted version: "3.0.1" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: e362d639ba3bc07d5a71faebb98cde68c05bfbcfbbb444b60b6f60bb67719185 + url: "https://pub.dev" source: hosted version: "4.0.0" io: dependency: transitive description: name: io - url: "https://pub.dartlang.org" + sha256: "0d4c73c3653ab85bf696d51a9657604c900a370549196a91f33e4c39af760852" + url: "https://pub.dev" source: hosted version: "1.0.3" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: d9bdfd70d828eeb352390f81b18d6a354ef2044aa28ef25682079797fa7cd174 + url: "https://pub.dev" source: hosted version: "0.6.3" logging: dependency: transitive description: name: logging - url: "https://pub.dartlang.org" + sha256: "0520a4826042a8a5d09ddd4755623a50d37ee536d79a70452aff8c8ad7bb6c27" + url: "https://pub.dev" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "2e2c34e631f93410daa3ee3410250eadc77ac6befc02a040eda8a123f34e6f5a" + url: "https://pub.dev" source: hosted version: "0.12.11" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "5202fdd37b4da5fd14a237ed0a01cad6c1efd4c99b5b5a0d3c9237f3728c9485" + url: "https://pub.dev" source: hosted version: "1.7.0" mime: dependency: transitive description: name: mime - url: "https://pub.dartlang.org" + sha256: a7a98ea7f366e2cc9d2b20873815aebec5e2bc124fe0da9d3f7f59b0625ea180 + url: "https://pub.dev" source: hosted version: "1.0.0" node_preamble: dependency: transitive description: name: node_preamble - url: "https://pub.dartlang.org" + sha256: "8ebdbaa3b96d5285d068f80772390d27c21e1fa10fb2df6627b1b9415043608d" + url: "https://pub.dev" source: hosted version: "2.0.1" package_config: dependency: transitive description: name: package_config - url: "https://pub.dartlang.org" + sha256: "20e7154d701fedaeb219dad732815ecb66677667871127998a9a6581c2aba4ba" + url: "https://pub.dev" source: hosted version: "2.0.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "2ad4cddff7f5cc0e2d13069f2a3f7a73ca18f66abd6f5ecf215219cdb3638edb" + url: "https://pub.dev" source: hosted version: "1.8.0" pedantic: dependency: transitive description: name: pedantic - url: "https://pub.dartlang.org" + sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" + url: "https://pub.dev" source: hosted version: "1.11.1" pool: dependency: transitive description: name: pool - url: "https://pub.dartlang.org" + sha256: "05955e3de2683e1746222efd14b775df7131139e07695dc8e24650f6b4204504" + url: "https://pub.dev" source: hosted version: "1.5.0" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.dartlang.org" + sha256: "59ed538734419e81f7fc18c98249ae72c3c7188bdd9dceff2840585227f79843" + url: "https://pub.dev" source: hosted version: "2.0.0" shelf: dependency: transitive description: name: shelf - url: "https://pub.dartlang.org" + sha256: c240984c924796e055e831a0a36db23be8cb04f170b26df572931ab36418421d + url: "https://pub.dev" source: hosted version: "1.2.0" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler - url: "https://pub.dartlang.org" + sha256: e0b44ebddec91e70a713e13adf93c1b2100821303b86a18e1ef1d082bd8bd9b8 + url: "https://pub.dev" source: hosted version: "3.0.0" shelf_static: dependency: transitive description: name: shelf_static - url: "https://pub.dartlang.org" + sha256: "4a0d12cd512aa4fc55fed5f6280f02ef183f47ba29b4b0dfd621b1c99b7e6361" + url: "https://pub.dev" source: hosted version: "1.1.0" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - url: "https://pub.dartlang.org" + sha256: fd84910bf7d58db109082edf7326b75322b8f186162028482f53dc892f00332d + url: "https://pub.dev" source: hosted version: "1.0.1" source_map_stack_trace: dependency: transitive description: name: source_map_stack_trace - url: "https://pub.dartlang.org" + sha256: "8c463326277f68a628abab20580047b419c2ff66756fd0affd451f73f9508c11" + url: "https://pub.dev" source: hosted version: "2.1.0" source_maps: dependency: transitive description: name: source_maps - url: "https://pub.dartlang.org" + sha256: "52de2200bb098de739794c82d09c41ac27b2e42fd7e23cce7b9c74bf653c7296" + url: "https://pub.dev" source: hosted version: "0.10.10" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: d5f89a9e52b36240a80282b3dc0667dd36e53459717bb17b8fb102d30496606a + url: "https://pub.dev" source: hosted version: "1.8.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: f8d9f247e2f9f90e32d1495ff32dac7e4ae34ffa7194c5ff8fcc0fd0e52df774 + url: "https://pub.dev" source: hosted version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: db47e4797198ee601990820437179bb90219f918962318d494ada2b4b11e6f6d + url: "https://pub.dev" source: hosted version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: dd11571b8a03f7cadcf91ec26a77e02bfbd6bbba2a512924d3116646b4198fc4 + url: "https://pub.dev" source: hosted version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a88162591b02c1f3a3db3af8ce1ea2b374bd75a7bb8d5e353bcfbdc79d719830 + url: "https://pub.dev" source: hosted version: "1.2.0" test: dependency: "direct dev" description: name: test - url: "https://pub.dartlang.org" + sha256: d8df85e0659006d6dd09dd5d1d4bf81848d34fbe5b1fdd2b2a90e690aaa8195e + url: "https://pub.dev" source: hosted version: "1.17.12" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "3c3c3eb64242eec8aeb7a7e530cd541737a84bb01fc08b363b429aaa4a91060d" + url: "https://pub.dev" source: hosted version: "0.4.3" test_core: dependency: transitive description: name: test_core - url: "https://pub.dartlang.org" + sha256: f269e59fdd3abd14d6d92d3da9a03f69e931e9dd9140d6f06f94fc2204584741 + url: "https://pub.dev" source: hosted version: "0.4.2" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: "53bdf7e979cfbf3e28987552fd72f637e63f3c8724c9e56d9246942dc2fa36ee" + url: "https://pub.dev" source: hosted version: "1.3.0" vm_service: dependency: transitive description: name: vm_service - url: "https://pub.dartlang.org" + sha256: "319f036ff2136bf1c8789ff627c104dd314001d911361154ccaa05cee4748753" + url: "https://pub.dev" source: hosted version: "7.3.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.dartlang.org" + sha256: "68173f2fa67d241323a4123be7ed4e43424c54befa5505d71c8ad4b7baf8f71d" + url: "https://pub.dev" source: hosted version: "1.0.0" web_socket_channel: dependency: transitive description: name: web_socket_channel - url: "https://pub.dartlang.org" + sha256: "0c2ada1b1aeb2ad031ca81872add6be049b8cb479262c6ad3c4b0f9c24eaab2f" + url: "https://pub.dev" source: hosted version: "2.1.0" webkit_inspection_protocol: dependency: transitive description: name: webkit_inspection_protocol - url: "https://pub.dartlang.org" + sha256: "5adb6ab8ed14e22bb907aae7338f0c206ea21e7a27004e97664b16c120306f00" + url: "https://pub.dev" source: hosted version: "1.0.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + sha256: "3cee79b1715110341012d27756d9bae38e650588acd38d3f3c610822e1337ace" + url: "https://pub.dev" source: hosted version: "3.1.0" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=2.12.0 <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index cc9cfd9..e831211 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.3.0 homepage: https://www.britto.dev environment: - sdk: ">=2.12.0 <3.0.0" + sdk: ">=2.12.0 <4.0.0" dev_dependencies: test: ^1.17.12