Remove legacy interop use (conditional import on dart.library.html) (#1102)
diff --git a/protobuf/CHANGELOG.md b/protobuf/CHANGELOG.md index b1b33df..235bf31 100644 --- a/protobuf/CHANGELOG.md +++ b/protobuf/CHANGELOG.md
@@ -3,6 +3,7 @@ * Make `BuilderInfo` methods accept `GeneratedMessage Function()` typed closures. * Make `BuilderInfo.add` accept nullable name (for tree shaking purposes). +* Remove use of legacy `dart.library.html` conditional import. ## 6.0.0
diff --git a/protobuf/lib/src/protobuf/json/json.dart b/protobuf/lib/src/protobuf/json/json.dart index c84239b..3b52bbc 100644 --- a/protobuf/lib/src/protobuf/json/json.dart +++ b/protobuf/lib/src/protobuf/json/json.dart
@@ -11,10 +11,32 @@ import '../pb_map.dart'; import '../utils.dart'; +import 'json_vm.dart' as vm; +import 'json_vm.dart' if (dart.library.js_interop) 'json_web.dart' as web; + // Use json_vm.dart with VM and dart2wasm, json_web.dart with dart2js. // json_web.dart uses JS interop for parsing, and JS interop is too slow on // Wasm. VM's patch performs better in Wasm. -export 'json_vm.dart' if (dart.library.html) 'json_web.dart'; +String writeToJsonString(FieldSet fs) { + if (const bool.fromEnvironment('dart.tool.dart2js')) { + return web.writeToJsonString(fs); + } else { + return vm.writeToJsonString(fs); + } +} + +/// Merge fields from a [json] string. +void mergeFromJsonString( + FieldSet fs, + String json, + ExtensionRegistry? registry, +) { + if (const bool.fromEnvironment('dart.tool.dart2js')) { + web.mergeFromJsonString(fs, json, registry); + } else { + vm.mergeFromJsonString(fs, json, registry); + } +} Map<String, dynamic> writeToJsonMap(FieldSet fs) { dynamic convertToMap(dynamic fieldValue, int fieldType) {