From f43110ee528c8914e2fa58c3bf67e13bfbd4180f Mon Sep 17 00:00:00 2001 From: Herbert Poul Date: Sat, 22 May 2021 11:59:51 +0200 Subject: [PATCH] fix all analysis warnings. --- bin/kdbx.dart | 2 - example/pubspec.lock | 92 ++++++++++++--------------- example/pubspec.yaml | 2 +- lib/src/crypto/key_encrypter_kdf.dart | 6 +- lib/src/internal/async_utils.dart | 4 +- lib/src/internal/crypto_utils.dart | 1 - lib/src/kdbx_binary.dart | 4 +- lib/src/kdbx_custom_data.dart | 2 +- lib/src/kdbx_dao.dart | 5 +- lib/src/kdbx_entry.dart | 4 -- lib/src/kdbx_format.dart | 15 +---- lib/src/kdbx_group.dart | 2 - lib/src/kdbx_header.dart | 11 ++-- lib/src/kdbx_meta.dart | 20 +++--- lib/src/kdbx_object.dart | 6 +- lib/src/kdbx_times.dart | 3 +- lib/src/kdbx_var_dictionary.dart | 3 +- lib/src/kdbx_xml.dart | 17 ++--- lib/src/utils/byte_utils.dart | 3 +- test/kdbx_test.dart | 3 - test/kdbx_upgrade_test.dart | 1 - test/var_dictionary_test.dart | 2 +- 22 files changed, 76 insertions(+), 132 deletions(-) diff --git a/bin/kdbx.dart b/bin/kdbx.dart index b3724e8..ed8afe5 100644 --- a/bin/kdbx.dart +++ b/bin/kdbx.dart @@ -5,8 +5,6 @@ import 'package:argon2_ffi_base/argon2_ffi_base.dart'; import 'package:args/args.dart'; import 'package:args/command_runner.dart'; import 'package:kdbx/kdbx.dart'; -import 'package:kdbx/src/crypto/protected_value.dart'; -import 'package:kdbx/src/kdbx_format.dart'; import 'package:kdbx/src/utils/print_utils.dart'; import 'package:logging/logging.dart'; import 'package:logging_appenders/logging_appenders.dart'; diff --git a/example/pubspec.lock b/example/pubspec.lock index dd5c757..3d1c671 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -7,14 +7,14 @@ packages: name: archive url: "https://pub.dartlang.org" source: hosted - version: "2.0.13" + version: "3.1.2" argon2_ffi_base: dependency: transitive description: name: argon2_ffi_base url: "https://pub.dartlang.org" source: hosted - version: "0.1.4+6" + version: "1.0.0+2" args: dependency: transitive description: @@ -28,21 +28,21 @@ packages: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.1.3" + version: "1.2.0" clock: dependency: transitive description: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.1.0" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.13" + version: "1.15.0" convert: dependency: transitive description: @@ -56,77 +56,63 @@ packages: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "2.1.5" - cryptography: - dependency: transitive - description: - name: cryptography - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.2" + version: "3.0.1" dio: dependency: transitive description: name: dio url: "https://pub.dartlang.org" source: hosted - version: "3.0.10" + version: "4.0.0" ffi: dependency: transitive description: name: ffi url: "https://pub.dartlang.org" source: hosted - version: "0.1.3" + version: "1.0.0" http_parser: dependency: transitive description: name: http_parser url: "https://pub.dartlang.org" source: hosted - version: "3.1.4" + version: "4.0.0" intl: dependency: transitive description: name: intl url: "https://pub.dartlang.org" source: hosted - version: "0.16.1" - io: - dependency: transitive - description: - name: io - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.4" - isolate: + version: "0.17.0" + isolates: dependency: transitive description: - name: isolate + name: isolates url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "3.0.3+8" kdbx: dependency: "direct main" description: path: ".." relative: true source: path - version: "0.4.1" + version: "1.0.0" logging: dependency: transitive description: name: logging url: "https://pub.dartlang.org" source: hosted - version: "0.11.4" + version: "1.0.1" logging_appenders: dependency: transitive description: name: logging_appenders url: "https://pub.dartlang.org" source: hosted - version: "0.4.2+5" + version: "1.0.0" matcher: dependency: transitive description: @@ -140,14 +126,14 @@ packages: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.2.2" + version: "1.3.0" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.8.0" pedantic: dependency: "direct dev" description: @@ -168,14 +154,7 @@ packages: name: pointycastle url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" - prompts: - dependency: transitive - description: - name: prompts - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "3.0.1" quiver: dependency: transitive description: @@ -183,20 +162,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.3" - rxdart: - dependency: transitive - description: - name: rxdart - url: "https://pub.dartlang.org" - source: hosted - version: "0.24.1" source_span: dependency: transitive description: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.8.1" stack_trace: dependency: transitive description: @@ -210,28 +182,42 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "1.1.0" + supercharged_dart: + dependency: transitive + description: + name: supercharged_dart + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" uuid: dependency: transitive description: name: uuid url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "3.0.4" xml: dependency: transitive description: @@ -240,4 +226,4 @@ packages: source: hosted version: "4.4.1" sdks: - dart: ">=2.8.0 <3.0.0" + dart: ">=2.12.0 <3.0.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 21fa7af..c4561c3 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -12,4 +12,4 @@ dependencies: path: ../ dev_dependencies: - pedantic: ^1.9.2 + pedantic: '>=1.7.0 <2.0.0' diff --git a/lib/src/crypto/key_encrypter_kdf.dart b/lib/src/crypto/key_encrypter_kdf.dart index 3d60420..144f8b8 100644 --- a/lib/src/crypto/key_encrypter_kdf.dart +++ b/lib/src/crypto/key_encrypter_kdf.dart @@ -5,8 +5,8 @@ import 'package:argon2_ffi_base/argon2_ffi_base.dart'; import 'package:crypto/crypto.dart' as crypto; import 'package:isolates/isolate_runner.dart'; import 'package:kdbx/kdbx.dart'; -import 'package:kdbx/src/utils/byte_utils.dart'; import 'package:kdbx/src/kdbx_var_dictionary.dart'; +import 'package:kdbx/src/utils/byte_utils.dart'; import 'package:logging/logging.dart'; import 'package:pointycastle/export.dart'; @@ -98,12 +98,12 @@ class KeyEncrypterKdf { case KdfType.Argon2: _logger.fine('Must be using argon2'); return await encryptArgon2(key, kdfParameters); - break; case KdfType.Aes: _logger.fine('Must be using aes'); return await encryptAes(key, kdfParameters); + default: + throw UnsupportedError('unsupported KDF Type $kdfType.'); } - throw UnsupportedError('unsupported KDF Type $kdfType.'); } Future encryptArgon2( diff --git a/lib/src/internal/async_utils.dart b/lib/src/internal/async_utils.dart index 9171458..9a7d703 100644 --- a/lib/src/internal/async_utils.dart +++ b/lib/src/internal/async_utils.dart @@ -9,9 +9,7 @@ mixin StreamSubscriberBase { /// Listens to a stream and saves it to the list of subscriptions. void listen(Stream stream, void Function(dynamic data) onData, {Function? onError}) { - if (stream != null) { - _subscriptions.add(stream.listen(onData, onError: onError)); - } + _subscriptions.add(stream.listen(onData, onError: onError)); } void handle(StreamSubscription subscription) { diff --git a/lib/src/internal/crypto_utils.dart b/lib/src/internal/crypto_utils.dart index a6c51e2..cfc115c 100644 --- a/lib/src/internal/crypto_utils.dart +++ b/lib/src/internal/crypto_utils.dart @@ -49,7 +49,6 @@ class AesHelper { break; default: throw ArgumentError('incorrect value of the "mode" parameter'); - break; } cipher.init(false, params); diff --git a/lib/src/kdbx_binary.dart b/lib/src/kdbx_binary.dart index 5c37e60..8477fb6 100644 --- a/lib/src/kdbx_binary.dart +++ b/lib/src/kdbx_binary.dart @@ -2,10 +2,9 @@ import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; -import 'package:kdbx/src/utils/byte_utils.dart'; import 'package:kdbx/src/kdbx_header.dart'; import 'package:kdbx/src/kdbx_xml.dart'; -import 'package:meta/meta.dart'; +import 'package:kdbx/src/utils/byte_utils.dart'; import 'package:quiver/core.dart'; import 'package:xml/xml.dart'; @@ -43,7 +42,6 @@ class KdbxBinary { static KdbxBinary readBinaryXml(XmlElement valueNode, {required bool isInline}) { - assert(isInline != null); final isProtected = valueNode.getAttributeBool(KdbxXml.ATTR_PROTECTED); final isCompressed = valueNode.getAttributeBool(KdbxXml.ATTR_COMPRESSED); var value = base64.decode(valueNode.text.trim()); diff --git a/lib/src/kdbx_custom_data.dart b/lib/src/kdbx_custom_data.dart index d325b44..f5b9e59 100644 --- a/lib/src/kdbx_custom_data.dart +++ b/lib/src/kdbx_custom_data.dart @@ -1,7 +1,7 @@ +import 'package:kdbx/src/internal/extension_utils.dart'; import 'package:kdbx/src/kdbx_object.dart'; import 'package:kdbx/src/kdbx_xml.dart'; import 'package:xml/xml.dart' as xml; -import 'package:kdbx/src/internal/extension_utils.dart'; class KdbxCustomData extends KdbxNode { KdbxCustomData.create() diff --git a/lib/src/kdbx_dao.dart b/lib/src/kdbx_dao.dart index a0f8dac..a842291 100644 --- a/lib/src/kdbx_dao.dart +++ b/lib/src/kdbx_dao.dart @@ -2,7 +2,6 @@ import 'package:kdbx/src/kdbx_entry.dart'; import 'package:kdbx/src/kdbx_file.dart'; import 'package:kdbx/src/kdbx_group.dart'; import 'package:kdbx/src/kdbx_object.dart'; -import 'package:meta/meta.dart'; /// Helper object for accessing and modifing data inside /// a kdbx file. @@ -11,7 +10,6 @@ extension KdbxDao on KdbxFile { required KdbxGroup parent, required String name, }) { - assert(parent != null, name != null); final newGroup = KdbxGroup.create(ctx: ctx, parent: parent, name: name); parent.addGroup(newGroup); return newGroup; @@ -20,7 +18,7 @@ extension KdbxDao on KdbxFile { KdbxGroup findGroupByUuid(KdbxUuid? uuid) => body.rootGroup.getAllGroups().firstWhere((group) => group.uuid == uuid, orElse: (() => - throw StateError('Unable to find group with uuid $uuid')) as KdbxGroup Function()?); + throw StateError('Unable to find group with uuid $uuid'))); void deleteGroup(KdbxGroup group) { move(group, getRecycleBinOrCreate()); @@ -31,7 +29,6 @@ extension KdbxDao on KdbxFile { } void move(KdbxObject kdbxObject, KdbxGroup toGroup) { - assert(toGroup != null); kdbxObject.times.locationChanged.setToNow(); if (kdbxObject is KdbxGroup) { kdbxObject.parent!.internalRemoveGroup(kdbxObject); diff --git a/lib/src/kdbx_entry.dart b/lib/src/kdbx_entry.dart index 276dc29..be962ee 100644 --- a/lib/src/kdbx_entry.dart +++ b/lib/src/kdbx_entry.dart @@ -296,7 +296,6 @@ class KdbxEntry extends KdbxObject { StringValue? getString(KdbxKey key) => _strings[key]; void setString(KdbxKey key, StringValue? value) { - assert(key != null); if (_strings[key] == value) { _logger.finest('Value did not change for $key'); return; @@ -338,9 +337,6 @@ class KdbxEntry extends KdbxObject { required String name, required Uint8List bytes, }) { - assert(isProtected != null); - assert(bytes != null); - assert(name != null); // make sure we don't have a path, just the file name. final key = _uniqueBinaryName(path.basename(name)); final binary = KdbxBinary( diff --git a/lib/src/kdbx_format.dart b/lib/src/kdbx_format.dart index 670586a..1d100f2 100644 --- a/lib/src/kdbx_format.dart +++ b/lib/src/kdbx_format.dart @@ -11,18 +11,12 @@ import 'package:crypto/crypto.dart' as crypto; import 'package:kdbx/kdbx.dart'; import 'package:kdbx/src/crypto/key_encrypter_kdf.dart'; import 'package:kdbx/src/crypto/protected_salt_generator.dart'; -import 'package:kdbx/src/crypto/protected_value.dart'; import 'package:kdbx/src/internal/consts.dart'; import 'package:kdbx/src/internal/crypto_utils.dart'; import 'package:kdbx/src/internal/extension_utils.dart'; -import 'package:kdbx/src/kdbx_binary.dart'; import 'package:kdbx/src/kdbx_deleted_object.dart'; import 'package:kdbx/src/kdbx_entry.dart'; -import 'package:kdbx/src/kdbx_file.dart'; -import 'package:kdbx/src/kdbx_group.dart'; import 'package:kdbx/src/kdbx_header.dart'; -import 'package:kdbx/src/kdbx_meta.dart'; -import 'package:kdbx/src/kdbx_object.dart'; import 'package:kdbx/src/kdbx_xml.dart'; import 'package:kdbx/src/utils/byte_utils.dart'; import 'package:logging/logging.dart'; @@ -39,7 +33,7 @@ abstract class Credentials { Credentials.composite(password, null); //PasswordCredentials(password); factory Credentials.composite(ProtectedValue password, Uint8List? keyFile) => KeyFileComposite( - password: password == null ? null : PasswordCredentials(password), + password: PasswordCredentials(password), keyFile: keyFile == null ? null : KeyFileCredentials(keyFile), ); @@ -73,9 +67,7 @@ class KdbxReadWriteContext { KdbxReadWriteContext({ required List binaries, required this.header, - }) : assert(binaries != null), - assert(header != null), - _binaries = binaries, + }) : _binaries = binaries, _deletedObjects = []; static final kdbxContext = Expando(); @@ -129,7 +121,6 @@ class KdbxReadWriteContext { /// finds the ID of the given binary. /// if it can't be found, [KdbxCorruptedFileException] is thrown. int findBinaryId(KdbxBinary binary) { - assert(binary != null); assert(!binary.isInline!); final id = _binaries.indexOf(binary); if (id < 0) { @@ -818,7 +809,7 @@ class KdbxFormat { final deletedObjects = root .findElements(KdbxXml.NODE_DELETED_OBJECTS) .singleOrNull - ?.let((el) => el! + ?.let((el) => el .findElements(KdbxDeletedObject.NODE_NAME) .map((node) => KdbxDeletedObject.read(node, ctx))) ?? []; diff --git a/lib/src/kdbx_group.dart b/lib/src/kdbx_group.dart index 23b7835..602db3b 100644 --- a/lib/src/kdbx_group.dart +++ b/lib/src/kdbx_group.dart @@ -1,11 +1,9 @@ import 'package:kdbx/kdbx.dart'; import 'package:kdbx/src/internal/extension_utils.dart'; -import 'package:kdbx/src/kdbx_consts.dart'; import 'package:kdbx/src/kdbx_entry.dart'; import 'package:kdbx/src/kdbx_format.dart'; import 'package:kdbx/src/kdbx_xml.dart'; import 'package:logging/logging.dart'; -import 'package:meta/meta.dart'; import 'package:xml/xml.dart'; import 'kdbx_object.dart'; diff --git a/lib/src/kdbx_header.dart b/lib/src/kdbx_header.dart index 4d90840..a1f44d4 100644 --- a/lib/src/kdbx_header.dart +++ b/lib/src/kdbx_header.dart @@ -2,12 +2,11 @@ import 'dart:typed_data'; import 'package:crypto/crypto.dart' as crypto; import 'package:kdbx/src/crypto/key_encrypter_kdf.dart'; -import 'package:kdbx/src/utils/byte_utils.dart'; import 'package:kdbx/src/internal/consts.dart'; import 'package:kdbx/src/kdbx_binary.dart'; import 'package:kdbx/src/kdbx_var_dictionary.dart'; +import 'package:kdbx/src/utils/byte_utils.dart'; import 'package:logging/logging.dart'; -import 'package:meta/meta.dart'; import 'package:quiver/check.dart'; import 'package:quiver/core.dart'; @@ -482,7 +481,8 @@ class KdbxHeader { return Cipher.aes; } try { - return CryptoConsts.cipherFromBytes(fields[HeaderFields.CipherID]!.bytes!); + return CryptoConsts.cipherFromBytes( + fields[HeaderFields.CipherID]!.bytes!); } catch (e, stackTrace) { _logger.warning( 'Unable to find cipher. ' @@ -509,7 +509,7 @@ class KdbxHeader { final id = ReaderHelper.singleUint32(fields[HeaderFields.CompressionFlags]!.bytes); return _compressionIdsById[id] ?? - (() => throw KdbxUnsupportedException('invalid compression $id'))()!; + (() => throw KdbxUnsupportedException('invalid compression $id'))(); } ProtectedValueEncryption get innerRandomStreamEncryption => @@ -638,8 +638,7 @@ class InnerHeader { InnerHeader({ required this.fields, List? binaries, - }) : binaries = binaries ?? [], - assert(fields != null); + }) : binaries = binaries ?? []; factory InnerHeader.fromFields(Iterable fields) { final fieldMap = Map.fromEntries(fields diff --git a/lib/src/kdbx_meta.dart b/lib/src/kdbx_meta.dart index b53d26c..4d36108 100644 --- a/lib/src/kdbx_meta.dart +++ b/lib/src/kdbx_meta.dart @@ -9,13 +9,11 @@ import 'package:kdbx/src/kdbx_format.dart'; import 'package:kdbx/src/kdbx_header.dart'; import 'package:kdbx/src/kdbx_object.dart'; import 'package:kdbx/src/kdbx_xml.dart'; -import 'package:meta/meta.dart'; +import 'package:logging/logging.dart'; import 'package:quiver/iterables.dart'; import 'package:xml/xml.dart' as xml; import 'package:xml/xml.dart'; -import 'package:logging/logging.dart'; - final _logger = Logger('kdbx_meta'); class KdbxMeta extends KdbxNode implements KdbxNodeContext { @@ -41,12 +39,12 @@ class KdbxMeta extends KdbxNode implements KdbxNodeContext { KdbxMeta.read(xml.XmlElement node, this.ctx) : customData = node .singleElement('CustomData') - ?.let((e) => KdbxCustomData.read(e!)) ?? + ?.let((e) => KdbxCustomData.read(e)) ?? KdbxCustomData.create(), binaries = node .singleElement(KdbxXml.NODE_BINARIES) ?.let((el) sync* { - for (final binaryNode in el!.findElements(KdbxXml.NODE_BINARY)) { + for (final binaryNode in el.findElements(KdbxXml.NODE_BINARY)) { final id = int.parse(binaryNode.getAttribute(KdbxXml.ATTR_ID)!); yield MapEntry( id, @@ -54,9 +52,9 @@ class KdbxMeta extends KdbxNode implements KdbxNodeContext { ); } }) - ?.toList() - ?.let((binaries) { - binaries!.sort((a, b) => a.key.compareTo(b.key)); + .toList() + .let((binaries) { + binaries.sort((a, b) => a.key.compareTo(b.key)); for (var i = 0; i < binaries.length; i++) { if (i != binaries[i].key) { throw KdbxCorruptedFileException( @@ -69,7 +67,7 @@ class KdbxMeta extends KdbxNode implements KdbxNodeContext { _customIcons = node .singleElement(KdbxXml.NODE_CUSTOM_ICONS) ?.let((el) sync* { - for (final iconNode in el!.findElements(KdbxXml.NODE_ICON)) { + for (final iconNode in el.findElements(KdbxXml.NODE_ICON)) { yield KdbxCustomIcon( uuid: KdbxUuid( iconNode.singleTextNode(KdbxXml.NODE_UUID)), @@ -77,8 +75,8 @@ class KdbxMeta extends KdbxNode implements KdbxNodeContext { iconNode.singleTextNode(KdbxXml.NODE_DATA))); } }) - ?.map((e) => MapEntry(e.uuid, e)) - ?.let((that) => Map.fromEntries(that!)) ?? + .map((e) => MapEntry(e.uuid, e)) + .let((that) => Map.fromEntries(that)) ?? {}, super.read(node); diff --git a/lib/src/kdbx_object.dart b/lib/src/kdbx_object.dart index 3d9e21c..1a7f115 100644 --- a/lib/src/kdbx_object.dart +++ b/lib/src/kdbx_object.dart @@ -151,16 +151,14 @@ abstract class KdbxObject extends KdbxNode { this.file, String nodeName, KdbxGroup? parent, - ) : assert(ctx != null), - times = KdbxTimes.create(ctx), + ) : times = KdbxTimes.create(ctx), _parent = parent, super.create(nodeName) { _uuid.set(KdbxUuid.random()); } KdbxObject.read(this.ctx, KdbxGroup? parent, XmlElement node) - : assert(ctx != null), - times = KdbxTimes.read(node.findElements('Times').single, ctx), + : times = KdbxTimes.read(node.findElements('Times').single, ctx), _parent = parent, super.read(node); diff --git a/lib/src/kdbx_times.dart b/lib/src/kdbx_times.dart index f7d5a7a..094821a 100644 --- a/lib/src/kdbx_times.dart +++ b/lib/src/kdbx_times.dart @@ -2,11 +2,10 @@ import 'package:clock/clock.dart'; import 'package:kdbx/src/kdbx_format.dart'; import 'package:kdbx/src/kdbx_object.dart'; import 'package:kdbx/src/kdbx_xml.dart'; +import 'package:logging/logging.dart'; import 'package:quiver/iterables.dart'; import 'package:xml/xml.dart'; -import 'package:logging/logging.dart'; - final _logger = Logger('kdbx_times'); class KdbxTimes extends KdbxNode implements KdbxNodeContext { diff --git a/lib/src/kdbx_var_dictionary.dart b/lib/src/kdbx_var_dictionary.dart index f6c85c8..e22765e 100644 --- a/lib/src/kdbx_var_dictionary.dart +++ b/lib/src/kdbx_var_dictionary.dart @@ -88,8 +88,7 @@ class VarDictionaryItem { class VarDictionary { VarDictionary(List> items) - : assert(items != null), - _items = items, + : _items = items, _dict = Map.fromEntries(items.map((item) => MapEntry(item._key, item))); factory VarDictionary.read(ReaderHelper reader) { diff --git a/lib/src/kdbx_xml.dart b/lib/src/kdbx_xml.dart index 2185345..0a285a2 100644 --- a/lib/src/kdbx_xml.dart +++ b/lib/src/kdbx_xml.dart @@ -3,16 +3,15 @@ import 'dart:typed_data'; import 'package:clock/clock.dart'; import 'package:collection/collection.dart' show IterableExtension; +import 'package:kdbx/src/kdbx_consts.dart'; import 'package:kdbx/src/kdbx_format.dart'; import 'package:kdbx/src/kdbx_header.dart'; import 'package:kdbx/src/kdbx_object.dart'; import 'package:kdbx/src/utils/byte_utils.dart'; -import 'package:kdbx/src/kdbx_consts.dart'; +import 'package:logging/logging.dart'; import 'package:meta/meta.dart'; import 'package:xml/xml.dart'; -import 'package:logging/logging.dart'; - final _logger = Logger('kdbx_xml'); class KdbxXml { @@ -92,9 +91,8 @@ abstract class KdbxSubTextNode extends KdbxSubNode { @protected T decode(String value); - XmlElement? _opt(String nodeName) => node.node - .findElements(nodeName) - .singleWhereOrNull((x) => true); + XmlElement? _opt(String nodeName) => + node.node.findElements(nodeName).singleWhereOrNull((x) => true); void setOnModifyListener(void Function() onModify) { _onModify = onModify; @@ -192,7 +190,7 @@ class IconNode extends KdbxSubTextNode { } class KdbxColor { - const KdbxColor._fromRgbCode(this._rgb) : assert(_rgb != null && _rgb != ''); + const KdbxColor._fromRgbCode(this._rgb) : assert(_rgb != ''); const KdbxColor._nullColor() : _rgb = ''; factory KdbxColor.parse(String rgb) => @@ -220,7 +218,7 @@ class BooleanNode extends KdbxSubTextNode { @override bool? decode(String value) { - switch (value?.toLowerCase()) { + switch (value.toLowerCase()) { case 'null': return null; case 'true': @@ -252,9 +250,6 @@ class DateTimeUtcNode extends KdbxSubTextNode { @override DateTime? decode(String value) { - if (value == null) { - return null; - } if (value.isEmpty) { _logger.warning('time contains empty string. $name'); return null; diff --git a/lib/src/utils/byte_utils.dart b/lib/src/utils/byte_utils.dart index 58d3596..27d4133 100644 --- a/lib/src/utils/byte_utils.dart +++ b/lib/src/utils/byte_utils.dart @@ -1,5 +1,4 @@ import 'dart:convert'; -import 'dart:io'; import 'dart:math'; import 'dart:typed_data'; @@ -32,7 +31,7 @@ class ByteUtils { static String toHex(int val) => '0x${val.toRadixString(16).padLeft(2, '0')}'; static String toHexList(List? list) => - list?.map((val) => toHex(val))?.join(' ') ?? '(null)'; + list?.map((val) => toHex(val)).join(' ') ?? '(null)'; } extension Uint8ListExt on Uint8List { diff --git a/test/kdbx_test.dart b/test/kdbx_test.dart index 8dded95..d1bffd8 100644 --- a/test/kdbx_test.dart +++ b/test/kdbx_test.dart @@ -1,12 +1,9 @@ @Tags(['kdbx3']) - import 'dart:io'; import 'dart:typed_data'; import 'package:kdbx/kdbx.dart'; import 'package:kdbx/src/crypto/protected_salt_generator.dart'; -import 'package:kdbx/src/crypto/protected_value.dart'; -import 'package:kdbx/src/kdbx_format.dart'; import 'package:logging/logging.dart'; import 'package:logging_appenders/logging_appenders.dart'; import 'package:synchronized/synchronized.dart'; diff --git a/test/kdbx_upgrade_test.dart b/test/kdbx_upgrade_test.dart index 85327c9..144b691 100644 --- a/test/kdbx_upgrade_test.dart +++ b/test/kdbx_upgrade_test.dart @@ -1,7 +1,6 @@ @Tags(['kdbx3', 'kdbx4']) import 'package:kdbx/kdbx.dart'; -import 'package:kdbx/src/kdbx_header.dart'; import 'package:test/test.dart'; import 'internal/test_utils.dart'; diff --git a/test/var_dictionary_test.dart b/test/var_dictionary_test.dart index 5cf36c1..75f59ed 100644 --- a/test/var_dictionary_test.dart +++ b/test/var_dictionary_test.dart @@ -1,6 +1,6 @@ import 'package:kdbx/src/crypto/key_encrypter_kdf.dart'; -import 'package:kdbx/src/utils/byte_utils.dart'; import 'package:kdbx/src/kdbx_var_dictionary.dart'; +import 'package:kdbx/src/utils/byte_utils.dart'; import 'package:logging/logging.dart'; import 'package:logging_appenders/logging_appenders.dart'; import 'package:test/test.dart';