From 9a9f036227d708b166563ca8f18fa6443437be0a Mon Sep 17 00:00:00 2001 From: murali-shris Date: Thu, 5 May 2022 15:11:09 +0530 Subject: [PATCH 1/8] changes for bypass cache in verb syntax and builders --- at_commons/CHANGELOG.md | 2 + .../lib/src/verb/lookup_verb_builder.dart | 15 +++++--- .../lib/src/verb/plookup_verb_builder.dart | 15 +++++--- at_commons/lib/src/verb/syntax.dart | 4 +- at_commons/pubspec.yaml | 2 +- at_commons/test/lookup_verb_builder_test.dart | 37 +++++++++++++++++++ .../test/plookup_verb_builder_test.dart | 37 +++++++++++++++++++ 7 files changed, 99 insertions(+), 13 deletions(-) create mode 100644 at_commons/test/lookup_verb_builder_test.dart create mode 100644 at_commons/test/plookup_verb_builder_test.dart diff --git a/at_commons/CHANGELOG.md b/at_commons/CHANGELOG.md index 82c566f8..4fa0014f 100644 --- a/at_commons/CHANGELOG.md +++ b/at_commons/CHANGELOG.md @@ -1,3 +1,5 @@ +## 3.0.15 +- Support for bypass cache in lookup and plookup verbs ## 3.0.14 - Remove unnecessary print statements ## 3.0.13 diff --git a/at_commons/lib/src/verb/lookup_verb_builder.dart b/at_commons/lib/src/verb/lookup_verb_builder.dart index 7d639aa9..04565611 100644 --- a/at_commons/lib/src/verb/lookup_verb_builder.dart +++ b/at_commons/lib/src/verb/lookup_verb_builder.dart @@ -26,15 +26,20 @@ class LookupVerbBuilder implements VerbBuilder { String? operation; + // if set to true, returns the value of key on the remote server instead of the cached copy + bool byPassCache = false; + @override String buildCommand() { - String command; + String command = 'lookup:'; + if (byPassCache == true) { + command += 'bypass_cache:$byPassCache:'; + } if (operation != null) { - command = 'lookup:$operation:$atKey${VerbUtil.formatAtSign(sharedBy)}\n'; - } else { - command = 'lookup:$atKey${VerbUtil.formatAtSign(sharedBy)}\n'; + command += '$operation:'; } - return command; + command += atKey!; + return '$command${VerbUtil.formatAtSign(sharedBy)}\n'; } @override diff --git a/at_commons/lib/src/verb/plookup_verb_builder.dart b/at_commons/lib/src/verb/plookup_verb_builder.dart index f7c59b10..1f7c3c71 100644 --- a/at_commons/lib/src/verb/plookup_verb_builder.dart +++ b/at_commons/lib/src/verb/plookup_verb_builder.dart @@ -17,15 +17,20 @@ class PLookupVerbBuilder implements VerbBuilder { String? operation; + // if set to true, returns the value of key on the remote server instead of the cached copy + bool byPassCache = false; + @override String buildCommand() { - String command; + String command = 'plookup:'; + if (byPassCache == true) { + command += 'bypass_cache:$byPassCache:'; + } if (operation != null) { - command = 'plookup:$operation:$atKey${VerbUtil.formatAtSign(sharedBy)}\n'; - } else { - command = 'plookup:$atKey${VerbUtil.formatAtSign(sharedBy)}\n'; + command += '$operation:'; } - return command; + command += atKey!; + return '$command${VerbUtil.formatAtSign(sharedBy)}\n'; } @override diff --git a/at_commons/lib/src/verb/syntax.dart b/at_commons/lib/src/verb/syntax.dart index a6ec6216..635633db 100644 --- a/at_commons/lib/src/verb/syntax.dart +++ b/at_commons/lib/src/verb/syntax.dart @@ -6,9 +6,9 @@ class VerbSyntax { static const llookup = r'^llookup:((?meta|all):)?(?:cached:)?((?:public:)|(@(?[^@:\s]*):))?(?[^:]((?!:{2})[^@])+)@(?[^@\s]+)$'; static const plookup = - r'^plookup:((?meta|all):)?(?[^@\s]+)@(?[^@\s]+)$'; + r'^plookup:(bypass_cache:(?true|false):)?((?meta|all):)?(?[^@\s]+)@(?[^@\s]+)$'; static const lookup = - r'^lookup:((?meta|all):)?(?(?:[^:]).+)@(?[^@\s]+)$'; + r'^lookup:(bypass_cache:(?true|false):)?((?meta|all):)?(?(?:[^:]).+)@(?[^@\s]+)$'; static const scan = r'^scan$|scan(:(?@[^:@\s]+))?(:page:(?\d+))?( (?\S+))?$'; static const config = diff --git a/at_commons/pubspec.yaml b/at_commons/pubspec.yaml index fdfd0938..6c3115b4 100644 --- a/at_commons/pubspec.yaml +++ b/at_commons/pubspec.yaml @@ -1,6 +1,6 @@ name: at_commons description: A library of Dart and Flutter utility classes that are used across other components of the @‎platform. -version: 3.0.14 +version: 3.0.15 repository: https://github.com/atsign-foundation/at_tools homepage: https://atsign.dev diff --git a/at_commons/test/lookup_verb_builder_test.dart b/at_commons/test/lookup_verb_builder_test.dart new file mode 100644 index 00000000..fac7155d --- /dev/null +++ b/at_commons/test/lookup_verb_builder_test.dart @@ -0,0 +1,37 @@ +import 'package:at_commons/at_builders.dart'; +import 'package:test/test.dart'; + +void main() { + group('A group of lookup verb builder tests', () { + test('verify simple lookup command', () { + var updateBuilder = LookupVerbBuilder() + ..atKey = 'phone' + ..sharedBy = 'alice'; + expect(updateBuilder.buildCommand(), 'lookup:phone@alice\n'); + }); + test('verify lookup meta command', () { + var updateBuilder = LookupVerbBuilder() + ..operation = 'meta' + ..atKey = 'email' + ..sharedBy = 'alice'; + expect(updateBuilder.buildCommand(), 'lookup:meta:email@alice\n'); + }); + + test('verify lookup all command', () { + var updateBuilder = LookupVerbBuilder() + ..operation = 'all' + ..atKey = 'email' + ..sharedBy = 'alice'; + expect(updateBuilder.buildCommand(), 'lookup:all:email@alice\n'); + }); + + test('verify lookup bypass cache command', () { + var updateBuilder = LookupVerbBuilder() + ..byPassCache = true + ..atKey = 'email' + ..sharedBy = 'alice'; + expect(updateBuilder.buildCommand(), + 'lookup:bypass_cache:true:email@alice\n'); + }); + }); +} diff --git a/at_commons/test/plookup_verb_builder_test.dart b/at_commons/test/plookup_verb_builder_test.dart new file mode 100644 index 00000000..8d1e25d7 --- /dev/null +++ b/at_commons/test/plookup_verb_builder_test.dart @@ -0,0 +1,37 @@ +import 'package:at_commons/at_builders.dart'; +import 'package:test/test.dart'; + +void main() { + group('A group of lookup verb builder tests', () { + test('verify simple plookup command', () { + var updateBuilder = PLookupVerbBuilder() + ..atKey = 'phone' + ..sharedBy = 'alice'; + expect(updateBuilder.buildCommand(), 'plookup:phone@alice\n'); + }); + test('verify plookup meta command', () { + var updateBuilder = PLookupVerbBuilder() + ..operation = 'meta' + ..atKey = 'email' + ..sharedBy = 'alice'; + expect(updateBuilder.buildCommand(), 'plookup:meta:email@alice\n'); + }); + + test('verify plookup all command', () { + var updateBuilder = PLookupVerbBuilder() + ..operation = 'all' + ..atKey = 'email' + ..sharedBy = 'alice'; + expect(updateBuilder.buildCommand(), 'plookup:all:email@alice\n'); + }); + + test('verify plookup bypass cache command', () { + var updateBuilder = PLookupVerbBuilder() + ..byPassCache = true + ..atKey = 'email' + ..sharedBy = 'alice'; + expect(updateBuilder.buildCommand(), + 'plookup:bypass_cache:true:email@alice\n'); + }); + }); +} From dee5e62cbcd78612589d1baf92b557b132808393 Mon Sep 17 00:00:00 2001 From: murali-shris Date: Thu, 5 May 2022 16:56:59 +0530 Subject: [PATCH 2/8] added constant for bypass cache --- at_commons/lib/src/at_constants.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/at_commons/lib/src/at_constants.dart b/at_commons/lib/src/at_constants.dart index cdc72e14..51948bac 100644 --- a/at_commons/lib/src/at_constants.dart +++ b/at_commons/lib/src/at_constants.dart @@ -63,3 +63,4 @@ const String commitLogCompactionKey = 'privatekey:commitLogCompactionStats'; const String accessLogCompactionKey = 'privatekey:accessLogCompactionStats'; const String notificationCompactionKey = 'privatekey:notificationCompactionStats'; +const String byPassCache = 'bypass_cache'; From 345adf7a6490ae54be9b595fb3059cb68e2e3b82 Mon Sep 17 00:00:00 2001 From: murali-shris Date: Fri, 6 May 2022 16:00:43 +0530 Subject: [PATCH 3/8] rename bypass_cache to bypassCache --- at_commons/lib/src/at_constants.dart | 2 +- at_commons/lib/src/verb/syntax.dart | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/at_commons/lib/src/at_constants.dart b/at_commons/lib/src/at_constants.dart index 51948bac..d03a1694 100644 --- a/at_commons/lib/src/at_constants.dart +++ b/at_commons/lib/src/at_constants.dart @@ -63,4 +63,4 @@ const String commitLogCompactionKey = 'privatekey:commitLogCompactionStats'; const String accessLogCompactionKey = 'privatekey:accessLogCompactionStats'; const String notificationCompactionKey = 'privatekey:notificationCompactionStats'; -const String byPassCache = 'bypass_cache'; +const String byPassCache = 'bypassCache'; diff --git a/at_commons/lib/src/verb/syntax.dart b/at_commons/lib/src/verb/syntax.dart index 635633db..4632bcba 100644 --- a/at_commons/lib/src/verb/syntax.dart +++ b/at_commons/lib/src/verb/syntax.dart @@ -6,9 +6,9 @@ class VerbSyntax { static const llookup = r'^llookup:((?meta|all):)?(?:cached:)?((?:public:)|(@(?[^@:\s]*):))?(?[^:]((?!:{2})[^@])+)@(?[^@\s]+)$'; static const plookup = - r'^plookup:(bypass_cache:(?true|false):)?((?meta|all):)?(?[^@\s]+)@(?[^@\s]+)$'; + r'^plookup:(bypassCache:(?true|false):)?((?meta|all):)?(?[^@\s]+)@(?[^@\s]+)$'; static const lookup = - r'^lookup:(bypass_cache:(?true|false):)?((?meta|all):)?(?(?:[^:]).+)@(?[^@\s]+)$'; + r'^lookup:(bypassCache:(?true|false):)?((?meta|all):)?(?(?:[^:]).+)@(?[^@\s]+)$'; static const scan = r'^scan$|scan(:(?@[^:@\s]+))?(:page:(?\d+))?( (?\S+))?$'; static const config = From 660f342442d18e59c894160e44edda4a4f24f986 Mon Sep 17 00:00:00 2001 From: murali-shris Date: Fri, 6 May 2022 16:03:38 +0530 Subject: [PATCH 4/8] change unit test for bypass cache rename --- at_commons/test/lookup_verb_builder_test.dart | 2 +- at_commons/test/plookup_verb_builder_test.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/at_commons/test/lookup_verb_builder_test.dart b/at_commons/test/lookup_verb_builder_test.dart index fac7155d..0c89efd0 100644 --- a/at_commons/test/lookup_verb_builder_test.dart +++ b/at_commons/test/lookup_verb_builder_test.dart @@ -31,7 +31,7 @@ void main() { ..atKey = 'email' ..sharedBy = 'alice'; expect(updateBuilder.buildCommand(), - 'lookup:bypass_cache:true:email@alice\n'); + 'lookup:bypassCache:true:email@alice\n'); }); }); } diff --git a/at_commons/test/plookup_verb_builder_test.dart b/at_commons/test/plookup_verb_builder_test.dart index 8d1e25d7..75f9151e 100644 --- a/at_commons/test/plookup_verb_builder_test.dart +++ b/at_commons/test/plookup_verb_builder_test.dart @@ -31,7 +31,7 @@ void main() { ..atKey = 'email' ..sharedBy = 'alice'; expect(updateBuilder.buildCommand(), - 'plookup:bypass_cache:true:email@alice\n'); + 'plookup:bypassCache:true:email@alice\n'); }); }); } From 21d77c6417d40d78307ab30f204000c0e9469106 Mon Sep 17 00:00:00 2001 From: murali-shris Date: Fri, 6 May 2022 16:12:36 +0530 Subject: [PATCH 5/8] change unit tests --- at_commons/lib/src/verb/lookup_verb_builder.dart | 2 +- .../lib/src/verb/plookup_verb_builder.dart | 2 +- at_commons/test/lookup_verb_builder_test.dart | 16 ++++++++-------- at_commons/test/plookup_verb_builder_test.dart | 16 ++++++++-------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/at_commons/lib/src/verb/lookup_verb_builder.dart b/at_commons/lib/src/verb/lookup_verb_builder.dart index 04565611..538e0762 100644 --- a/at_commons/lib/src/verb/lookup_verb_builder.dart +++ b/at_commons/lib/src/verb/lookup_verb_builder.dart @@ -33,7 +33,7 @@ class LookupVerbBuilder implements VerbBuilder { String buildCommand() { String command = 'lookup:'; if (byPassCache == true) { - command += 'bypass_cache:$byPassCache:'; + command += 'bypassCache:$byPassCache:'; } if (operation != null) { command += '$operation:'; diff --git a/at_commons/lib/src/verb/plookup_verb_builder.dart b/at_commons/lib/src/verb/plookup_verb_builder.dart index 1f7c3c71..aee9f4d2 100644 --- a/at_commons/lib/src/verb/plookup_verb_builder.dart +++ b/at_commons/lib/src/verb/plookup_verb_builder.dart @@ -24,7 +24,7 @@ class PLookupVerbBuilder implements VerbBuilder { String buildCommand() { String command = 'plookup:'; if (byPassCache == true) { - command += 'bypass_cache:$byPassCache:'; + command += 'bypassCache:$byPassCache:'; } if (operation != null) { command += '$operation:'; diff --git a/at_commons/test/lookup_verb_builder_test.dart b/at_commons/test/lookup_verb_builder_test.dart index 0c89efd0..b85576dc 100644 --- a/at_commons/test/lookup_verb_builder_test.dart +++ b/at_commons/test/lookup_verb_builder_test.dart @@ -4,33 +4,33 @@ import 'package:test/test.dart'; void main() { group('A group of lookup verb builder tests', () { test('verify simple lookup command', () { - var updateBuilder = LookupVerbBuilder() + var lookupVerbBuilder = LookupVerbBuilder() ..atKey = 'phone' ..sharedBy = 'alice'; - expect(updateBuilder.buildCommand(), 'lookup:phone@alice\n'); + expect(lookupVerbBuilder.buildCommand(), 'lookup:phone@alice\n'); }); test('verify lookup meta command', () { - var updateBuilder = LookupVerbBuilder() + var lookupVerbBuilder = LookupVerbBuilder() ..operation = 'meta' ..atKey = 'email' ..sharedBy = 'alice'; - expect(updateBuilder.buildCommand(), 'lookup:meta:email@alice\n'); + expect(lookupVerbBuilder.buildCommand(), 'lookup:meta:email@alice\n'); }); test('verify lookup all command', () { - var updateBuilder = LookupVerbBuilder() + var lookupVerbBuilder = LookupVerbBuilder() ..operation = 'all' ..atKey = 'email' ..sharedBy = 'alice'; - expect(updateBuilder.buildCommand(), 'lookup:all:email@alice\n'); + expect(lookupVerbBuilder.buildCommand(), 'lookup:all:email@alice\n'); }); test('verify lookup bypass cache command', () { - var updateBuilder = LookupVerbBuilder() + var lookupVerbBuilder = LookupVerbBuilder() ..byPassCache = true ..atKey = 'email' ..sharedBy = 'alice'; - expect(updateBuilder.buildCommand(), + expect(lookupVerbBuilder.buildCommand(), 'lookup:bypassCache:true:email@alice\n'); }); }); diff --git a/at_commons/test/plookup_verb_builder_test.dart b/at_commons/test/plookup_verb_builder_test.dart index 75f9151e..6d78e193 100644 --- a/at_commons/test/plookup_verb_builder_test.dart +++ b/at_commons/test/plookup_verb_builder_test.dart @@ -4,33 +4,33 @@ import 'package:test/test.dart'; void main() { group('A group of lookup verb builder tests', () { test('verify simple plookup command', () { - var updateBuilder = PLookupVerbBuilder() + var plookupVerbBuilder = PLookupVerbBuilder() ..atKey = 'phone' ..sharedBy = 'alice'; - expect(updateBuilder.buildCommand(), 'plookup:phone@alice\n'); + expect(plookupVerbBuilder.buildCommand(), 'plookup:phone@alice\n'); }); test('verify plookup meta command', () { - var updateBuilder = PLookupVerbBuilder() + var plookupVerbBuilder = PLookupVerbBuilder() ..operation = 'meta' ..atKey = 'email' ..sharedBy = 'alice'; - expect(updateBuilder.buildCommand(), 'plookup:meta:email@alice\n'); + expect(plookupVerbBuilder.buildCommand(), 'plookup:meta:email@alice\n'); }); test('verify plookup all command', () { - var updateBuilder = PLookupVerbBuilder() + var plookupVerbBuilder = PLookupVerbBuilder() ..operation = 'all' ..atKey = 'email' ..sharedBy = 'alice'; - expect(updateBuilder.buildCommand(), 'plookup:all:email@alice\n'); + expect(plookupVerbBuilder.buildCommand(), 'plookup:all:email@alice\n'); }); test('verify plookup bypass cache command', () { - var updateBuilder = PLookupVerbBuilder() + var plookupVerbBuilder = PLookupVerbBuilder() ..byPassCache = true ..atKey = 'email' ..sharedBy = 'alice'; - expect(updateBuilder.buildCommand(), + expect(plookupVerbBuilder.buildCommand(), 'plookup:bypassCache:true:email@alice\n'); }); }); From 2177dd83bbc9417cd417c0228211e2b2b4611af2 Mon Sep 17 00:00:00 2001 From: murali-shris Date: Wed, 18 May 2022 13:49:51 +0530 Subject: [PATCH 6/8] change log --- at_commons/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/at_commons/CHANGELOG.md b/at_commons/CHANGELOG.md index 4fa0014f..9cf841b8 100644 --- a/at_commons/CHANGELOG.md +++ b/at_commons/CHANGELOG.md @@ -1,5 +1,5 @@ ## 3.0.15 -- Support for bypass cache in lookup and plookup verbs +- FEAT: support to bypass cache in lookup and plookup verbs ## 3.0.14 - Remove unnecessary print statements ## 3.0.13 From 6ac5e598b2b72e7ec90803bfd865a45663a71fc6 Mon Sep 17 00:00:00 2001 From: sitaram Date: Wed, 18 May 2022 17:50:12 +0530 Subject: [PATCH 7/8] hide at_client_exceptions.dart file --- at_commons/CHANGELOG.md | 2 ++ at_commons/lib/at_commons.dart | 1 - at_commons/pubspec.yaml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/at_commons/CHANGELOG.md b/at_commons/CHANGELOG.md index 9cf841b8..5a587a77 100644 --- a/at_commons/CHANGELOG.md +++ b/at_commons/CHANGELOG.md @@ -1,3 +1,5 @@ +## 3.0.16 +- Hide at_client_exceptions.dart to prevent at_client_exception being referred from at_commons ## 3.0.15 - FEAT: support to bypass cache in lookup and plookup verbs ## 3.0.14 diff --git a/at_commons/lib/at_commons.dart b/at_commons/lib/at_commons.dart index 98b9940a..4920fd78 100644 --- a/at_commons/lib/at_commons.dart +++ b/at_commons/lib/at_commons.dart @@ -5,7 +5,6 @@ export 'package:at_commons/src/at_message.dart'; export 'package:at_commons/src/buffer/at_buffer.dart'; export 'package:at_commons/src/buffer/at_buffer_impl.dart'; export 'package:at_commons/src/compaction/at_compaction_config.dart'; -export 'package:at_commons/src/exception/at_client_exceptions.dart'; export 'package:at_commons/src/exception/at_exception_utils.dart'; export 'package:at_commons/src/exception/at_exceptions.dart' hide diff --git a/at_commons/pubspec.yaml b/at_commons/pubspec.yaml index 6c3115b4..d66d305e 100644 --- a/at_commons/pubspec.yaml +++ b/at_commons/pubspec.yaml @@ -1,6 +1,6 @@ name: at_commons description: A library of Dart and Flutter utility classes that are used across other components of the @‎platform. -version: 3.0.15 +version: 3.0.16 repository: https://github.com/atsign-foundation/at_tools homepage: https://atsign.dev From d2d919280a38033638a0fa3469ddd3db92a1023a Mon Sep 17 00:00:00 2001 From: Chris Swan <478926+cpswan@users.noreply.github.com> Date: Wed, 18 May 2022 14:18:14 +0100 Subject: [PATCH 8/8] New @ Platform logo and README tweaks --- README.md | 6 ++---- at_cli/README.md | 4 +--- at_commons/README.md | 4 +--- at_cram/README.md | 4 +--- at_dump_atKeys/README.md | 4 +--- at_hive_recovery/README.md | 10 ++++++++-- at_pkam/README.md | 4 +--- at_utils/README.md | 4 +--- at_ve_doctor/README.md | 4 +--- 9 files changed, 17 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index fd28e7ce..1bd8362d 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,11 @@ - - -### Now for a little internet optimism + [![Build Status](https://github.com/atsign-foundation/at_tools/actions/workflows/at_tools.yaml/badge.svg)](https://github.com/atsign-foundation/at_tools/actions/workflows/at_tools.yaml) [![GitHub License](https://img.shields.io/badge/license-BSD3-blue.svg)](./LICENSE) ## at_tools -This repository contains @protocol tools and libraries for developers +This repository contains @protocol tools and libraries for developers building @platform applications who wish to utilize the authentication methods and commonly used components of the @protocol: diff --git a/at_cli/README.md b/at_cli/README.md index bcbf3df4..0a9b5be0 100644 --- a/at_cli/README.md +++ b/at_cli/README.md @@ -1,6 +1,4 @@ - - -### Now for a little internet optimism + # at_cli diff --git a/at_commons/README.md b/at_commons/README.md index 71b0dc09..9da20946 100644 --- a/at_commons/README.md +++ b/at_commons/README.md @@ -1,6 +1,4 @@ - - -### Now for a little internet optimism + [![Pub Package](https://img.shields.io/pub/v/at_commons)](https://pub.dev/packages/at_commons) diff --git a/at_cram/README.md b/at_cram/README.md index 77f8b9e0..8291a485 100644 --- a/at_cram/README.md +++ b/at_cram/README.md @@ -1,6 +1,4 @@ - - -### Now for a little internet optimism + ## at_cram diff --git a/at_dump_atKeys/README.md b/at_dump_atKeys/README.md index b5d5ecf4..b4087c4e 100644 --- a/at_dump_atKeys/README.md +++ b/at_dump_atKeys/README.md @@ -1,6 +1,4 @@ - - -### Now for a little internet optimism + ## at_dump_atKeys diff --git a/at_hive_recovery/README.md b/at_hive_recovery/README.md index b39ec71b..6a2ddbe7 100644 --- a/at_hive_recovery/README.md +++ b/at_hive_recovery/README.md @@ -1,11 +1,17 @@ -# at_hive_recovery # + + +# at_hive_recovery **at_hive_recovery** tool for recovering corrupted hive boxes. Usage: +``` dart bin/main.dart +``` e.g -dart bin/main.dart @alice /home/alice/storage/hive \ No newline at end of file +``` +dart bin/main.dart @alice /home/alice/storage/hive +``` \ No newline at end of file diff --git a/at_pkam/README.md b/at_pkam/README.md index 990e1de7..3b3e2f84 100644 --- a/at_pkam/README.md +++ b/at_pkam/README.md @@ -1,6 +1,4 @@ - - -### Now for a little internet optimism + ## at_pkam diff --git a/at_utils/README.md b/at_utils/README.md index 968a47de..e4090bd3 100644 --- a/at_utils/README.md +++ b/at_utils/README.md @@ -1,6 +1,4 @@ - - -### Now for a little internet optimism + [![Pub Package](https://img.shields.io/pub/v/at_utils)](https://pub.dev/packages/at_utils) diff --git a/at_ve_doctor/README.md b/at_ve_doctor/README.md index bc3b1939..156fc20f 100644 --- a/at_ve_doctor/README.md +++ b/at_ve_doctor/README.md @@ -1,6 +1,4 @@ - - -### Now for a little internet optimism + ## at_ve_doctor