blob: 0a492b98ff9eb7bda6033d3b45cafafe818a2ad4 [file] [log] [blame] [edit]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:collection/collection.dart';
import '../utils/json.dart';
import '../utils/map.dart';
class Metadata {
final Map<String, Object> metadata;
const Metadata(this.metadata);
factory Metadata.fromJson(Map<Object?, Object?>? jsonMap) =>
Metadata(jsonMap?.formatCast<String, Object>() ?? {});
Map<String, Object> toJson() => metadata..sortOnKey();
@override
bool operator ==(Object other) {
if (other is! Metadata) {
return false;
}
return const DeepCollectionEquality().equals(other.metadata, metadata);
}
@override
int get hashCode => const DeepCollectionEquality().hash(metadata);
@override
String toString() => 'Metadata(${toJson()})';
}