Skip to content

Commit 444e996

Browse files
Remove external libraries from server dependency (#16)
* Remove uuid and quiver dependency * Remove json_serializable and json_annotation dependencies * bump version --------- Co-authored-by: saikrishna321 <saikrishna321@yahoo.com>
1 parent 712ded3 commit 444e996

37 files changed

+315
-598
lines changed

demo-app/pubspec.lock

Lines changed: 1 addition & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ packages:
2323
path: "../server"
2424
relative: true
2525
source: path
26-
version: "0.0.11"
26+
version: "0.0.13"
2727
args:
2828
dependency: transitive
2929
description:
@@ -120,14 +120,6 @@ packages:
120120
url: "https://pub.dev"
121121
source: hosted
122122
version: "3.0.3"
123-
csv:
124-
dependency: transitive
125-
description:
126-
name: csv
127-
sha256: c6aa2679b2a18cb57652920f674488d89712efaf4d3fdf2e537215b35fc19d6c
128-
url: "https://pub.dev"
129-
source: hosted
130-
version: "6.0.0"
131123
cupertino_icons:
132124
dependency: "direct main"
133125
description:
@@ -136,14 +128,6 @@ packages:
136128
url: "https://pub.dev"
137129
source: hosted
138130
version: "1.0.8"
139-
dart_ping:
140-
dependency: transitive
141-
description:
142-
name: dart_ping
143-
sha256: "2f5418d0a5c64e53486caaac78677b25725b1e13c33c5be834ce874ea18bd24f"
144-
url: "https://pub.dev"
145-
source: hosted
146-
version: "9.0.1"
147131
dart_style:
148132
dependency: transitive
149133
description:
@@ -176,14 +160,6 @@ packages:
176160
url: "https://pub.dev"
177161
source: hosted
178162
version: "7.0.0"
179-
fixnum:
180-
dependency: transitive
181-
description:
182-
name: fixnum
183-
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
184-
url: "https://pub.dev"
185-
source: hosted
186-
version: "1.1.0"
187163
flutter:
188164
dependency: "direct main"
189165
description: flutter
@@ -358,22 +334,6 @@ packages:
358334
url: "https://pub.dev"
359335
source: hosted
360336
version: "1.0.0"
361-
multicast_dns:
362-
dependency: transitive
363-
description:
364-
name: multicast_dns
365-
sha256: "316cc47a958d4bd3c67bd238fe8b44fdfb6133bad89cb191c0c3bd3edb14e296"
366-
url: "https://pub.dev"
367-
source: hosted
368-
version: "0.3.2+6"
369-
network_tools:
370-
dependency: transitive
371-
description:
372-
name: network_tools
373-
sha256: cf5726a3c3edd82de5f6d6511cb618259a083225ccc2bdb8a55d87b37014cadf
374-
url: "https://pub.dev"
375-
source: hosted
376-
version: "5.0.2"
377337
package_config:
378338
dependency: transitive
379339
description:
@@ -526,14 +486,6 @@ packages:
526486
url: "https://pub.dev"
527487
source: hosted
528488
version: "5.0.2"
529-
process_run:
530-
dependency: transitive
531-
description:
532-
name: process_run
533-
sha256: "8d9c6198b98fbbfb511edd42e7364e24d85c163e47398919871b952dc86a423e"
534-
url: "https://pub.dev"
535-
source: hosted
536-
version: "0.14.2"
537489
pub_semver:
538490
dependency: transitive
539491
description:
@@ -558,14 +510,6 @@ packages:
558510
url: "https://pub.dev"
559511
source: hosted
560512
version: "3.2.1"
561-
sembast:
562-
dependency: transitive
563-
description:
564-
name: sembast
565-
sha256: "2a768b145bee5c72ae78c2641842ee348a6d345172af1070a497293c44f65ae1"
566-
url: "https://pub.dev"
567-
source: hosted
568-
version: "3.7.1+2"
569513
shelf:
570514
dependency: transitive
571515
description:
@@ -643,14 +587,6 @@ packages:
643587
url: "https://pub.dev"
644588
source: hosted
645589
version: "1.10.0"
646-
sprintf:
647-
dependency: transitive
648-
description:
649-
name: sprintf
650-
sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
651-
url: "https://pub.dev"
652-
source: hosted
653-
version: "7.0.0"
654590
stack_trace:
655591
dependency: transitive
656592
description:
@@ -723,14 +659,6 @@ packages:
723659
url: "https://pub.dev"
724660
source: hosted
725661
version: "1.3.2"
726-
universal_io:
727-
dependency: transitive
728-
description:
729-
name: universal_io
730-
sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad"
731-
url: "https://pub.dev"
732-
source: hosted
733-
version: "2.2.2"
734662
url_launcher:
735663
dependency: "direct main"
736664
description:
@@ -795,14 +723,6 @@ packages:
795723
url: "https://pub.dev"
796724
source: hosted
797725
version: "3.1.1"
798-
uuid:
799-
dependency: transitive
800-
description:
801-
name: uuid
802-
sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8"
803-
url: "https://pub.dev"
804-
source: hosted
805-
version: "4.4.0"
806726
vector_math:
807727
dependency: transitive
808728
description:

server/lib/src/driver.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import 'package:appium_flutter_server/src/exceptions/no_driver_exception.dart';
22
import 'package:appium_flutter_server/src/models/session.dart';
3+
import 'package:appium_flutter_server/src/utils/test_utils.dart';
34
import 'package:flutter_test/flutter_test.dart';
45
import 'package:integration_test/integration_test.dart';
56
import 'package:package_info_plus/package_info_plus.dart';
6-
import 'package:uuid/uuid.dart';
77

88
class FlutterDriver {
99
late WidgetTester _tester;
@@ -24,17 +24,17 @@ class FlutterDriver {
2424

2525
void initialize(
2626
{required WidgetTester tester,
27-
required IntegrationTestWidgetsFlutterBinding binding,
28-
required PackageInfo appInfo,
29-
required String serverVersion}) async {
27+
required IntegrationTestWidgetsFlutterBinding binding,
28+
required PackageInfo appInfo,
29+
required String serverVersion}) async {
3030
_tester = tester;
3131
_binding = binding;
3232
_appInfo = appInfo;
3333
_serverVersion = serverVersion;
3434
}
3535

3636
String initializeSession(Map<String, dynamic> capabilities) {
37-
_session = Session(const Uuid().v4(), capabilities);
37+
_session = Session(generateUUID(), capabilities);
3838
return _session!.sessionId;
3939
}
4040

server/lib/src/handler/get_rect.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'dart:math';
21

32
import 'package:appium_flutter_server/src/driver.dart';
43
import 'package:appium_flutter_server/src/handler/request/request_handler.dart';

server/lib/src/handler/get_size.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'dart:math';
21

32
import 'package:appium_flutter_server/src/driver.dart';
43
import 'package:appium_flutter_server/src/handler/request/request_handler.dart';

server/lib/src/handler/wait/base_wait.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@ import 'package:appium_flutter_server/src/models/api/wait.dart';
77
import 'package:appium_flutter_server/src/utils/element_helper.dart';
88
import 'package:flutter_test/flutter_test.dart';
99

10-
import 'package:uuid/uuid.dart';
11-
1210
abstract class BaseWaithHandler extends RequestHandler {
13-
static final Duration defaultWaitTimeout = Duration(seconds: 5);
11+
static const Duration defaultWaitTimeout = Duration(seconds: 5);
1412

1513
BaseWaithHandler(super.route);
1614

@@ -25,7 +23,7 @@ abstract class BaseWaithHandler extends RequestHandler {
2523
if (model.locator != null) {
2624
Finder finder = await ElementHelper.locateElement(model.locator!,
2725
evaluatePresence: false);
28-
return FlutterElement(finder, Uuid().v4());
26+
return FlutterElement.fromBy(finder);
2927
}
3028
throw FlutterAutomationException(
3129
"Wait method requires a valid element id or locator strategy");

server/lib/src/internal/element_cache.dart

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
import 'package:appium_flutter_server/src/exceptions/stale_element_reference_exception.dart';
22
import 'package:appium_flutter_server/src/internal/flutter_element.dart';
33
import 'package:appium_flutter_server/src/internal/flutter_finder_strategy.dart';
4+
import 'package:appium_flutter_server/src/internal/lru_cache.dart';
45
import 'package:appium_flutter_server/src/logger.dart';
5-
import 'package:appium_flutter_server/src/utils/element_helper.dart';
6+
import 'package:appium_flutter_server/src/utils/test_utils.dart';
67
import 'package:flutter/widgets.dart';
78
import 'package:flutter_test/flutter_test.dart';
89
import 'package:synchronized/extension.dart';
9-
import 'package:quiver/collection.dart';
1010

1111
class ElementsCache {
12-
late LruMap<String, FlutterElement> cache;
12+
late LRUCache<String, FlutterElement> cache;
1313

1414
ElementsCache(int cacheSize) {
15-
cache = LruMap(maximumSize: cacheSize);
15+
cache = LRUCache(cacheSize);
1616
}
1717

1818
Future<FlutterElement> get(String id, {bool evaluatePresence = true}) async {
1919
return synchronized(() async {
20-
FlutterElement? element = cache[id];
20+
FlutterElement? element = cache.get(id);
2121
if (element == null) {
2222
try {
2323
element = await FlutterFinderStrategy.findElement(id);
@@ -44,8 +44,8 @@ class ElementsCache {
4444
{bool isSingle = true, String? contextId}) {
4545
return synchronized(() {
4646
FlutterElement flutterElement = FlutterElement.childElement(
47-
by, ElementHelper.generateUuid(by), contextId);
48-
cache[flutterElement.id] = flutterElement;
47+
by, generateUUIDFromFinder(by), contextId);
48+
cache.put(flutterElement.id, flutterElement);
4949
return flutterElement;
5050
});
5151
}

server/lib/src/internal/flutter_element.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import 'package:appium_flutter_server/src/utils/test_utils.dart';
12
import 'package:flutter_test/flutter_test.dart';
2-
import 'package:uuid/uuid.dart';
33

44
class FlutterElement {
55
final Finder _by;
@@ -8,7 +8,7 @@ class FlutterElement {
88

99
FlutterElement(this._by, this._id);
1010

11-
FlutterElement.fromBy({required Finder by}) : this(by, Uuid().v4());
11+
FlutterElement.fromBy(Finder by) : this(by, generateUUIDFromFinder(by));
1212

1313
FlutterElement.childElement(
1414
this._by,

server/lib/src/internal/flutter_finder_strategy.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import 'package:appium_flutter_server/src/logger.dart';
77
import 'package:flutter/foundation.dart';
88
import 'package:flutter/widgets.dart';
99
import 'package:flutter_test/flutter_test.dart';
10-
import 'package:uuid/uuid.dart';
1110

1211
class FlutterFinderStrategy {
1312
static Future<FlutterElement> findElement(String elementId) async {
@@ -59,8 +58,7 @@ class FlutterFinderStrategy {
5958
"Unable to locate element with strategy: ${strategy['finderType']}");
6059
}
6160

62-
return FlutterElement(
63-
ensureElementPresent ? by.at(0) : by, const Uuid().v4());
61+
return FlutterElement.fromBy(ensureElementPresent ? by.at(0) : by);
6462
}
6563

6664
static Finder? _byValueKey(Map<String, dynamic> strategy) {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import 'dart:collection';
2+
3+
class LRUCache<K, V> {
4+
final int _capacity;
5+
final Map<K, V> _cache = LinkedHashMap<K, V>();
6+
7+
LRUCache(this._capacity);
8+
9+
void put(K key, V value) {
10+
if (_cache.containsKey(key)) {
11+
_cache.remove(key);
12+
} else if (_cache.length >= _capacity) {
13+
var oldestKey = _cache.keys.first;
14+
_cache.remove(oldestKey);
15+
}
16+
_cache[key] = value;
17+
}
18+
19+
V? get(K key) {
20+
if (_cache.containsKey(key)) {
21+
var value = _cache.remove(key)!;
22+
_cache[key] = value;
23+
return value;
24+
}
25+
return null;
26+
}
27+
}
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
import 'package:json_annotation/json_annotation.dart';
2-
3-
part 'generated/create_session.g.dart';
4-
5-
@JsonSerializable()
61
class CreateSessionModel {
72
Map<String, dynamic>? capabilities;
83
CreateSessionModel({required this.capabilities});
94

105
factory CreateSessionModel.fromJson(Map<String, dynamic> json) =>
11-
_$CreateSessionModelFromJson(json);
6+
CreateSessionModel(
7+
capabilities: json['capabilities'] as Map<String, dynamic>?,
8+
);
129

13-
Map<String, dynamic> toJson() => _$CreateSessionModelToJson(this);
10+
Map<String, dynamic> toJson() => <String, dynamic>{
11+
'capabilities': capabilities,
12+
};
1413
}
Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
1-
import 'package:appium_flutter_server/src/models/api/find_element.dart';
2-
import 'package:json_annotation/json_annotation.dart';
31
import 'package:appium_flutter_server/src/models/api/element.dart';
42

5-
part 'generated/drag_drop.g.dart';
6-
7-
@JsonSerializable()
83
class DragAndDropModel {
94
ElementModel source;
105
ElementModel target;
116
int? dragDuration;
127

138
DragAndDropModel(
14-
{required this.source,
15-
required this.target,
16-
this.dragDuration});
9+
{required this.source, required this.target, this.dragDuration});
1710

1811
factory DragAndDropModel.fromJson(Map<String, dynamic> json) =>
19-
_$DragAndDropModelFromJson(json);
12+
DragAndDropModel(
13+
source: ElementModel.fromJson(json['source'] as Map<String, dynamic>),
14+
target: ElementModel.fromJson(json['target'] as Map<String, dynamic>),
15+
dragDuration: (json['dragDuration'] as num?)?.toInt(),
16+
);
2017

21-
Map<String, dynamic> toJson() => _$DragAndDropModelToJson(this);
18+
Map<String, dynamic> toJson() => <String, dynamic>{
19+
'source': source,
20+
'target': target,
21+
'dragDuration': dragDuration,
22+
};
2223
}

0 commit comments

Comments
 (0)