From 46cffb836cc0e6b1f194bf9983da4645cff0616a Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Thu, 17 Aug 2023 21:36:00 +0800 Subject: [PATCH] new & opt. - new: ssh discontinuity test - opt.: server cmds - opt.: check ssh client status before exec cmds - new: #124 notify on discontinuity --- ios/Runner.xcodeproj/project.pbxproj | 24 ++-- lib/data/model/app/shell_func.dart | 1 + lib/data/model/server/cpu.dart | 4 +- lib/data/model/server/net_speed.dart | 15 ++- .../server/server_status_update_req.dart | 5 +- lib/data/provider/server.dart | 2 +- lib/data/res/build_data.dart | 6 +- lib/data/res/server_cmd.dart | 3 +- lib/data/res/status.dart | 2 +- lib/view/page/home.dart | 1 + lib/view/page/ssh/term.dart | 50 +++++++- macos/Runner.xcodeproj/project.pbxproj | 12 +- pubspec.lock | 114 ++++++++---------- 13 files changed, 141 insertions(+), 98 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 673e44d3..59a7e04a 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -470,7 +470,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 474; + CURRENT_PROJECT_VERSION = 476; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -478,7 +478,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.474; + MARKETING_VERSION = 1.0.476; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -602,7 +602,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 474; + CURRENT_PROJECT_VERSION = 476; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -610,7 +610,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.474; + MARKETING_VERSION = 1.0.476; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -628,7 +628,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 474; + CURRENT_PROJECT_VERSION = 476; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -636,7 +636,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.474; + MARKETING_VERSION = 1.0.476; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -657,7 +657,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 474; + CURRENT_PROJECT_VERSION = 476; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -670,7 +670,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.474; + MARKETING_VERSION = 1.0.476; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; @@ -696,7 +696,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 474; + CURRENT_PROJECT_VERSION = 476; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -709,7 +709,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.474; + MARKETING_VERSION = 1.0.476; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -732,7 +732,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 474; + CURRENT_PROJECT_VERSION = 476; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -745,7 +745,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.474; + MARKETING_VERSION = 1.0.476; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/lib/data/model/app/shell_func.dart b/lib/data/model/app/shell_func.dart index bf920d27..28b5d750 100644 --- a/lib/data/model/app/shell_func.dart +++ b/lib/data/model/app/shell_func.dart @@ -83,6 +83,7 @@ extension EnumX on Enum { } enum StatusCmdType { + time, net, sys, cpu, diff --git a/lib/data/model/server/cpu.dart b/lib/data/model/server/cpu.dart index 015514a1..79a915ab 100644 --- a/lib/data/model/server/cpu.dart +++ b/lib/data/model/server/cpu.dart @@ -88,7 +88,9 @@ List parseCPU(String raw) { int.parse(matches[3]), int.parse(matches[4]), int.parse(matches[5]), - int.parse(matches[6]))); + int.parse(matches[6]), + ), + ); } return cpus; } diff --git a/lib/data/model/server/net_speed.dart b/lib/data/model/server/net_speed.dart index a5d89af0..9b1103ad 100644 --- a/lib/data/model/server/net_speed.dart +++ b/lib/data/model/server/net_speed.dart @@ -3,10 +3,11 @@ import 'package:toolbox/core/extension/numx.dart'; import 'time_seq.dart'; class NetSpeedPart extends TimeSeqIface { - String device; - BigInt bytesIn; - BigInt bytesOut; - BigInt time; + final String device; + final BigInt bytesIn; + final BigInt bytesOut; + final int time; + NetSpeedPart(this.device, this.bytesIn, this.bytesOut, this.time); @override @@ -18,7 +19,7 @@ class NetSpeed extends TimeSeq { List get devices => now.map((e) => e.device).toList(); - BigInt get _timeDiff => now[0].time - pre[0].time; + BigInt get _timeDiff => BigInt.from(now[0].time - pre[0].time); double _speedIn(int i) => (now[i].bytesIn - pre[i].bytesIn) / _timeDiff; double _speedOut(int i) => (now[i].bytesOut - pre[i].bytesOut) / _timeDiff; @@ -96,14 +97,12 @@ class NetSpeed extends TimeSeq { /// face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed /// lo: 45929941 269112 0 0 0 0 0 0 45929941 269112 0 0 0 0 0 0 /// eth0: 48481023 505772 0 0 0 0 0 0 36002262 202307 0 0 0 0 0 0 -/// 1635752901 -List parseNetSpeed(String raw) { +List parseNetSpeed(String raw, int time) { final split = raw.split('\n'); if (split.length < 4) { return []; } - final time = BigInt.parse(split[split.length - 1]); final results = []; for (final item in split.sublist(2, split.length - 1)) { final data = item.trim().split(':'); diff --git a/lib/data/model/server/server_status_update_req.dart b/lib/data/model/server/server_status_update_req.dart index b06d25e2..dc1b069f 100644 --- a/lib/data/model/server/server_status_update_req.dart +++ b/lib/data/model/server/server_status_update_req.dart @@ -15,7 +15,10 @@ class ServerStatusUpdateReq { Future getStatus(ServerStatusUpdateReq req) async { final segments = req.segments; - final net = parseNetSpeed(StatusCmdType.net.find(segments)); + + final time = int.parse(StatusCmdType.time.find(segments)); + + final net = parseNetSpeed(StatusCmdType.net.find(segments), time); req.ss.netSpeed.update(net); final sys = _parseSysVer( diff --git a/lib/data/provider/server.dart b/lib/data/provider/server.dart index 98e680e9..c754ce49 100644 --- a/lib/data/provider/server.dart +++ b/lib/data/provider/server.dart @@ -219,7 +219,7 @@ class ServerProvider extends ChangeNotifier { return; } - if (s.state.shouldConnect) { + if (s.state.shouldConnect || (s.client?.isClosed ?? true)) { _setServerState(s, ServerState.connecting); final time1 = DateTime.now(); diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index 2e8337ab..ba5bbf34 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -2,8 +2,8 @@ class BuildData { static const String name = "ServerBox"; - static const int build = 474; + static const int build = 476; static const String engine = "3.10.6"; - static const String buildAt = "2023-08-16 15:42:48.857532"; - static const int modifications = 24; + static const String buildAt = "2023-08-17 18:45:06.973608"; + static const int modifications = 5; } diff --git a/lib/data/res/server_cmd.dart b/lib/data/res/server_cmd.dart index 004cd46c..ab8d8d46 100644 --- a/lib/data/res/server_cmd.dart +++ b/lib/data/res/server_cmd.dart @@ -6,7 +6,8 @@ const serverBoxDir = r'$HOME/.config/server_box'; const shellPath = '$serverBoxDir/mobile_app.sh'; const statusCmds = [ - 'cat /proc/net/dev && date +%s', + 'date +%s', + 'cat /proc/net/dev', 'cat /etc/os-release | grep PRETTY_NAME', 'cat /proc/stat | grep cpu', 'uptime', diff --git a/lib/data/res/status.dart b/lib/data/res/status.dart index 3a7c53c6..af14f83f 100644 --- a/lib/data/res/status.dart +++ b/lib/data/res/status.dart @@ -31,7 +31,7 @@ NetSpeedPart get _initNetSpeedPart => NetSpeedPart( '', BigInt.zero, BigInt.zero, - BigInt.zero, + 0, ); NetSpeed get initNetSpeed => NetSpeed( [_initNetSpeedPart], diff --git a/lib/view/page/home.dart b/lib/view/page/home.dart index a67b808f..7e9cfc69 100644 --- a/lib/view/page/home.dart +++ b/lib/view/page/home.dart @@ -309,6 +309,7 @@ class _HomePageState extends State replace: name, ), ), + height13, const Text('Participants:'), ...participants.map( (name) => UrlText( diff --git a/lib/view/page/ssh/term.dart b/lib/view/page/ssh/term.dart index 56ca9e10..2bb5cd2e 100644 --- a/lib/view/page/ssh/term.dart +++ b/lib/view/page/ssh/term.dart @@ -8,6 +8,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:provider/provider.dart'; import 'package:toolbox/core/extension/navigator.dart'; +import 'package:toolbox/core/extension/uint8list.dart'; import 'package:xterm/xterm.dart'; import '../../../core/route.dart'; @@ -54,6 +55,7 @@ class _SSHPageState extends State { Timer? _virtKeyLongPressTimer; SSHClient? _client; SSHSession? _session; + Timer? _discontinuityTimer; @override void initState() { @@ -74,8 +76,12 @@ class _SSHPageState extends State { super.dispose(); _virtKeyLongPressTimer?.cancel(); _terminalController.dispose(); - _client?.close(); - _session?.close(); + if (_client?.isClosed == false) { + try { + _client?.close(); + } catch (_) {} + } + _discontinuityTimer?.cancel(); } @override @@ -85,7 +91,7 @@ class _SSHPageState extends State { _media = MediaQuery.of(context); _s = S.of(context)!; _terminalTheme = _isDark ? termDarkTheme : termLightTheme; - + // Because the virtual keyboard only displayed on mobile devices if (isMobile) { _virtKeyWidth = _media.size.width / 7; @@ -126,6 +132,7 @@ class _SSHPageState extends State { deleteDetection: isIOS, autofocus: true, keyboardAppearance: _isDark ? Brightness.dark : Brightness.light, + hideScrollBar: isMobile, ), ), ); @@ -334,6 +341,20 @@ class _SSHPageState extends State { ), ); + _discontinuityTimer = Timer.periodic( + const Duration(seconds: 5), + (_) async { + var throwTimeout = true; + Future.delayed(const Duration(seconds: 3), () { + if (throwTimeout) { + _catchTimeout(); + } + }); + await _client?.run('echo 1').string; + throwTimeout = false; + }, + ); + if (_session == null) { showSnackBar(context, const Text('Null session')); return; @@ -372,4 +393,27 @@ class _SSHPageState extends State { .transform(const Utf8Decoder()) .listen(_terminal.write); } + + void _catchTimeout() { + _discontinuityTimer?.cancel(); + if (!mounted) return; + _write('\n\nConnection lost\r\n'); + showRoundDialog( + context: context, + title: Text(_s.disconnected), + child: Text('Go back?'), + barrierDismiss: false, + actions: [ + TextButton( + onPressed: () { + if (mounted) { + context.pop(); + context.pop(); + } + }, + child: Text(_s.ok), + ), + ], + ); + } } diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index d027985a..c4de14a8 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -475,9 +475,9 @@ baseConfigurationReference = C1C758C41C4E208965A68933 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 474; + CURRENT_PROJECT_VERSION = 476; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0.474; + MARKETING_VERSION = 1.0.476; PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -490,9 +490,9 @@ baseConfigurationReference = 15AF97DF993E8968098D6EBE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 474; + CURRENT_PROJECT_VERSION = 476; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0.474; + MARKETING_VERSION = 1.0.476; PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -505,9 +505,9 @@ baseConfigurationReference = 7CFA7DE7FABA75685DFB6948 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 474; + CURRENT_PROJECT_VERSION = 476; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0.474; + MARKETING_VERSION = 1.0.476; PRODUCT_BUNDLE_IDENTIFIER = tech.lolli.serverBox.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; diff --git a/pubspec.lock b/pubspec.lock index d22277f9..3994bb9c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,10 +5,10 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 url: "https://pub.dev" source: hosted - version: "61.0.0" + version: "64.0.0" after_layout: dependency: "direct main" description: @@ -21,10 +21,10 @@ packages: dependency: transitive description: name: analyzer - sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" url: "https://pub.dev" source: hosted - version: "5.13.0" + version: "6.2.0" archive: dependency: transitive description: @@ -45,10 +45,10 @@ packages: dependency: transitive description: name: asn1lib - sha256: b74e3842a52c61f8819a1ec8444b4de5419b41a7465e69d4aa681445377398b0 + sha256: "21afe4333076c02877d14f4a89df111e658a6d466cbfc802eb705eb91bd5adfd" url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.5.0" async: dependency: transitive description: @@ -246,10 +246,10 @@ packages: dependency: "direct main" description: name: dio - sha256: a9d76e72985d7087eb7c5e7903224ae52b337131518d127c554b9405936752b8 + sha256: ce75a1b40947fea0a0e16ce73337122a86762e38b982e1ccb909daa3b9bc4197 url: "https://pub.dev" source: hosted - version: "5.2.1+1" + version: "5.3.2" easy_isolate: dependency: "direct main" description: @@ -278,10 +278,10 @@ packages: dependency: transitive description: name: ffi - sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.0" file: dependency: transitive description: @@ -294,10 +294,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: b1729fc96627dd44012d0a901558177418818d6bd428df59dcfeb594e5f66432 + sha256: "21145c9c268d54b1f771d8380c195d2d6f655e0567dc1ca2f9c134c02c819e0a" url: "https://pub.dev" source: hosted - version: "5.3.2" + version: "5.3.3" fixnum: dependency: transitive description: @@ -336,10 +336,10 @@ packages: dependency: "direct dev" description: name: flutter_native_splash - sha256: ba45d8cfbd778478a74696b012f33ffb6b1760c9bc531b21e2964444a4870dae + sha256: ecff62b3b893f2f665de7e4ad3de89f738941fcfcaaba8ee601e749efafa4698 url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -418,10 +418,10 @@ packages: dependency: "direct dev" description: name: hive_generator - sha256: "65998cc4d2cd9680a3d9709d893d2f6bb15e6c1f92626c3f1fa650b4b3281521" + sha256: "06cb8f58ace74de61f63500564931f9505368f45f98958bd7a6c35ba24159db4" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.0.1" html: dependency: transitive description: @@ -570,50 +570,50 @@ packages: dependency: "direct main" description: name: path_provider - sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" + sha256: "909b84830485dbcd0308edf6f7368bc8fd76afa26a270420f34cabea2a6467a0" url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.1.0" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" + sha256: "5d44fc3314d969b84816b569070d7ace0f1dea04bd94a83f74c4829615d22ad8" url: "https://pub.dev" source: hosted - version: "2.0.27" + version: "2.1.0" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3" + sha256: "1b744d3d774e5a879bb76d6cd1ecee2ba2c6960c03b1020cd35212f6aa267ac5" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.0" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57 + sha256: ba2b77f0c52a33db09fc8caf85b12df691bf28d983e84cf87ff6d693cfa007b3 url: "https://pub.dev" source: hosted - version: "2.1.11" + version: "2.2.0" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + sha256: bced5679c7df11190e1ddc35f3222c858f328fff85c3942e46e7f5589bf9eb84 url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.1.0" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" + sha256: ee0e0d164516b90ae1f970bdf29f726f1aa730d7cfc449ecc74c495378b705da url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.2.0" pedantic: dependency: transitive description: @@ -650,18 +650,18 @@ packages: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + sha256: "57c07bf82207aee366dfaa3867b3164e4f03a238a461a11b0e8a3a510d51203d" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.1" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.5" pointycastle: dependency: transitive description: @@ -678,14 +678,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.1" - process: - dependency: transitive - description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.dev" - source: hosted - version: "4.2.4" provider: dependency: "direct main" description: @@ -730,18 +722,18 @@ packages: dependency: "direct main" description: name: share_plus - sha256: ed3fcea4f789ed95913328e629c0c53e69e80e08b6c24542f1b3576046c614e8 + sha256: "6cec740fa0943a826951223e76218df002804adb588235a8910dc3d6b0654e11" url: "https://pub.dev" source: hosted - version: "7.0.2" + version: "7.1.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "0c6e61471bd71b04a138b8b588fa388e66d8b005e6f2deda63371c5c505a0981" + sha256: "357412af4178d8e11d14f41723f80f12caea54cf0d5cd29af9dcdab85d58aea7" url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.3.0" shared_preferences: dependency: "direct main" description: @@ -762,10 +754,10 @@ packages: dependency: transitive description: name: shared_preferences_foundation - sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4 + sha256: d29753996d8eb8f7619a1f13df6ce65e34bc107bef6330739ed76f18b22310ef url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.3" shared_preferences_linux: dependency: transitive description: @@ -919,18 +911,18 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: eb1e00ab44303d50dd487aab67ebc575456c146c6af44422f9c13889984c00f3 + sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e" url: "https://pub.dev" source: hosted - version: "6.1.11" + version: "6.1.12" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "15f5acbf0dce90146a0f5a2c4a002b1814a6303c4c5c075aa2623b2d16156f03" + sha256: "3dd2388cc0c42912eee04434531a26a82512b9cb1827e0214430c9bcbddfe025" url: "https://pub.dev" source: hosted - version: "6.0.36" + version: "6.0.38" url_launcher_ios: dependency: transitive description: @@ -951,10 +943,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e" + sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.6" url_launcher_platform_interface: dependency: transitive description: @@ -967,18 +959,18 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "6bb1e5d7fe53daf02a8fee85352432a40b1f868a81880e99ec7440113d5cfcab" + sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 url: "https://pub.dev" source: hosted - version: "2.0.17" + version: "2.0.18" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "254708f17f7c20a9c8c471f67d86d76d4a3f9c1591aad1e15292008aceb82771" + sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.0.7" uuid: dependency: transitive description: @@ -1015,18 +1007,18 @@ packages: dependency: transitive description: name: win32 - sha256: dfdf0136e0aa7a1b474ea133e67cb0154a0acd2599c4f3ada3b49d38d38793ee + sha256: f2add6fa510d3ae152903412227bda57d0d5a8da61d2c39c1fb022c9429a41c0 url: "https://pub.dev" source: hosted - version: "5.0.5" + version: "5.0.6" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + sha256: f0c26453a2d47aa4c2570c6a033246a3fc62da2fe23c7ffdd0a7495086dc0247 url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.2" xml: dependency: transitive description: @@ -1040,7 +1032,7 @@ packages: description: path: "." ref: master - resolved-ref: "937c25f58904432a4eb478a8b7f81bc012d20027" + resolved-ref: dc27e3c4e967dccdcae2c2efac2cde4e77ea1ff2 url: "https://github.com/lollipopkit/xterm.dart" source: git version: "3.6.1-pre"