Skip to content

Commit e6fa07d

Browse files
authored
chore(): Migrate to js_interop (#6162)
1 parent 5b6de63 commit e6fa07d

File tree

110 files changed

+787
-1652
lines changed

Some content is hidden

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

110 files changed

+787
-1652
lines changed

actions/lib/src/node/actions/exec.dart

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33

44
import 'dart:convert';
55
import 'dart:js_interop';
6-
//ignore: deprecated_member_use
7-
import 'dart:js_util';
86

97
@JS()
108
external Exec get exec;
@@ -46,9 +44,14 @@ extension type Exec._(JSObject it) {
4644
ignoreReturnCode: !failOnNonZeroExit,
4745
);
4846
try {
49-
final exitCode = await promiseToFuture<int>(
50-
_exec(commandLine, args.map((arg) => arg.toJS).toList().toJS, options),
51-
);
47+
final jsExitCode =
48+
await _exec(
49+
commandLine,
50+
args.map((arg) => arg.toJS).toList().toJS,
51+
options,
52+
).toDart;
53+
54+
final exitCode = (jsExitCode as JSNumber).toDartInt;
5255
return ExecResult(
5356
exitCode: exitCode,
5457
stdout: stdout.toString(),

actions/lib/src/node/actions/http_request.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
import 'dart:js_interop';
55

6+
import 'package:web/web.dart';
7+
68
@JS()
79
extension type HttpClient._(JSObject it) {
810
external HttpClient([
@@ -18,7 +20,11 @@ extension type HttpClient._(JSObject it) {
1820
String requestUrl, {
1921
Map<String, String> headers = const {},
2022
}) async {
21-
final jsHeaders = headers.jsify() as JSObject;
23+
final jsHeaders = Headers();
24+
for(final entry in headers.entries) {
25+
jsHeaders.append(entry.key, entry.value);
26+
}
27+
2228
final response = await _getJson(requestUrl, jsHeaders).toDart;
2329
final result = response as TypedResponse<JSObject>;
2430
if (result.statusCode != 200) {

actions/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ dependencies:
1818
source_maps: ^0.10.12
1919
stack_trace: ^1.10.0
2020
stream_transform: ^2.1.0
21+
web: ^1.1.1
2122

2223
dev_dependencies:
2324
amplify_lints: ^3.0.0

packages/amplify_core/lib/src/platform/platform.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33

44
export 'platform_stub.dart'
55
if (dart.library.io) 'platform_io.dart'
6-
if (dart.library.html) 'platform_html.dart';
6+
if (dart.library.js_interop) 'platform_html.dart';

packages/amplify_core/lib/src/platform/platform_html.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

4-
//ignore: deprecated_member_use
5-
import 'dart:html';
4+
import 'package:web/web.dart';
65

76
final RegExp _edgeRegex = RegExp(r'Edg/[\d\.]+');
87
final RegExp _operaRegex = RegExp(r'OPR/[\d\.]+');

packages/amplify_core/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ dependencies:
2121
retry: ^3.1.0
2222
stack_trace: ^1.10.0
2323
uuid: ">=3.0.6 <5.0.0"
24+
web: ^1.1.1
2425

2526
dev_dependencies:
2627
amplify_lints: ">=3.1.2 <3.2.0"

packages/analytics/amplify_analytics_pinpoint/lib/src/device_context_info_provider/device_info_provider/device_info_provider.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
export 'device_info_provider_stub.dart'
5-
if (dart.library.html) 'device_info_provider_html.dart'
5+
if (dart.library.js_interop) 'device_info_provider_html.dart'
66
if (dart.library.io) 'device_info_provider_io.dart';

packages/analytics/amplify_analytics_pinpoint/lib/src/flutter_path_provider/flutter_path_provider.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
export 'flutter_path_provider_stub.dart'
5-
if (dart.library.html) 'flutter_path_provider_html.dart'
5+
if (dart.library.js_interop) 'flutter_path_provider_html.dart'
66
if (dart.library.io) 'flutter_path_provider_io.dart';

packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/event_client/queued_item_store/dart_queued_item_store.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
export 'dart_queued_item_store.stub.dart'
5-
if (dart.library.html) 'dart_queued_item_store.web.dart'
5+
if (dart.library.js_interop) 'dart_queued_item_store.web.dart'
66
if (dart.library.io) 'dart_queued_item_store.vm.dart';

packages/analytics/amplify_analytics_pinpoint_dart/lib/src/impl/analytics_client/event_client/queued_item_store/index_db/indexed_db_adapter.dart

Lines changed: 46 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
import 'dart:async';
5-
//ignore: deprecated_member_use
6-
import 'dart:js_util';
5+
import 'dart:js_interop';
6+
import 'dart:js_interop_unsafe';
77

88
import 'package:amplify_analytics_pinpoint_dart/src/impl/analytics_client/event_client/queued_item_store/queued_item_store.dart';
99
import 'package:amplify_core/amplify_core.dart';
1010
// ignore: implementation_imports
1111
import 'package:aws_common/src/js/indexed_db.dart';
1212
import 'package:collection/collection.dart';
13+
import 'package:web/web.dart';
1314

1415
// TODO(kylechen): Consider merging/refactoring with existing 'amplify_secure_storage_web - _IndexedDBStorage' class
1516
/// {@template amplify_analytics_pinpoint_dart.indexed_db_adapter}
@@ -39,36 +40,43 @@ class IndexedDbAdapter implements QueuedItemStore {
3940
if (db == null) {
4041
throw const InvalidStateException('IndexedDB is not available');
4142
}
43+
void onUpgradeNeeded(IDBVersionChangeEvent event) {
44+
final database = event.target?.getProperty<IDBDatabase>('result'.toJS);
45+
final objectStoreNames = database?.objectStoreNames;
46+
if (!(objectStoreNames?.contains(storeName) ?? false)) {
47+
database?.createObjectStore(
48+
storeName,
49+
IDBObjectStoreParameters(keyPath: 'id'.toJS, autoIncrement: true),
50+
);
51+
}
52+
}
53+
4254
final openRequest = db.open(databaseName, 1)
43-
..onupgradeneeded = (event) {
44-
final database = event.target.result;
45-
final objectStoreNames = database.objectStoreNames;
46-
if (!objectStoreNames.contains(storeName)) {
47-
database.createObjectStore(
48-
storeName,
49-
keyPath: 'id',
50-
autoIncrement: true,
51-
);
52-
}
53-
};
54-
_database = await openRequest.future;
55+
..onupgradeneeded = onUpgradeNeeded.toJS;
56+
57+
final result = await openRequest.future;
58+
if (result.isA<IDBDatabase>()) {
59+
result as IDBDatabase;
60+
_database = result;
61+
} else {
62+
throw const InvalidStateException('IDBOpenDBRequest failed');
63+
}
5564
}
5665

5766
/// Returns a new [IDBObjectStore] instance after waiting for initialization
5867
/// to complete.
5968
IDBObjectStore _getObjectStore() {
60-
final transaction = _database.transaction(
61-
storeName,
62-
mode: IDBTransactionMode.readwrite,
63-
);
69+
final transaction = _database.transaction(storeName.toJS, 'readwrite');
6470
final store = transaction.objectStore(storeName);
6571
return store;
6672
}
6773

6874
@override
6975
Future<void> addItem(String string) async {
7076
await _databaseOpenEvent;
71-
await _getObjectStore().push({'value': string}).future;
77+
final item = JSObject()..setProperty('value'.toJS, string.toJS);
78+
79+
await _getObjectStore().add(item).future;
7280
}
7381

7482
@override
@@ -77,14 +85,26 @@ class IndexedDbAdapter implements QueuedItemStore {
7785

7886
await _databaseOpenEvent;
7987
final store = _getObjectStore();
80-
final request = store.getAll(null, count);
88+
89+
late IDBRequest request;
90+
if (count == null) {
91+
request = store.getAll();
92+
} else {
93+
request = store.getAll(null, count);
94+
}
8195

8296
await request.future;
97+
final jsResult = request.result;
98+
var result = <JSObject>[];
99+
if (jsResult.isA<JSArray<JSObject>>()) {
100+
jsResult as JSArray<JSObject>;
101+
result = jsResult.toDart;
102+
}
103+
104+
for (final elem in result) {
105+
final id = elem.getProperty<JSNumber>('id'.toJS).toDartInt;
106+
final string = elem.getProperty<JSString>('value'.toJS).toDart;
83107

84-
for (final elem in request.result) {
85-
final value = elem as Object;
86-
final id = getProperty<int>(value, 'id');
87-
final string = getProperty<String>(value, 'value');
88108
readValues.add(QueuedItem(id: id, value: string));
89109
}
90110
return readValues;
@@ -101,10 +121,8 @@ class IndexedDbAdapter implements QueuedItemStore {
101121

102122
final ranges = idsToDelete
103123
.splitBetween((a, b) => b != a + 1)
104-
.map((range) => IDBKeyRange.bound(range.first, range.last));
105-
await Future.wait<void>(
106-
ranges.map((range) => store.deleteByKeyRange(range).future),
107-
);
124+
.map((range) => IDBKeyRange.bound(range.first.toJS, range.last.toJS));
125+
await Future.wait<void>(ranges.map((range) => store.delete(range).future));
108126
}
109127

110128
/// Clear the database.

0 commit comments

Comments
 (0)