Jelajahi Sumber

Upgrade Angel3 to run on dart 3.6.1 (#9716)

* Upgraded Angel3 to run on dart 3.6.1

* Fixed update error

* Updated ORM query

* Updated ORM query
Thomas 4 bulan lalu
induk
melakukan
79ff46bf82
30 mengubah file dengan 1052 tambahan dan 831 penghapusan
  1. 8 8
      frameworks/Dart/angel3/README.md
  2. 1 1
      frameworks/Dart/angel3/angel3-mysql.dockerfile
  3. 1 1
      frameworks/Dart/angel3/angel3.dockerfile
  4. 3 0
      frameworks/Dart/angel3/benchmark_config.json
  5. 0 1
      frameworks/Dart/angel3/orm-mysql/config/default.yaml
  6. 0 1
      frameworks/Dart/angel3/orm-mysql/lib/benchmark_app.dart
  7. 0 1
      frameworks/Dart/angel3/orm-mysql/lib/src/config/config.dart
  8. 0 36
      frameworks/Dart/angel3/orm-mysql/lib/src/config/plugins/orm.dart
  9. 0 1
      frameworks/Dart/angel3/orm-mysql/lib/src/config/plugins/plugins.dart
  10. 0 1
      frameworks/Dart/angel3/orm-mysql/lib/src/models/fortune.dart
  11. 44 13
      frameworks/Dart/angel3/orm-mysql/lib/src/models/fortune.g.dart
  12. 44 13
      frameworks/Dart/angel3/orm-mysql/lib/src/models/world.g.dart
  13. 12 25
      frameworks/Dart/angel3/orm-mysql/lib/src/routes/controllers/controllers.dart
  14. 0 1
      frameworks/Dart/angel3/orm-mysql/lib/src/routes/routes.dart
  15. 0 1
      frameworks/Dart/angel3/orm-mysql/lib/src/services/services.dart
  16. 379 243
      frameworks/Dart/angel3/orm-mysql/pubspec.lock
  17. 29 31
      frameworks/Dart/angel3/orm-mysql/pubspec.yaml
  18. 1 1
      frameworks/Dart/angel3/orm-mysql/run/dev.dart
  19. 1 24
      frameworks/Dart/angel3/orm-mysql/run/prod.dart
  20. 4 9
      frameworks/Dart/angel3/orm-mysql/test/all_test.dart
  21. 0 1
      frameworks/Dart/angel3/orm/config/default.yaml
  22. 0 1
      frameworks/Dart/angel3/orm/lib/benchmark_app.dart
  23. 16 43
      frameworks/Dart/angel3/orm/lib/src/config/plugins/orm.dart
  24. 44 13
      frameworks/Dart/angel3/orm/lib/src/models/fortune.g.dart
  25. 44 13
      frameworks/Dart/angel3/orm/lib/src/models/world.g.dart
  26. 12 25
      frameworks/Dart/angel3/orm/lib/src/routes/controllers/controllers.dart
  27. 379 264
      frameworks/Dart/angel3/orm/pubspec.lock
  28. 29 31
      frameworks/Dart/angel3/orm/pubspec.yaml
  29. 0 23
      frameworks/Dart/angel3/orm/run/prod.dart
  30. 1 5
      frameworks/Dart/angel3/orm/test/all_test.dart

+ 8 - 8
frameworks/Dart/angel3/README.md

@@ -1,10 +1,10 @@
 # Angel3 Framework Benchmarking Test
 
-This is the Angel3 framework portion of a [benchmarking test suite](../) comparing a variety of web development platforms. 
+This is the Angel3 framework portion of a [benchmarking test suite](../) comparing a variety of web development platforms.
 
 ## Description
 
-All the tests are implemented using the [Angel3 Framework](https://angel3-framework.web.app) with ORM for Postgresql database enabled. The directory layout follows the standard ORM boilerplate template.
+All the tests are implemented using the [Angel3 Framework](https://angel3-framework.web.app) with ORM for Postgresql and MySQL database on Dart 3.6. The directory layout follows the standard ORM boilerplate template.
 
 ### Test Type Implementation Source Code
 
@@ -28,24 +28,24 @@ The tests were run with:
 
 ### JSON
 
-http://localhost:8080/json
+<http://localhost:8080/json>
 
 ### PLAINTEXT
 
-http://localhost:8080/plaintext
+<http://localhost:8080/plaintext>
 
 ### DB
 
-http://localhost:8080/db
+<http://localhost:8080/db>
 
 ### QUERY
 
-http://localhost:8080/query?queries=
+<http://localhost:8080/query?queries=>
 
 ### UPDATE
 
-http://localhost:8080/updates?queries=
+<http://localhost:8080/updates?queries=>
 
 ### FORTUNES
 
-http://localhost:8080/fortunes
+<http://localhost:8080/fortunes>

+ 1 - 1
frameworks/Dart/angel3/angel3-mysql.dockerfile

@@ -1,4 +1,4 @@
-FROM dart:2.19.6
+FROM dart:3.6.1
 
 COPY ./orm-mysql/config /app/config
 COPY ./orm-mysql/lib /app/lib

+ 1 - 1
frameworks/Dart/angel3/angel3.dockerfile

@@ -1,4 +1,4 @@
-FROM dart:2.19.6
+FROM dart:3.6.1
 
 COPY ./orm/config /app/config
 COPY ./orm/lib /app/lib

+ 3 - 0
frameworks/Dart/angel3/benchmark_config.json

@@ -26,9 +26,12 @@
         "versus": "None"
       },
       "mysql": {
+        "json_url": "/json",
         "db_url": "/db",
+        "plaintext_url": "/plaintext",
         "query_url": "/query?queries=",
         "fortune_url": "/fortunes",
+        "update_url": "/updates?queries=",
         "port": 8080,
         "approach": "Realistic",
         "classification": "Fullstack",

+ 0 - 1
frameworks/Dart/angel3/orm-mysql/config/default.yaml

@@ -2,7 +2,6 @@
 host: 127.0.0.1
 port: 8080
 mysql:
-  #host: localhost
   host: tfb-database
   port: 3306
   database_name: hello_world

+ 0 - 1
frameworks/Dart/angel3/orm-mysql/lib/orm_mysql_app.dart → frameworks/Dart/angel3/orm-mysql/lib/benchmark_app.dart

@@ -1,4 +1,3 @@
-/// Your very own web application!
 import 'dart:async';
 import 'package:angel3_framework/angel3_framework.dart';
 import 'package:file/local.dart';

+ 0 - 1
frameworks/Dart/angel3/orm-mysql/lib/src/config/config.dart

@@ -1,4 +1,3 @@
-/// Configuration for this Angel instance.
 import 'package:angel3_configuration/angel3_configuration.dart';
 import 'package:angel3_framework/angel3_framework.dart';
 import 'package:angel3_jael/angel3_jael.dart';

+ 0 - 36
frameworks/Dart/angel3/orm-mysql/lib/src/config/plugins/orm.dart

@@ -3,45 +3,9 @@ import 'dart:io';
 import 'package:angel3_framework/angel3_framework.dart';
 import 'package:angel3_orm/angel3_orm.dart';
 import 'package:angel3_orm_mysql/angel3_orm_mysql.dart';
-import 'package:mysql1/mysql1.dart';
 import 'package:mysql_client/mysql_client.dart';
 
-// For MariaDb
-Future<void> configureServer2(Angel app) async {
-  try {
-    var connection = await connectToMariaDb(app.configuration);
-    var executor = MariaDbExecutor(connection, logger: app.logger);
-
-    app
-      ..container.registerSingleton<QueryExecutor>(executor)
-      ..shutdownHooks.add((_) => connection.close());
-  } catch (e) {
-    app.logger.severe("Failed to connect to MariaDB. ORM disabled.", e);
-  }
-}
-
-// MariaDB connection
-Future<MySqlConnection> connectToMariaDb(Map configuration) async {
-  var mariaDbConfig = configuration['mysql'] as Map? ?? {};
-  var settings = ConnectionSettings(
-      host: mariaDbConfig['host'] as String? ?? 'localhost',
-      port: mariaDbConfig['port'] as int? ?? 3306,
-      db: mariaDbConfig['database_name'] as String? ??
-          Platform.environment['USER'] ??
-          Platform.environment['USERNAME'] ??
-          '',
-      user: mariaDbConfig['username'] as String?,
-      password: mariaDbConfig['password'] as String?,
-      timeout: Duration(
-          seconds: mariaDbConfig['timeout_in_seconds'] as int? ?? 30000),
-      useSSL: mariaDbConfig['use_ssl'] as bool? ?? false);
-
-  var connection = await MySqlConnection.connect(settings);
-  return connection;
-}
-
 // For Mysql
-
 Future<void> configureServer(Angel app) async {
   try {
     var connection = await connectToMysql(app.configuration);

+ 0 - 1
frameworks/Dart/angel3/orm-mysql/lib/src/config/plugins/plugins.dart

@@ -1,4 +1,3 @@
-/// Custom plugins go here.
 import 'dart:async';
 import 'package:angel3_framework/angel3_framework.dart';
 import 'orm.dart' as orm;

+ 0 - 1
frameworks/Dart/angel3/orm-mysql/lib/src/models/fortune.dart

@@ -1,5 +1,4 @@
 import 'package:angel3_migration/angel3_migration.dart';
-//import 'package:angel3_model/angel3_model.dart';
 import 'package:angel3_serialize/angel3_serialize.dart';
 import 'package:angel3_orm/angel3_orm.dart';
 import 'package:optional/optional.dart';

+ 44 - 13
frameworks/Dart/angel3/orm-mysql/lib/src/models/fortune.g.dart

@@ -26,8 +26,10 @@ class FortuneMigration extends Migration {
 // **************************************************************************
 
 class FortuneQuery extends Query<Fortune, FortuneQueryWhere> {
-  FortuneQuery({Query? parent, Set<String>? trampoline})
-      : super(parent: parent) {
+  FortuneQuery({
+    Query? parent,
+    Set<String>? trampoline,
+  }) : super(parent: parent) {
     trampoline ??= <String>{};
     trampoline.add(tableName);
     _where = FortuneQueryWhere(this);
@@ -52,7 +54,10 @@ class FortuneQuery extends Query<Fortune, FortuneQueryWhere> {
 
   @override
   List<String> get fields {
-    const _fields = ['id', 'message'];
+    const _fields = [
+      'id',
+      'message',
+    ];
     return _selectedFields.isEmpty
         ? _fields
         : _fields.where((field) => _selectedFields.contains(field)).toList();
@@ -78,8 +83,9 @@ class FortuneQuery extends Query<Fortune, FortuneQueryWhere> {
       return Optional.empty();
     }
     var model = Fortune(
-        id: fields.contains('id') ? (row[0] as int?) : null,
-        message: fields.contains('message') ? (row[1] as String?) : null);
+      id: fields.contains('id') ? mapToInt(row[0]) : null,
+      message: fields.contains('message') ? (row[1] as String?) : null,
+    );
     return Optional.of(model);
   }
 
@@ -91,8 +97,14 @@ class FortuneQuery extends Query<Fortune, FortuneQueryWhere> {
 
 class FortuneQueryWhere extends QueryWhere {
   FortuneQueryWhere(FortuneQuery query)
-      : id = NumericSqlExpressionBuilder<int>(query, 'id'),
-        message = StringSqlExpressionBuilder(query, 'message');
+      : id = NumericSqlExpressionBuilder<int>(
+          query,
+          'id',
+        ),
+        message = StringSqlExpressionBuilder(
+          query,
+          'message',
+        );
 
   final NumericSqlExpressionBuilder<int> id;
 
@@ -100,7 +112,10 @@ class FortuneQueryWhere extends QueryWhere {
 
   @override
   List<SqlExpressionBuilder> get expressionBuilders {
-    return [id, message];
+    return [
+      id,
+      message,
+    ];
   }
 }
 
@@ -115,11 +130,13 @@ class FortuneQueryValues extends MapQueryValues {
   }
 
   set id(int? value) => values['id'] = value;
+
   String? get message {
     return (values['message'] as String?);
   }
 
   set message(String? value) => values['message'] = value;
+
   void copyFrom(Fortune model) {
     id = model.id;
     message = model.message;
@@ -132,7 +149,10 @@ class FortuneQueryValues extends MapQueryValues {
 
 @generatedSerializable
 class Fortune extends _Fortune {
-  Fortune({this.id, this.message});
+  Fortune({
+    this.id,
+    this.message,
+  });
 
   @override
   int? id;
@@ -140,7 +160,10 @@ class Fortune extends _Fortune {
   @override
   String? message;
 
-  Fortune copyWith({int? id, String? message}) {
+  Fortune copyWith({
+    int? id,
+    String? message,
+  }) {
     return Fortune(id: id ?? this.id, message: message ?? this.message);
   }
 
@@ -151,7 +174,10 @@ class Fortune extends _Fortune {
 
   @override
   int get hashCode {
-    return hashObjects([id, message]);
+    return hashObjects([
+      id,
+      message,
+    ]);
   }
 
   @override
@@ -189,22 +215,27 @@ class FortuneSerializer extends Codec<Fortune, Map> {
 
   @override
   FortuneEncoder get encoder => const FortuneEncoder();
+
   @override
   FortuneDecoder get decoder => const FortuneDecoder();
+
   static Fortune fromMap(Map map) {
     return Fortune(id: map['id'] as int?, message: map['message'] as String?);
   }
 
   static Map<String, dynamic> toMap(_Fortune? model) {
     if (model == null) {
-      return {};
+      throw FormatException("Required field [model] cannot be null");
     }
     return {'id': model.id, 'message': model.message};
   }
 }
 
 abstract class FortuneFields {
-  static const List<String> allFields = <String>[id, message];
+  static const List<String> allFields = <String>[
+    id,
+    message,
+  ];
 
   static const String id = 'id';
 

+ 44 - 13
frameworks/Dart/angel3/orm-mysql/lib/src/models/world.g.dart

@@ -26,7 +26,10 @@ class WorldMigration extends Migration {
 // **************************************************************************
 
 class WorldQuery extends Query<World, WorldQueryWhere> {
-  WorldQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
+  WorldQuery({
+    Query? parent,
+    Set<String>? trampoline,
+  }) : super(parent: parent) {
     trampoline ??= <String>{};
     trampoline.add(tableName);
     _where = WorldQueryWhere(this);
@@ -51,7 +54,10 @@ class WorldQuery extends Query<World, WorldQueryWhere> {
 
   @override
   List<String> get fields {
-    const _fields = ['id', 'randomNumber'];
+    const _fields = [
+      'id',
+      'randomNumber',
+    ];
     return _selectedFields.isEmpty
         ? _fields
         : _fields.where((field) => _selectedFields.contains(field)).toList();
@@ -77,9 +83,9 @@ class WorldQuery extends Query<World, WorldQueryWhere> {
       return Optional.empty();
     }
     var model = World(
-        id: fields.contains('id') ? (row[0] as int?) : null,
-        randomNumber:
-            fields.contains('randomNumber') ? (row[1] as int?) : null);
+      id: fields.contains('id') ? mapToInt(row[0]) : null,
+      randomNumber: fields.contains('randomNumber') ? mapToInt(row[1]) : null,
+    );
     return Optional.of(model);
   }
 
@@ -91,8 +97,14 @@ class WorldQuery extends Query<World, WorldQueryWhere> {
 
 class WorldQueryWhere extends QueryWhere {
   WorldQueryWhere(WorldQuery query)
-      : id = NumericSqlExpressionBuilder<int>(query, 'id'),
-        randomNumber = NumericSqlExpressionBuilder<int>(query, 'randomNumber');
+      : id = NumericSqlExpressionBuilder<int>(
+          query,
+          'id',
+        ),
+        randomNumber = NumericSqlExpressionBuilder<int>(
+          query,
+          'randomNumber',
+        );
 
   final NumericSqlExpressionBuilder<int> id;
 
@@ -100,7 +112,10 @@ class WorldQueryWhere extends QueryWhere {
 
   @override
   List<SqlExpressionBuilder> get expressionBuilders {
-    return [id, randomNumber];
+    return [
+      id,
+      randomNumber,
+    ];
   }
 }
 
@@ -115,11 +130,13 @@ class WorldQueryValues extends MapQueryValues {
   }
 
   set id(int? value) => values['id'] = value;
+
   int? get randomNumber {
     return (values['randomNumber'] as int?);
   }
 
   set randomNumber(int? value) => values['randomNumber'] = value;
+
   void copyFrom(World model) {
     id = model.id;
     randomNumber = model.randomNumber;
@@ -132,7 +149,10 @@ class WorldQueryValues extends MapQueryValues {
 
 @generatedSerializable
 class World extends _World {
-  World({this.id, this.randomNumber});
+  World({
+    this.id,
+    this.randomNumber,
+  });
 
   @override
   int? id;
@@ -140,7 +160,10 @@ class World extends _World {
   @override
   int? randomNumber;
 
-  World copyWith({int? id, int? randomNumber}) {
+  World copyWith({
+    int? id,
+    int? randomNumber,
+  }) {
     return World(
         id: id ?? this.id, randomNumber: randomNumber ?? this.randomNumber);
   }
@@ -154,7 +177,10 @@ class World extends _World {
 
   @override
   int get hashCode {
-    return hashObjects([id, randomNumber]);
+    return hashObjects([
+      id,
+      randomNumber,
+    ]);
   }
 
   @override
@@ -192,8 +218,10 @@ class WorldSerializer extends Codec<World, Map> {
 
   @override
   WorldEncoder get encoder => const WorldEncoder();
+
   @override
   WorldDecoder get decoder => const WorldDecoder();
+
   static World fromMap(Map map) {
     return World(
         id: map['id'] as int?, randomNumber: map['randomNumber'] as int?);
@@ -201,14 +229,17 @@ class WorldSerializer extends Codec<World, Map> {
 
   static Map<String, dynamic> toMap(_World? model) {
     if (model == null) {
-      return {};
+      throw FormatException("Required field [model] cannot be null");
     }
     return {'id': model.id, 'randomNumber': model.randomNumber};
   }
 }
 
 abstract class WorldFields {
-  static const List<String> allFields = <String>[id, randomNumber];
+  static const List<String> allFields = <String>[
+    id,
+    randomNumber,
+  ];
 
   static const String id = 'id';
 

+ 12 - 25
frameworks/Dart/angel3/orm-mysql/lib/src/routes/controllers/controllers.dart

@@ -1,5 +1,4 @@
 import 'dart:async';
-import 'dart:convert';
 import 'dart:math';
 import 'package:angel3_framework/angel3_framework.dart';
 import 'package:angel3_orm/angel3_orm.dart';
@@ -12,12 +11,12 @@ Future configureServer(Angel app) async {
   var executor = app.container.make<QueryExecutor>();
 
   // Generate a random number between 1 and 10000
-  int _genRandomId() {
+  int genRandomId() {
     var rand = Random();
     return rand.nextInt(10000) + 1;
   }
 
-  int _parseQueryCount(String? count) {
+  int parseQueryCount(String? count) {
     if (count == null) {
       return 1;
     }
@@ -30,11 +29,11 @@ Future configureServer(Angel app) async {
     return limit;
   }
 
-  List<int> _generateIds(int maxCount) {
+  List<int> generateIds(int maxCount) {
     var result = <int>[];
 
     while (result.length < maxCount) {
-      var id = _genRandomId();
+      var id = genRandomId();
       if (!result.contains(id)) {
         result.add(id);
       }
@@ -56,25 +55,18 @@ Future configureServer(Angel app) async {
 
   // Add an entry and sort a list of fortune
   app.get('/fortunes', (req, res) async {
-    //var stopwatch = Stopwatch()..start();
-
     var list = await FortuneQuery().get(executor);
 
-    //print('Query Time: ${stopwatch.elapsed.inMilliseconds}ms');
-
     list.add(
         Fortune(id: 0, message: 'Additional fortune added at request time.'));
     list.sort((a, b) => a.message?.compareTo(b.message ?? '') ?? 0);
 
-    //print('Process Time: ${stopwatch.elapsed.inMilliseconds}ms');
-    //stopwatch.stop();
-
     res.render('listing', {'fortunes': list});
   });
 
   // Find a random World
   app.get('/db', (req, res) async {
-    var id = _genRandomId();
+    var id = genRandomId();
     var query = WorldQuery()..where?.id.equals(id);
     var result = await query.get(executor);
     if (result.isNotEmpty) {
@@ -88,12 +80,12 @@ Future configureServer(Angel app) async {
   app.get('/query', (req, res) async {
     var params = req.queryParameters;
 
-    var queryLimit = _parseQueryCount(params['queries'] as String?);
+    var queryLimit = parseQueryCount(params['queries'] as String?);
 
-    var list = _generateIds(queryLimit);
-    var query = WorldQuery();
+    var list = generateIds(queryLimit);
     var result = <World>[];
     for (var id in list) {
+      var query = WorldQuery();
       query.where?.id.equals(id);
       var optWorld = await query.getOne(executor);
       result.add(optWorld.value);
@@ -104,28 +96,23 @@ Future configureServer(Angel app) async {
 
   // Update a list of worlds
   app.get('/updates', (req, res) async {
-    //var stopwatch = Stopwatch()..start();
-
     var params = req.queryParameters;
-    var queryLimit = _parseQueryCount(params['queries'] as String?);
-    var listOfIds = _generateIds(queryLimit);
+    var queryLimit = parseQueryCount(params['queries'] as String?);
+    var listOfIds = generateIds(queryLimit);
 
-    var query = WorldQuery();
     var result = <World>[];
     for (var id in listOfIds) {
+      var query = WorldQuery();
       query.where?.id.equals(id);
       var optWorld = await query.getOne(executor);
 
       query
         ..where?.id.equals(optWorld.value.id!)
-        ..values.randomNumber = _genRandomId();
+        ..values.randomNumber = genRandomId();
       var updatedRec = await query.updateOne(executor);
       result.add(updatedRec.value);
     }
 
-    //rint('Process Time: ${stopwatch.elapsed.inMilliseconds}ms');
-    //stopwatch.stop();
-
     res.json(result);
   });
 }

+ 0 - 1
frameworks/Dart/angel3/orm-mysql/lib/src/routes/routes.dart

@@ -1,4 +1,3 @@
-/// This app's route configuration.
 import 'package:angel3_framework/angel3_framework.dart';
 import 'package:angel3_static/angel3_static.dart';
 import 'package:file/file.dart';

+ 0 - 1
frameworks/Dart/angel3/orm-mysql/lib/src/services/services.dart

@@ -1,4 +1,3 @@
-/// Declare services here!
 import 'dart:async';
 import 'package:angel3_framework/angel3_framework.dart';
 

+ 379 - 243
frameworks/Dart/angel3/orm-mysql/pubspec.lock

@@ -5,841 +5,977 @@ packages:
     dependency: transitive
     description:
       name: _fe_analyzer_shared
-      url: "https://pub.dartlang.org"
+      sha256: dc27559385e905ad30838356c5f5d574014ba39872d732111cd07ac0beff4c57
+      url: "https://pub.dev"
     source: hosted
-    version: "47.0.0"
+    version: "80.0.0"
   analyzer:
     dependency: transitive
     description:
       name: analyzer
-      url: "https://pub.dartlang.org"
+      sha256: "192d1c5b944e7e53b24b5586db760db934b177d4147c42fbca8c8c5f1eb8d11e"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.7.0"
+    version: "7.3.0"
   angel3_auth:
     dependency: "direct main"
     description:
       name: angel3_auth
-      url: "https://pub.dartlang.org"
+      sha256: "3996219fca7a49174c3745732a1e438ec94d55936697f2504196be4f3dbf191a"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_client:
     dependency: transitive
     description:
       name: angel3_client
-      url: "https://pub.dartlang.org"
+      sha256: e2886fdb41f243d85003f94127850bdd70f79fa5f7cf1f2b79b4f7029198e9dd
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.0"
   angel3_configuration:
     dependency: "direct main"
     description:
       name: angel3_configuration
-      url: "https://pub.dartlang.org"
+      sha256: f585699cf0ea5376d7ed6310e9fc57ccdd4645e5746ea0bae1fa6c05efe4e810
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_container:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: angel3_container
-      url: "https://pub.dartlang.org"
+      sha256: c08ea6b426242861d11109b748792503652a7eb0db4005409c0a031e80820c7f
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_framework:
     dependency: "direct main"
     description:
       name: angel3_framework
-      url: "https://pub.dartlang.org"
+      sha256: "91d56825b78846d9294e8aae789362644d4e24df4870d52d6c2cc6d8adf8d2c9"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.5.0"
   angel3_hot:
     dependency: "direct dev"
     description:
       name: angel3_hot
-      url: "https://pub.dartlang.org"
+      sha256: "8e1e7409631a49f05483e2067d1f27f594d558459712311b5ea4317b5519975b"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.0"
   angel3_http_exception:
     dependency: transitive
     description:
       name: angel3_http_exception
-      url: "https://pub.dartlang.org"
+      sha256: "9484b425a1aece1af3f2f0521fba429cd48f0a952521d40281333694c750e4ab"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_jael:
     dependency: "direct main"
     description:
       name: angel3_jael
-      url: "https://pub.dartlang.org"
+      sha256: "4ce85198613faff74ac8706065c619e7d6fc609aeb63b2fa7d9dba6f5a981f5c"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_migration:
     dependency: "direct main"
     description:
       name: angel3_migration
-      url: "https://pub.dartlang.org"
+      sha256: de7180ce8e48b0fe551c0b96cc83d0cafdcb71de3c75e13b0b08c3fdaf9df351
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.0"
   angel3_migration_runner:
     dependency: "direct dev"
     description:
       name: angel3_migration_runner
-      url: "https://pub.dartlang.org"
+      sha256: "30596dd82471dcddd35afb8b245c1dd56c8c53bdf77dee5e131c353e37e05f9b"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.1"
   angel3_mock_request:
     dependency: transitive
     description:
       name: angel3_mock_request
-      url: "https://pub.dartlang.org"
+      sha256: "8c8513a649d33c0c0531a120183da558000b4f044a4f30fd3ae22dfe11355a04"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_model:
     dependency: transitive
     description:
       name: angel3_model
-      url: "https://pub.dartlang.org"
+      sha256: "9a3f50b02bf119bb160d5f94580940b93973589d9b5949d284d2427b8fb65e16"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_orm:
     dependency: "direct main"
     description:
       name: angel3_orm
-      url: "https://pub.dartlang.org"
+      sha256: "9d1831b6b91820e312b52cf4c8c3cebb067be59b47123276fbc7741a01ae2ac5"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.1"
+    version: "8.3.2"
   angel3_orm_generator:
     dependency: "direct dev"
     description:
       name: angel3_orm_generator
-      url: "https://pub.dartlang.org"
+      sha256: "18426152dc86e1f0cd5fab14470f07a5b5ac7dd1b78f7e1bf8986d2625a898ec"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.1"
   angel3_orm_mysql:
     dependency: "direct main"
     description:
       name: angel3_orm_mysql
-      url: "https://pub.dartlang.org"
+      sha256: "63e7a6c36a0e492b89b4677bec9f79042d098063bbecb920705ab60d4415a3c6"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.1"
+    version: "8.3.1"
   angel3_production:
     dependency: "direct main"
     description:
       name: angel3_production
-      url: "https://pub.dartlang.org"
+      sha256: "286d4b6dcd5e4297eea3db93cb419282ca14ef920f77439ef7b42c6229ab6219"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.1"
   angel3_route:
     dependency: transitive
     description:
       name: angel3_route
-      url: "https://pub.dartlang.org"
+      sha256: f2ebf4b134e13f804271d4e164a92de5dd25ad0bb651303df2c9e6fb397f32a8
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.0"
   angel3_serialize:
     dependency: "direct main"
     description:
       name: angel3_serialize
-      url: "https://pub.dartlang.org"
+      sha256: "4a4658b8af0d0eec6b8816699f137367c6af7c6f6a1f83a84e43fee55f892f5e"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_serialize_generator:
     dependency: "direct dev"
     description:
       name: angel3_serialize_generator
-      url: "https://pub.dartlang.org"
+      sha256: "0fd91dd1162f5c0d1b3c0f2734f48787202693926e6d6c97bca18658c8b812f4"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.1"
   angel3_static:
     dependency: "direct main"
     description:
       name: angel3_static
-      url: "https://pub.dartlang.org"
+      sha256: "534e827500304fa4e95f3613b130aad832dc65681b9a4c47a83891f65b04b554"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_test:
     dependency: "direct dev"
     description:
       name: angel3_test
-      url: "https://pub.dartlang.org"
+      sha256: "2ae3d83f83fb6c0834948b4ae3afc02da8c7ee38da3e164bd455564267e39ff8"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_validate:
     dependency: "direct main"
     description:
       name: angel3_validate
-      url: "https://pub.dartlang.org"
+      sha256: "661ef636583b0e60b35756d3d296d2ef7b257277fa703a494278ace9fcbe4f0c"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_websocket:
     dependency: transitive
     description:
       name: angel3_websocket
-      url: "https://pub.dartlang.org"
+      sha256: "160399b1898d5fd9c8294b4321691567687d9d86d8940aea83cc528b85427229"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.0"
   args:
     dependency: transitive
     description:
       name: args
-      url: "https://pub.dartlang.org"
+      sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
+      url: "https://pub.dev"
     source: hosted
-    version: "2.3.1"
+    version: "2.7.0"
   async:
     dependency: transitive
     description:
       name: async
-      url: "https://pub.dartlang.org"
+      sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.9.0"
+    version: "2.13.0"
   belatuk_code_buffer:
     dependency: transitive
     description:
       name: belatuk_code_buffer
-      url: "https://pub.dartlang.org"
+      sha256: "06c4329570e2cb72cb808c5f19d2004865b7c1f18447d4af16d465776416ccfc"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "5.3.0"
   belatuk_combinator:
     dependency: transitive
     description:
       name: belatuk_combinator
-      url: "https://pub.dartlang.org"
+      sha256: "0c54ddf1a6a7c94585c55a5852ccc13ad1a871e3e0709d3322d0286eb7afb7d7"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "5.3.0"
   belatuk_html_builder:
     dependency: transitive
     description:
       name: belatuk_html_builder
-      url: "https://pub.dartlang.org"
+      sha256: "0bdd783a54aa7435c86231b319bfffa06259aea6df59dbec62d351456062e67f"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "5.3.0"
   belatuk_http_server:
     dependency: transitive
     description:
       name: belatuk_http_server
-      url: "https://pub.dartlang.org"
+      sha256: "2a4ae9409f3586a95a3393b924c86fd38c30d955aa2437070c3198a1ec0a1686"
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.0"
+    version: "4.5.0"
   belatuk_json_serializer:
     dependency: transitive
     description:
       name: belatuk_json_serializer
-      url: "https://pub.dartlang.org"
+      sha256: b0b6ee6b4aa0552d84b487c5d1a97f72c9d5c4cbc4e2828f57e24635d5d75be8
+      url: "https://pub.dev"
     source: hosted
-    version: "6.0.1"
+    version: "7.3.0"
   belatuk_merge_map:
     dependency: transitive
     description:
       name: belatuk_merge_map
-      url: "https://pub.dartlang.org"
+      sha256: "1eb3c77417598e1d40c11d8d93b3c7bb5f10ca0977b2f942c623698bf3745f43"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "5.3.0"
   belatuk_pretty_logging:
     dependency: "direct main"
     description:
       name: belatuk_pretty_logging
-      url: "https://pub.dartlang.org"
+      sha256: "29fb3127ce58643e59fc4510ce41fa4d795f56997cbc661dffdf07e9a65e7021"
+      url: "https://pub.dev"
     source: hosted
-    version: "5.0.0"
+    version: "6.3.0"
   belatuk_pub_sub:
     dependency: transitive
     description:
       name: belatuk_pub_sub
-      url: "https://pub.dartlang.org"
+      sha256: "08c4f458165f7e2d76a3a4796e94092b98579aedd1fc8a64f39cfbbd18db249d"
+      url: "https://pub.dev"
     source: hosted
-    version: "5.0.0"
+    version: "6.4.0"
   belatuk_range_header:
     dependency: transitive
     description:
       name: belatuk_range_header
-      url: "https://pub.dartlang.org"
+      sha256: "78f315c8a53415a04a77dee3fcec6f867bac77d2e5d3e13ffc7532d1800adc53"
+      url: "https://pub.dev"
     source: hosted
-    version: "5.0.0"
+    version: "6.4.0"
   belatuk_symbol_table:
     dependency: transitive
     description:
       name: belatuk_symbol_table
-      url: "https://pub.dartlang.org"
+      sha256: "154f50623b2c5a669561588d86a445f97cf081de6e690ba9bc866dcd98508f50"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "5.3.0"
   boolean_selector:
     dependency: transitive
     description:
       name: boolean_selector
-      url: "https://pub.dartlang.org"
+      sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.1.2"
   buffer:
     dependency: transitive
     description:
       name: buffer
-      url: "https://pub.dartlang.org"
+      sha256: "389da2ec2c16283c8787e0adaede82b1842102f8c8aae2f49003a766c5c6b3d1"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.1.1"
+    version: "1.2.3"
   build:
     dependency: transitive
     description:
       name: build
-      url: "https://pub.dartlang.org"
+      sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
+      url: "https://pub.dev"
     source: hosted
-    version: "2.3.1"
+    version: "2.4.2"
   build_config:
     dependency: transitive
     description:
       name: build_config
-      url: "https://pub.dartlang.org"
+      sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.1.0"
+    version: "1.1.2"
   build_daemon:
     dependency: transitive
     description:
       name: build_daemon
-      url: "https://pub.dartlang.org"
+      sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
+      url: "https://pub.dev"
     source: hosted
-    version: "3.1.0"
+    version: "4.0.4"
   build_resolvers:
     dependency: transitive
     description:
       name: build_resolvers
-      url: "https://pub.dartlang.org"
+      sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.10"
+    version: "2.4.4"
   build_runner:
     dependency: "direct dev"
     description:
       name: build_runner
-      url: "https://pub.dartlang.org"
+      sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.2.1"
+    version: "2.4.15"
   build_runner_core:
     dependency: transitive
     description:
       name: build_runner_core
-      url: "https://pub.dartlang.org"
+      sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.2.4"
+    version: "8.0.0"
   built_collection:
     dependency: transitive
     description:
       name: built_collection
-      url: "https://pub.dartlang.org"
+      sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
+      url: "https://pub.dev"
     source: hosted
     version: "5.1.1"
   built_value:
     dependency: transitive
     description:
       name: built_value
-      url: "https://pub.dartlang.org"
+      sha256: ea90e81dc4a25a043d9bee692d20ed6d1c4a1662a28c03a96417446c093ed6b4
+      url: "https://pub.dev"
     source: hosted
-    version: "8.4.1"
+    version: "8.9.5"
   charcode:
     dependency: transitive
     description:
       name: charcode
-      url: "https://pub.dartlang.org"
+      sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a
+      url: "https://pub.dev"
     source: hosted
-    version: "1.3.1"
+    version: "1.4.0"
   checked_yaml:
     dependency: transitive
     description:
       name: checked_yaml
-      url: "https://pub.dartlang.org"
+      sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.1"
+    version: "2.0.3"
   clock:
     dependency: transitive
     description:
       name: clock
-      url: "https://pub.dartlang.org"
+      sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
+      url: "https://pub.dev"
     source: hosted
-    version: "1.1.1"
+    version: "1.1.2"
   code_builder:
     dependency: transitive
     description:
       name: code_builder
-      url: "https://pub.dartlang.org"
+      sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.3.0"
+    version: "4.10.1"
   collection:
     dependency: transitive
     description:
       name: collection
-      url: "https://pub.dartlang.org"
+      sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.16.0"
+    version: "1.19.1"
   convert:
     dependency: transitive
     description:
       name: convert
-      url: "https://pub.dartlang.org"
+      sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.2"
+    version: "3.1.2"
   coverage:
     dependency: transitive
     description:
       name: coverage
-      url: "https://pub.dartlang.org"
+      sha256: e3493833ea012784c740e341952298f1cc77f1f01b1bbc3eb4eecf6984fb7f43
+      url: "https://pub.dev"
     source: hosted
-    version: "1.6.0"
+    version: "1.11.1"
   crypto:
     dependency: transitive
     description:
       name: crypto
-      url: "https://pub.dartlang.org"
+      sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.2"
+    version: "3.0.6"
   dart_style:
     dependency: transitive
     description:
       name: dart_style
-      url: "https://pub.dartlang.org"
+      sha256: "27eb0ae77836989a3bc541ce55595e8ceee0992807f14511552a898ddd0d88ac"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.2.4"
+    version: "3.0.1"
   dotenv:
     dependency: transitive
     description:
       name: dotenv
-      url: "https://pub.dartlang.org"
+      sha256: "379e64b6fc82d3df29461d349a1796ecd2c436c480d4653f3af6872eccbc90e1"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.1"
+    version: "4.2.0"
   file:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: file
-      url: "https://pub.dartlang.org"
+      sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
+      url: "https://pub.dev"
     source: hosted
-    version: "6.1.4"
+    version: "7.0.1"
   fixnum:
     dependency: transitive
     description:
       name: fixnum
-      url: "https://pub.dartlang.org"
+      sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.1"
+    version: "1.1.1"
   frontend_server_client:
     dependency: transitive
     description:
       name: frontend_server_client
-      url: "https://pub.dartlang.org"
+      sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.3"
+    version: "4.0.0"
   glob:
     dependency: transitive
     description:
       name: glob
-      url: "https://pub.dartlang.org"
+      sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.1.3"
   graphs:
     dependency: transitive
     description:
       name: graphs
-      url: "https://pub.dartlang.org"
+      sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.3.2"
   http:
     dependency: transitive
     description:
       name: http
-      url: "https://pub.dartlang.org"
+      sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
+      url: "https://pub.dev"
     source: hosted
-    version: "0.13.5"
+    version: "1.3.0"
   http2:
     dependency: transitive
     description:
       name: http2
-      url: "https://pub.dartlang.org"
+      sha256: "382d3aefc5bd6dc68c6b892d7664f29b5beb3251611ae946a98d35158a82bbfa"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.0"
+    version: "2.3.1"
   http_multi_server:
     dependency: transitive
     description:
       name: http_multi_server
-      url: "https://pub.dartlang.org"
+      sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
+      url: "https://pub.dev"
     source: hosted
-    version: "3.2.1"
+    version: "3.2.2"
   http_parser:
     dependency: transitive
     description:
       name: http_parser
-      url: "https://pub.dartlang.org"
+      sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.1"
+    version: "4.1.2"
   inflection3:
     dependency: transitive
     description:
       name: inflection3
-      url: "https://pub.dartlang.org"
+      sha256: cb54689bcfe3c0168a6979ee3191df584dcef4f870c5ef41c798bcb35ff5aca3
+      url: "https://pub.dev"
     source: hosted
     version: "0.5.3+2"
   intl:
     dependency: transitive
     description:
       name: intl
-      url: "https://pub.dartlang.org"
+      sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.17.0"
+    version: "0.20.2"
   io:
     dependency: "direct dev"
     description:
       name: io
-      url: "https://pub.dartlang.org"
+      sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.3"
+    version: "1.0.5"
   jael3:
     dependency: "direct main"
     description:
       name: jael3
-      url: "https://pub.dartlang.org"
+      sha256: bee0b8d328898dac9008caf7392400d03bc2035a3dd9acebe7ebee052ef9132b
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.2.0"
   jael3_preprocessor:
     dependency: transitive
     description:
       name: jael3_preprocessor
-      url: "https://pub.dartlang.org"
+      sha256: "8e70b92608e61c032f08bed82fa63b82e26b4ede4f4924b81bd75329fae9e9b8"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.2.0"
   js:
     dependency: transitive
     description:
       name: js
-      url: "https://pub.dartlang.org"
+      sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
+      url: "https://pub.dev"
     source: hosted
-    version: "0.6.4"
+    version: "0.7.1"
   json_annotation:
     dependency: transitive
     description:
       name: json_annotation
-      url: "https://pub.dartlang.org"
+      sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.6.0"
+    version: "4.9.0"
   json_rpc_2:
     dependency: transitive
     description:
       name: json_rpc_2
-      url: "https://pub.dartlang.org"
+      sha256: "246b321532f0e8e2ba474b4d757eaa558ae4fdd0688fdbc1e1ca9705f9b8ca0e"
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.2"
+    version: "3.0.3"
   lints:
     dependency: "direct dev"
     description:
       name: lints
-      url: "https://pub.dartlang.org"
+      sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.0"
+    version: "5.1.1"
   logging:
     dependency: "direct main"
     description:
       name: logging
-      url: "https://pub.dartlang.org"
+      sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.2"
+    version: "1.3.0"
   matcher:
     dependency: transitive
     description:
       name: matcher
-      url: "https://pub.dartlang.org"
+      sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
+      url: "https://pub.dev"
     source: hosted
-    version: "0.12.12"
+    version: "0.12.17"
   meta:
     dependency: transitive
     description:
       name: meta
-      url: "https://pub.dartlang.org"
+      sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
+      url: "https://pub.dev"
     source: hosted
-    version: "1.8.0"
+    version: "1.16.0"
   mime:
     dependency: transitive
     description:
       name: mime
-      url: "https://pub.dartlang.org"
+      sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.2"
+    version: "2.0.0"
   mysql1:
     dependency: transitive
     description:
       name: mysql1
-      url: "https://pub.dartlang.org"
+      sha256: "68aec7003d2abc85769bafa1777af3f4a390a90c31032b89636758ff8eb839e9"
+      url: "https://pub.dev"
     source: hosted
     version: "0.20.0"
   mysql_client:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: mysql_client
-      url: "https://pub.dartlang.org"
+      sha256: "6a0fdcbe3e0721c637f97ad24649be2f70dbce2b21ede8f962910e640f753fc2"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.0.26"
+    version: "0.0.27"
   node_preamble:
     dependency: transitive
     description:
       name: node_preamble
-      url: "https://pub.dartlang.org"
+      sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.1"
+    version: "2.0.2"
   optional:
     dependency: "direct main"
     description:
       name: optional
-      url: "https://pub.dartlang.org"
+      sha256: f80327d7a3335a0be68418072668043c7ab291df575c21aa42e0c5633641da39
+      url: "https://pub.dev"
     source: hosted
     version: "6.1.0+1"
   package_config:
     dependency: transitive
     description:
       name: package_config
-      url: "https://pub.dartlang.org"
+      sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.2.0"
   path:
     dependency: transitive
     description:
       name: path
-      url: "https://pub.dartlang.org"
+      sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.8.2"
-  pedantic:
-    dependency: transitive
-    description:
-      name: pedantic
-      url: "https://pub.dartlang.org"
-    source: hosted
-    version: "1.11.1"
+    version: "1.9.1"
   pool:
     dependency: transitive
     description:
       name: pool
-      url: "https://pub.dartlang.org"
+      sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
+      url: "https://pub.dev"
     source: hosted
     version: "1.5.1"
   postgres:
     dependency: transitive
     description:
       name: postgres
-      url: "https://pub.dartlang.org"
+      sha256: "7a7f9805d33e41cb14fa22535959f3af51843a792015cdbd8f2fa78bcd1b501b"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.5.2"
+    version: "3.5.4"
   pub_semver:
     dependency: transitive
     description:
       name: pub_semver
-      url: "https://pub.dartlang.org"
+      sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.1"
+    version: "2.2.0"
   pubspec_parse:
     dependency: transitive
     description:
       name: pubspec_parse
-      url: "https://pub.dartlang.org"
+      sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.2.1"
+    version: "1.5.0"
   quiver:
     dependency: transitive
     description:
       name: quiver
-      url: "https://pub.dartlang.org"
+      sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2
+      url: "https://pub.dev"
     source: hosted
-    version: "3.1.0"
+    version: "3.2.2"
   recase:
     dependency: transitive
     description:
       name: recase
-      url: "https://pub.dartlang.org"
+      sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "4.1.0"
   sasl_scram:
     dependency: transitive
     description:
       name: sasl_scram
-      url: "https://pub.dartlang.org"
+      sha256: a47207a436eb650f8fdcf54a2e2587b850dc3caef9973ce01f332b07a6fc9cb9
+      url: "https://pub.dev"
     source: hosted
     version: "0.1.1"
   saslprep:
     dependency: transitive
     description:
       name: saslprep
-      url: "https://pub.dartlang.org"
+      sha256: "3d421d10be9513bf4459c17c5e70e7b8bc718c9fc5ad4ba5eb4f5fd27396f740"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.2"
+    version: "1.0.3"
   shelf:
     dependency: transitive
     description:
       name: shelf
-      url: "https://pub.dartlang.org"
+      sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+      url: "https://pub.dev"
     source: hosted
-    version: "1.3.2"
+    version: "1.4.2"
   shelf_packages_handler:
     dependency: transitive
     description:
       name: shelf_packages_handler
-      url: "https://pub.dartlang.org"
+      sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.1"
+    version: "3.0.2"
   shelf_static:
     dependency: transitive
     description:
       name: shelf_static
-      url: "https://pub.dartlang.org"
+      sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
+      url: "https://pub.dev"
     source: hosted
-    version: "1.1.1"
+    version: "1.1.3"
   shelf_web_socket:
     dependency: transitive
     description:
       name: shelf_web_socket
-      url: "https://pub.dartlang.org"
+      sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.2"
+    version: "3.0.0"
   source_gen:
     dependency: transitive
     description:
       name: source_gen
-      url: "https://pub.dartlang.org"
+      sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.2.3"
+    version: "2.0.0"
   source_map_stack_trace:
     dependency: transitive
     description:
       name: source_map_stack_trace
-      url: "https://pub.dartlang.org"
+      sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.1.2"
   source_maps:
     dependency: transitive
     description:
       name: source_maps
-      url: "https://pub.dartlang.org"
+      sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.10.10"
+    version: "0.10.13"
   source_span:
     dependency: transitive
     description:
       name: source_span
-      url: "https://pub.dartlang.org"
+      sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.9.1"
+    version: "1.10.1"
+  sprintf:
+    dependency: transitive
+    description:
+      name: sprintf
+      sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
+      url: "https://pub.dev"
+    source: hosted
+    version: "7.0.0"
   stack_trace:
     dependency: transitive
     description:
       name: stack_trace
-      url: "https://pub.dartlang.org"
+      sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.10.0"
+    version: "1.12.1"
   stream_channel:
     dependency: transitive
     description:
       name: stream_channel
-      url: "https://pub.dartlang.org"
+      sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.1.4"
   stream_transform:
     dependency: transitive
     description:
       name: stream_transform
-      url: "https://pub.dartlang.org"
+      sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.0"
+    version: "2.1.1"
   string_scanner:
     dependency: transitive
     description:
       name: string_scanner
-      url: "https://pub.dartlang.org"
+      sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.1.1"
+    version: "1.4.1"
   term_glyph:
     dependency: transitive
     description:
       name: term_glyph
-      url: "https://pub.dartlang.org"
+      sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.2.1"
+    version: "1.2.2"
   test:
     dependency: "direct dev"
     description:
       name: test
-      url: "https://pub.dartlang.org"
+      sha256: "301b213cd241ca982e9ba50266bd3f5bd1ea33f1455554c5abb85d1be0e2d87e"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.21.6"
+    version: "1.25.15"
   test_api:
     dependency: transitive
     description:
       name: test_api
-      url: "https://pub.dartlang.org"
+      sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
+      url: "https://pub.dev"
     source: hosted
-    version: "0.4.14"
+    version: "0.7.4"
   test_core:
     dependency: transitive
     description:
       name: test_core
-      url: "https://pub.dartlang.org"
+      sha256: "84d17c3486c8dfdbe5e12a50c8ae176d15e2a771b96909a9442b40173649ccaa"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.4.18"
+    version: "0.6.8"
   timing:
     dependency: transitive
     description:
       name: timing
-      url: "https://pub.dartlang.org"
+      sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.0"
+    version: "1.0.2"
   tuple:
     dependency: transitive
     description:
       name: tuple
-      url: "https://pub.dartlang.org"
+      sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.0"
+    version: "2.0.2"
   typed_data:
     dependency: transitive
     description:
       name: typed_data
-      url: "https://pub.dartlang.org"
+      sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
+      url: "https://pub.dev"
     source: hosted
-    version: "1.3.1"
+    version: "1.4.0"
   unorm_dart:
     dependency: transitive
     description:
       name: unorm_dart
-      url: "https://pub.dartlang.org"
+      sha256: "23d8bf65605401a6a32cff99435fed66ef3dab3ddcad3454059165df46496a3b"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.2.0"
+    version: "0.3.0"
   uuid:
     dependency: transitive
     description:
       name: uuid
-      url: "https://pub.dartlang.org"
+      sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.6"
+    version: "4.5.1"
   vm_service:
     dependency: transitive
     description:
       name: vm_service
-      url: "https://pub.dartlang.org"
+      sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
+      url: "https://pub.dev"
     source: hosted
-    version: "9.4.0"
+    version: "15.0.0"
   watcher:
     dependency: transitive
     description:
       name: watcher
-      url: "https://pub.dartlang.org"
+      sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.1"
+    version: "1.1.1"
+  web:
+    dependency: transitive
+    description:
+      name: web
+      sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.1"
+  web_socket:
+    dependency: transitive
+    description:
+      name: web_socket
+      sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.1.6"
   web_socket_channel:
     dependency: transitive
     description:
       name: web_socket_channel
-      url: "https://pub.dartlang.org"
+      sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.2.0"
+    version: "3.0.2"
   webkit_inspection_protocol:
     dependency: transitive
     description:
       name: webkit_inspection_protocol
-      url: "https://pub.dartlang.org"
+      sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.2.0"
+    version: "1.2.1"
   yaml:
     dependency: transitive
     description:
       name: yaml
-      url: "https://pub.dartlang.org"
+      sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
+      url: "https://pub.dev"
     source: hosted
-    version: "3.1.1"
+    version: "3.1.3"
 sdks:
-  dart: ">=2.18.0 <3.0.0"
+  dart: ">=3.6.0 <4.0.0"

+ 29 - 31
frameworks/Dart/angel3/orm-mysql/pubspec.yaml

@@ -1,40 +1,38 @@
 name: orm_mysql_app
-version: 1.0.0
+version: 2.0.0
 description: A basic starter application template for Angel3 framework
 publish_to: none
 environment:
-  sdk: '>=2.17.0 <3.0.0'
+  sdk: '>=3.6.0 <4.0.0'
+
 dependencies:
-  angel3_auth: ^7.0.0
-  angel3_configuration: ^7.0.0
-  angel3_framework: ^7.0.0
-  angel3_jael: ^7.0.0
-  angel3_migration: ^7.0.0
-  angel3_orm: ^7.0.0
-  angel3_orm_mysql: ^7.0.0
-  angel3_serialize: ^7.0.0
-  angel3_production: ^7.0.0
-  angel3_static: ^7.0.0
-  angel3_validate: ^7.0.0
-  jael3: ^7.0.0
-  belatuk_pretty_logging: ^5.0.0
+  angel3_auth: ^8.3.0
+  angel3_configuration: ^8.3.0
+  angel3_framework: ^8.5.0
+  angel3_jael: ^8.3.0
+  angel3_migration: ^8.3.0
+  angel3_orm: ^8.3.0
+  angel3_orm_mysql: ^8.3.0
+  angel3_serialize: ^8.3.0
+  angel3_production: ^8.3.0
+  angel3_static: ^8.3.0
+  angel3_validate: ^8.3.0
+  jael3: ^8.0.0
+  belatuk_pretty_logging: ^6.0.0
   optional: ^6.0.0
-  logging: ^1.0.0
+  logging: ^1.2.0
+  angel3_container: ^8.3.0
+  file: ^7.0.1
+  mysql_client: ^0.0.27
+
 dev_dependencies:
-  angel3_hot: ^7.0.0
-  angel3_migration_runner: ^7.0.0
-  angel3_orm_generator: ^7.0.0
-  angel3_serialize_generator: ^7.0.0
-  angel3_test: ^7.0.0
-  build_runner: ^2.0.3
+  angel3_hot: ^8.0.0
+  angel3_migration_runner: ^8.0.0
+  angel3_orm_generator: ^8.0.0
+  angel3_serialize_generator: ^8.0.0
+  angel3_test: ^8.0.0
+  build_runner: ^2.4.0
   io: ^1.0.0
-  test: ^1.17.5
-  lints: ^2.0.0
-# dependency_overrides:
-#  angel3_orm:
-#    path: ../../../../../belatuk/packages/orm/angel_orm
-#  angel3_orm_postgres:
-#    path: ../../../../../belatuk/packages/orm/angel_orm_postgres
-#  angel3_jael:
-#    path: ../../../../../belatuk/packages/jael/angel_jael
+  test: ^1.25.0
+  lints: ^5.0.0
      

+ 1 - 1
frameworks/Dart/angel3/orm-mysql/run/dev.dart

@@ -4,7 +4,7 @@ import 'package:belatuk_pretty_logging/belatuk_pretty_logging.dart';
 import 'package:angel3_container/mirrors.dart';
 import 'package:angel3_framework/angel3_framework.dart';
 import 'package:angel3_hot/angel3_hot.dart';
-import 'package:orm_mysql_app/orm_mysql_app.dart';
+import 'package:orm_mysql_app/benchmark_app.dart';
 
 void main() async {
   // Watch the config/ and web/ directories for changes, and hot-reload the server.

+ 1 - 24
frameworks/Dart/angel3/orm-mysql/run/prod.dart

@@ -1,29 +1,6 @@
 import 'package:angel3_container/mirrors.dart';
 import 'package:angel3_production/angel3_production.dart';
-import 'package:orm_mysql_app/orm_mysql_app.dart';
+import 'package:orm_mysql_app/benchmark_app.dart';
 
-// NOTE: By default, the Runner class does not use the `MirrorsReflector`, or any
-// reflector, by default.
-//
-// If your application is using any sort of functionality reliant on annotations or reflection,
-// either include the MirrorsReflector, or use a static reflector variant.
-//
-// The following use cases require reflection:
-// * Use of Controllers, via @Expose() or @ExposeWS()
-// * Use of dependency injection into constructors, whether in controllers or plain `container.make` calls
-// * Use of the `ioc` function in any route
-//
-// The `MirrorsReflector` from `package:angel_container/mirrors.dart` is by far the most convenient pattern,
-// so use it if possible.
-//
-// However, the following alternatives exist:
-// * Generation via `package:angel_container_generator`
-// * Creating an instance of `StaticReflector`
-// * Manually implementing the `Reflector` interface (cumbersome; not recommended)
-//
-// As of January 4th, 2018, the documentation has not yet been updated to state this,
-// so in the meantime, visit the Angel chat for further questions:
-//
-// https://gitter.im/angel_dart/discussion
 void main(List<String> args) =>
     Runner('Angel3', configureServer, reflector: MirrorsReflector()).run(args);

+ 4 - 9
frameworks/Dart/angel3/orm-mysql/test/all_test.dart

@@ -1,22 +1,17 @@
 import 'package:angel3_framework/angel3_framework.dart';
 import 'package:angel3_test/angel3_test.dart';
 import 'package:test/test.dart';
-import 'package:orm_mysql_app/orm_mysql_app.dart';
+import 'package:orm_mysql_app/benchmark_app.dart';
 
-// Angel also includes facilities to make testing easier.
+// Angel3 also includes facilities to make testing easier.
 //
-// `package:angel_test` ships a client that can test
-// both plain HTTP and WebSockets.
+// `package:angel3_test` ships a client that can test both plain HTTP and WebSockets.
 //
 // Tests do not require your server to actually be mounted on a port,
 // so they will run faster than they would in other frameworks, where you
 // would have to first bind a socket, and then account for network latency.
 //
-// See the documentation here:
-// https://github.com/angel-dart/test
-//
-// If you are unfamiliar with Dart's advanced testing library, you can read up
-// here:
+// If you are unfamiliar with Dart's advanced testing library, you can read up here:
 // https://github.com/dart-lang/test
 
 void main() async {

+ 0 - 1
frameworks/Dart/angel3/orm/config/default.yaml

@@ -2,7 +2,6 @@
 host: 127.0.0.1
 port: 8080
 postgres:
-  #host: localhost
   host: tfb-database
   port: 5432
   database_name: hello_world

+ 0 - 1
frameworks/Dart/angel3/orm/lib/benchmark_app.dart

@@ -1,4 +1,3 @@
-/// Your very own web application!
 import 'dart:async';
 import 'package:angel3_framework/angel3_framework.dart';
 import 'package:file/local.dart';

+ 16 - 43
frameworks/Dart/angel3/orm/lib/src/config/plugins/orm.dart

@@ -3,45 +3,23 @@ import 'dart:io';
 import 'package:angel3_framework/angel3_framework.dart';
 import 'package:angel3_orm/angel3_orm.dart';
 import 'package:angel3_orm_postgres/angel3_orm_postgres.dart';
-import 'package:postgres_pool/postgres_pool.dart';
+import 'package:postgres/postgres.dart';
 
 Future<void> configureServer(Angel app) async {
   var logger = app.environment.isProduction ? null : app.logger;
 
-  var connection = await connectToPostgres(app.configuration);
-  await connection.open();
-  var executor = PostgreSqlExecutor(connection, logger: logger);
-
-  //var executor = await connectToPostgresPool(app.configuration, logger);
+  var connector = await pooledPostgresConnections(app.configuration);
+  var executor = PostgreSqlPoolExecutor(connector, logger: logger);
 
   app
     ..container.registerSingleton<QueryExecutor>(executor)
-    ..shutdownHooks.add((_) => connection.close());
-//    ..shutdownHooks.add((_) => executor.close());
-}
-
-Future<PostgreSQLConnection> connectToPostgres(Map configuration) async {
-  var postgresConfig = configuration['postgres'] as Map? ?? {};
-  var connection = PostgreSQLConnection(
-      postgresConfig['host'] as String? ?? 'localhost',
-      postgresConfig['port'] as int? ?? 5432,
-      postgresConfig['database_name'] as String? ??
-          Platform.environment['USER'] ??
-          Platform.environment['USERNAME'] ??
-          '',
-      username: postgresConfig['username'] as String?,
-      password: postgresConfig['password'] as String?,
-      timeZone: postgresConfig['time_zone'] as String? ?? 'UTC',
-      timeoutInSeconds: postgresConfig['timeout_in_seconds'] as int? ?? 30,
-      useSSL: postgresConfig['use_ssl'] as bool? ?? false);
-  return connection;
+    ..shutdownHooks.add((_) => connector.close());
 }
 
-Future<PostgreSqlPoolExecutor> connectToPostgresPool(
-    Map configuration, dynamic logger) async {
+Future<Pool<dynamic>> pooledPostgresConnections(Map configuration) async {
   var postgresConfig = configuration['postgres'] as Map? ?? {};
-  var _pool = PgPool(
-    PgEndpoint(
+  return Pool.withEndpoints([
+    Endpoint(
         host: postgresConfig['host'] as String? ?? 'localhost',
         port: postgresConfig['port'] as int? ?? 5432,
         database: postgresConfig['database_name'] as String? ??
@@ -49,18 +27,13 @@ Future<PostgreSqlPoolExecutor> connectToPostgresPool(
             Platform.environment['USERNAME'] ??
             '',
         username: postgresConfig['username'] as String?,
-        password: postgresConfig['password'] as String?),
-    settings: PgPoolSettings()
-      ..maxConnectionAge = Duration(hours: 1)
-      ..concurrency = 10,
-  );
-
-  // Run sql to create the tables in a transaction
-  //await _pool.runTx((conn) async {
-  //  for (var s in schemas) {
-  //    await conn.execute(await File('test/migrations/$s.sql').readAsString());
-  //  }
-  //});
-
-  return PostgreSqlPoolExecutor(_pool, logger: logger);
+        password: postgresConfig['password'] as String?)
+  ],
+      settings: PoolSettings(
+          maxConnectionAge: Duration(hours: 1),
+          maxConnectionCount: 20,
+          connectTimeout: Duration(
+              seconds: postgresConfig['timeout_in_seconds'] as int? ?? 30),
+          timeZone: postgresConfig['time_zone'] as String? ?? 'UTC',
+          sslMode: SslMode.disable));
 }

+ 44 - 13
frameworks/Dart/angel3/orm/lib/src/models/fortune.g.dart

@@ -26,8 +26,10 @@ class FortuneMigration extends Migration {
 // **************************************************************************
 
 class FortuneQuery extends Query<Fortune, FortuneQueryWhere> {
-  FortuneQuery({Query? parent, Set<String>? trampoline})
-      : super(parent: parent) {
+  FortuneQuery({
+    Query? parent,
+    Set<String>? trampoline,
+  }) : super(parent: parent) {
     trampoline ??= <String>{};
     trampoline.add(tableName);
     _where = FortuneQueryWhere(this);
@@ -52,7 +54,10 @@ class FortuneQuery extends Query<Fortune, FortuneQueryWhere> {
 
   @override
   List<String> get fields {
-    const _fields = ['id', 'message'];
+    const _fields = [
+      'id',
+      'message',
+    ];
     return _selectedFields.isEmpty
         ? _fields
         : _fields.where((field) => _selectedFields.contains(field)).toList();
@@ -78,8 +83,9 @@ class FortuneQuery extends Query<Fortune, FortuneQueryWhere> {
       return Optional.empty();
     }
     var model = Fortune(
-        id: fields.contains('id') ? (row[0] as int?) : null,
-        message: fields.contains('message') ? (row[1] as String?) : null);
+      id: fields.contains('id') ? mapToInt(row[0]) : null,
+      message: fields.contains('message') ? (row[1] as String?) : null,
+    );
     return Optional.of(model);
   }
 
@@ -91,8 +97,14 @@ class FortuneQuery extends Query<Fortune, FortuneQueryWhere> {
 
 class FortuneQueryWhere extends QueryWhere {
   FortuneQueryWhere(FortuneQuery query)
-      : id = NumericSqlExpressionBuilder<int>(query, 'id'),
-        message = StringSqlExpressionBuilder(query, 'message');
+      : id = NumericSqlExpressionBuilder<int>(
+          query,
+          'id',
+        ),
+        message = StringSqlExpressionBuilder(
+          query,
+          'message',
+        );
 
   final NumericSqlExpressionBuilder<int> id;
 
@@ -100,7 +112,10 @@ class FortuneQueryWhere extends QueryWhere {
 
   @override
   List<SqlExpressionBuilder> get expressionBuilders {
-    return [id, message];
+    return [
+      id,
+      message,
+    ];
   }
 }
 
@@ -115,11 +130,13 @@ class FortuneQueryValues extends MapQueryValues {
   }
 
   set id(int? value) => values['id'] = value;
+
   String? get message {
     return (values['message'] as String?);
   }
 
   set message(String? value) => values['message'] = value;
+
   void copyFrom(Fortune model) {
     id = model.id;
     message = model.message;
@@ -132,7 +149,10 @@ class FortuneQueryValues extends MapQueryValues {
 
 @generatedSerializable
 class Fortune extends _Fortune {
-  Fortune({this.id, this.message});
+  Fortune({
+    this.id,
+    this.message,
+  });
 
   @override
   int? id;
@@ -140,7 +160,10 @@ class Fortune extends _Fortune {
   @override
   String? message;
 
-  Fortune copyWith({int? id, String? message}) {
+  Fortune copyWith({
+    int? id,
+    String? message,
+  }) {
     return Fortune(id: id ?? this.id, message: message ?? this.message);
   }
 
@@ -151,7 +174,10 @@ class Fortune extends _Fortune {
 
   @override
   int get hashCode {
-    return hashObjects([id, message]);
+    return hashObjects([
+      id,
+      message,
+    ]);
   }
 
   @override
@@ -189,22 +215,27 @@ class FortuneSerializer extends Codec<Fortune, Map> {
 
   @override
   FortuneEncoder get encoder => const FortuneEncoder();
+
   @override
   FortuneDecoder get decoder => const FortuneDecoder();
+
   static Fortune fromMap(Map map) {
     return Fortune(id: map['id'] as int?, message: map['message'] as String?);
   }
 
   static Map<String, dynamic> toMap(_Fortune? model) {
     if (model == null) {
-      return {};
+      throw FormatException("Required field [model] cannot be null");
     }
     return {'id': model.id, 'message': model.message};
   }
 }
 
 abstract class FortuneFields {
-  static const List<String> allFields = <String>[id, message];
+  static const List<String> allFields = <String>[
+    id,
+    message,
+  ];
 
   static const String id = 'id';
 

+ 44 - 13
frameworks/Dart/angel3/orm/lib/src/models/world.g.dart

@@ -26,7 +26,10 @@ class WorldMigration extends Migration {
 // **************************************************************************
 
 class WorldQuery extends Query<World, WorldQueryWhere> {
-  WorldQuery({Query? parent, Set<String>? trampoline}) : super(parent: parent) {
+  WorldQuery({
+    Query? parent,
+    Set<String>? trampoline,
+  }) : super(parent: parent) {
     trampoline ??= <String>{};
     trampoline.add(tableName);
     _where = WorldQueryWhere(this);
@@ -51,7 +54,10 @@ class WorldQuery extends Query<World, WorldQueryWhere> {
 
   @override
   List<String> get fields {
-    const _fields = ['id', 'randomNumber'];
+    const _fields = [
+      'id',
+      'randomNumber',
+    ];
     return _selectedFields.isEmpty
         ? _fields
         : _fields.where((field) => _selectedFields.contains(field)).toList();
@@ -77,9 +83,9 @@ class WorldQuery extends Query<World, WorldQueryWhere> {
       return Optional.empty();
     }
     var model = World(
-        id: fields.contains('id') ? (row[0] as int?) : null,
-        randomNumber:
-            fields.contains('randomNumber') ? (row[1] as int?) : null);
+      id: fields.contains('id') ? mapToInt(row[0]) : null,
+      randomNumber: fields.contains('randomNumber') ? mapToInt(row[1]) : null,
+    );
     return Optional.of(model);
   }
 
@@ -91,8 +97,14 @@ class WorldQuery extends Query<World, WorldQueryWhere> {
 
 class WorldQueryWhere extends QueryWhere {
   WorldQueryWhere(WorldQuery query)
-      : id = NumericSqlExpressionBuilder<int>(query, 'id'),
-        randomNumber = NumericSqlExpressionBuilder<int>(query, 'randomNumber');
+      : id = NumericSqlExpressionBuilder<int>(
+          query,
+          'id',
+        ),
+        randomNumber = NumericSqlExpressionBuilder<int>(
+          query,
+          'randomNumber',
+        );
 
   final NumericSqlExpressionBuilder<int> id;
 
@@ -100,7 +112,10 @@ class WorldQueryWhere extends QueryWhere {
 
   @override
   List<SqlExpressionBuilder> get expressionBuilders {
-    return [id, randomNumber];
+    return [
+      id,
+      randomNumber,
+    ];
   }
 }
 
@@ -115,11 +130,13 @@ class WorldQueryValues extends MapQueryValues {
   }
 
   set id(int? value) => values['id'] = value;
+
   int? get randomNumber {
     return (values['randomNumber'] as int?);
   }
 
   set randomNumber(int? value) => values['randomNumber'] = value;
+
   void copyFrom(World model) {
     id = model.id;
     randomNumber = model.randomNumber;
@@ -132,7 +149,10 @@ class WorldQueryValues extends MapQueryValues {
 
 @generatedSerializable
 class World extends _World {
-  World({this.id, this.randomNumber});
+  World({
+    this.id,
+    this.randomNumber,
+  });
 
   @override
   int? id;
@@ -140,7 +160,10 @@ class World extends _World {
   @override
   int? randomNumber;
 
-  World copyWith({int? id, int? randomNumber}) {
+  World copyWith({
+    int? id,
+    int? randomNumber,
+  }) {
     return World(
         id: id ?? this.id, randomNumber: randomNumber ?? this.randomNumber);
   }
@@ -154,7 +177,10 @@ class World extends _World {
 
   @override
   int get hashCode {
-    return hashObjects([id, randomNumber]);
+    return hashObjects([
+      id,
+      randomNumber,
+    ]);
   }
 
   @override
@@ -192,8 +218,10 @@ class WorldSerializer extends Codec<World, Map> {
 
   @override
   WorldEncoder get encoder => const WorldEncoder();
+
   @override
   WorldDecoder get decoder => const WorldDecoder();
+
   static World fromMap(Map map) {
     return World(
         id: map['id'] as int?, randomNumber: map['randomNumber'] as int?);
@@ -201,14 +229,17 @@ class WorldSerializer extends Codec<World, Map> {
 
   static Map<String, dynamic> toMap(_World? model) {
     if (model == null) {
-      return {};
+      throw FormatException("Required field [model] cannot be null");
     }
     return {'id': model.id, 'randomNumber': model.randomNumber};
   }
 }
 
 abstract class WorldFields {
-  static const List<String> allFields = <String>[id, randomNumber];
+  static const List<String> allFields = <String>[
+    id,
+    randomNumber,
+  ];
 
   static const String id = 'id';
 

+ 12 - 25
frameworks/Dart/angel3/orm/lib/src/routes/controllers/controllers.dart

@@ -1,5 +1,4 @@
 import 'dart:async';
-import 'dart:convert';
 import 'dart:math';
 import 'package:angel3_framework/angel3_framework.dart';
 import 'package:angel3_orm/angel3_orm.dart';
@@ -12,12 +11,12 @@ Future configureServer(Angel app) async {
   var executor = app.container.make<QueryExecutor>();
 
   // Generate a random number between 1 and 10000
-  int _genRandomId() {
+  int genRandomId() {
     var rand = Random();
     return rand.nextInt(10000) + 1;
   }
 
-  int _parseQueryCount(String? count) {
+  int parseQueryCount(String? count) {
     if (count == null) {
       return 1;
     }
@@ -30,11 +29,11 @@ Future configureServer(Angel app) async {
     return limit;
   }
 
-  List<int> _generateIds(int maxCount) {
+  List<int> generateIds(int maxCount) {
     var result = <int>[];
 
     while (result.length < maxCount) {
-      var id = _genRandomId();
+      var id = genRandomId();
       if (!result.contains(id)) {
         result.add(id);
       }
@@ -56,25 +55,18 @@ Future configureServer(Angel app) async {
 
   // Add an entry and sort a list of fortune
   app.get('/fortunes', (req, res) async {
-    //var stopwatch = Stopwatch()..start();
-
     var list = await FortuneQuery().get(executor);
 
-    //print('Query Time: ${stopwatch.elapsed.inMilliseconds}ms');
-
     list.add(
         Fortune(id: 0, message: 'Additional fortune added at request time.'));
     list.sort((a, b) => a.message?.compareTo(b.message ?? '') ?? 0);
 
-    //print('Process Time: ${stopwatch.elapsed.inMilliseconds}ms');
-    //stopwatch.stop();
-
     res.render('listing', {'fortunes': list});
   });
 
   // Find a random World
   app.get('/db', (req, res) async {
-    var id = _genRandomId();
+    var id = genRandomId();
     var query = WorldQuery()..where?.id.equals(id);
     var result = await query.get(executor);
     if (result.isNotEmpty) {
@@ -88,12 +80,12 @@ Future configureServer(Angel app) async {
   app.get('/query', (req, res) async {
     var params = req.queryParameters;
 
-    var queryLimit = _parseQueryCount(params['queries'] as String?);
+    var queryLimit = parseQueryCount(params['queries'] as String?);
 
-    var list = _generateIds(queryLimit);
-    var query = WorldQuery();
+    var list = generateIds(queryLimit);
     var result = <World>[];
     for (var id in list) {
+      var query = WorldQuery();
       query.where?.id.equals(id);
       var optWorld = await query.getOne(executor);
       result.add(optWorld.value);
@@ -104,28 +96,23 @@ Future configureServer(Angel app) async {
 
   // Update a list of worlds
   app.get('/updates', (req, res) async {
-    //var stopwatch = Stopwatch()..start();
-
     var params = req.queryParameters;
-    var queryLimit = _parseQueryCount(params['queries'] as String?);
-    var listOfIds = _generateIds(queryLimit);
+    var queryLimit = parseQueryCount(params['queries'] as String?);
+    var listOfIds = generateIds(queryLimit);
 
-    var query = WorldQuery();
     var result = <World>[];
     for (var id in listOfIds) {
+      var query = WorldQuery();
       query.where?.id.equals(id);
       var optWorld = await query.getOne(executor);
 
       query
         ..where?.id.equals(optWorld.value.id!)
-        ..values.randomNumber = _genRandomId();
+        ..values.randomNumber = genRandomId();
       var updatedRec = await query.updateOne(executor);
       result.add(updatedRec.value);
     }
 
-    //print('Process Time: ${stopwatch.elapsed.inMilliseconds}ms');
-    //stopwatch.stop();
-
     res.json(result);
   });
 }

+ 379 - 264
frameworks/Dart/angel3/orm/pubspec.lock

@@ -5,862 +5,977 @@ packages:
     dependency: transitive
     description:
       name: _fe_analyzer_shared
-      url: "https://pub.dartlang.org"
+      sha256: dc27559385e905ad30838356c5f5d574014ba39872d732111cd07ac0beff4c57
+      url: "https://pub.dev"
     source: hosted
-    version: "47.0.0"
+    version: "80.0.0"
   analyzer:
     dependency: transitive
     description:
       name: analyzer
-      url: "https://pub.dartlang.org"
+      sha256: "192d1c5b944e7e53b24b5586db760db934b177d4147c42fbca8c8c5f1eb8d11e"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.7.0"
+    version: "7.3.0"
   angel3_auth:
     dependency: "direct main"
     description:
       name: angel3_auth
-      url: "https://pub.dartlang.org"
+      sha256: "3996219fca7a49174c3745732a1e438ec94d55936697f2504196be4f3dbf191a"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_client:
     dependency: transitive
     description:
       name: angel3_client
-      url: "https://pub.dartlang.org"
+      sha256: e2886fdb41f243d85003f94127850bdd70f79fa5f7cf1f2b79b4f7029198e9dd
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.0"
   angel3_configuration:
     dependency: "direct main"
     description:
       name: angel3_configuration
-      url: "https://pub.dartlang.org"
+      sha256: f585699cf0ea5376d7ed6310e9fc57ccdd4645e5746ea0bae1fa6c05efe4e810
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_container:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: angel3_container
-      url: "https://pub.dartlang.org"
+      sha256: c08ea6b426242861d11109b748792503652a7eb0db4005409c0a031e80820c7f
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_framework:
     dependency: "direct main"
     description:
       name: angel3_framework
-      url: "https://pub.dartlang.org"
+      sha256: "91d56825b78846d9294e8aae789362644d4e24df4870d52d6c2cc6d8adf8d2c9"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.5.0"
   angel3_hot:
     dependency: "direct dev"
     description:
       name: angel3_hot
-      url: "https://pub.dartlang.org"
+      sha256: "8e1e7409631a49f05483e2067d1f27f594d558459712311b5ea4317b5519975b"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.0"
   angel3_http_exception:
     dependency: transitive
     description:
       name: angel3_http_exception
-      url: "https://pub.dartlang.org"
+      sha256: "9484b425a1aece1af3f2f0521fba429cd48f0a952521d40281333694c750e4ab"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_jael:
     dependency: "direct main"
     description:
       name: angel3_jael
-      url: "https://pub.dartlang.org"
+      sha256: "4ce85198613faff74ac8706065c619e7d6fc609aeb63b2fa7d9dba6f5a981f5c"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_migration:
     dependency: "direct main"
     description:
       name: angel3_migration
-      url: "https://pub.dartlang.org"
+      sha256: de7180ce8e48b0fe551c0b96cc83d0cafdcb71de3c75e13b0b08c3fdaf9df351
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.0"
   angel3_migration_runner:
     dependency: "direct dev"
     description:
       name: angel3_migration_runner
-      url: "https://pub.dartlang.org"
+      sha256: "30596dd82471dcddd35afb8b245c1dd56c8c53bdf77dee5e131c353e37e05f9b"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.1"
   angel3_mock_request:
     dependency: transitive
     description:
       name: angel3_mock_request
-      url: "https://pub.dartlang.org"
+      sha256: "8c8513a649d33c0c0531a120183da558000b4f044a4f30fd3ae22dfe11355a04"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_model:
     dependency: transitive
     description:
       name: angel3_model
-      url: "https://pub.dartlang.org"
+      sha256: "9a3f50b02bf119bb160d5f94580940b93973589d9b5949d284d2427b8fb65e16"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_orm:
     dependency: "direct main"
     description:
       name: angel3_orm
-      url: "https://pub.dartlang.org"
+      sha256: "9d1831b6b91820e312b52cf4c8c3cebb067be59b47123276fbc7741a01ae2ac5"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.1"
+    version: "8.3.2"
   angel3_orm_generator:
     dependency: "direct dev"
     description:
       name: angel3_orm_generator
-      url: "https://pub.dartlang.org"
+      sha256: "18426152dc86e1f0cd5fab14470f07a5b5ac7dd1b78f7e1bf8986d2625a898ec"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.1"
   angel3_orm_postgres:
     dependency: "direct main"
     description:
       name: angel3_orm_postgres
-      url: "https://pub.dartlang.org"
+      sha256: "7ecaec40b62b8d573ee72b1694f97353be4b6581b4da847d4bfe857f2540bd29"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.1"
+    version: "8.3.1"
   angel3_production:
     dependency: "direct main"
     description:
       name: angel3_production
-      url: "https://pub.dartlang.org"
+      sha256: "286d4b6dcd5e4297eea3db93cb419282ca14ef920f77439ef7b42c6229ab6219"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.1"
   angel3_route:
     dependency: transitive
     description:
       name: angel3_route
-      url: "https://pub.dartlang.org"
+      sha256: f2ebf4b134e13f804271d4e164a92de5dd25ad0bb651303df2c9e6fb397f32a8
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.0"
   angel3_serialize:
     dependency: "direct main"
     description:
       name: angel3_serialize
-      url: "https://pub.dartlang.org"
+      sha256: "4a4658b8af0d0eec6b8816699f137367c6af7c6f6a1f83a84e43fee55f892f5e"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_serialize_generator:
     dependency: "direct dev"
     description:
       name: angel3_serialize_generator
-      url: "https://pub.dartlang.org"
+      sha256: "0fd91dd1162f5c0d1b3c0f2734f48787202693926e6d6c97bca18658c8b812f4"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.1"
   angel3_static:
     dependency: "direct main"
     description:
       name: angel3_static
-      url: "https://pub.dartlang.org"
+      sha256: "534e827500304fa4e95f3613b130aad832dc65681b9a4c47a83891f65b04b554"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_test:
     dependency: "direct dev"
     description:
       name: angel3_test
-      url: "https://pub.dartlang.org"
+      sha256: "2ae3d83f83fb6c0834948b4ae3afc02da8c7ee38da3e164bd455564267e39ff8"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_validate:
     dependency: "direct main"
     description:
       name: angel3_validate
-      url: "https://pub.dartlang.org"
+      sha256: "661ef636583b0e60b35756d3d296d2ef7b257277fa703a494278ace9fcbe4f0c"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.3.0"
   angel3_websocket:
     dependency: transitive
     description:
       name: angel3_websocket
-      url: "https://pub.dartlang.org"
+      sha256: "160399b1898d5fd9c8294b4321691567687d9d86d8940aea83cc528b85427229"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.4.0"
   args:
     dependency: transitive
     description:
       name: args
-      url: "https://pub.dartlang.org"
+      sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
+      url: "https://pub.dev"
     source: hosted
-    version: "2.3.1"
+    version: "2.7.0"
   async:
     dependency: transitive
     description:
       name: async
-      url: "https://pub.dartlang.org"
+      sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.9.0"
+    version: "2.13.0"
   belatuk_code_buffer:
     dependency: transitive
     description:
       name: belatuk_code_buffer
-      url: "https://pub.dartlang.org"
+      sha256: "06c4329570e2cb72cb808c5f19d2004865b7c1f18447d4af16d465776416ccfc"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "5.3.0"
   belatuk_combinator:
     dependency: transitive
     description:
       name: belatuk_combinator
-      url: "https://pub.dartlang.org"
+      sha256: "0c54ddf1a6a7c94585c55a5852ccc13ad1a871e3e0709d3322d0286eb7afb7d7"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "5.3.0"
   belatuk_html_builder:
     dependency: transitive
     description:
       name: belatuk_html_builder
-      url: "https://pub.dartlang.org"
+      sha256: "0bdd783a54aa7435c86231b319bfffa06259aea6df59dbec62d351456062e67f"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "5.3.0"
   belatuk_http_server:
     dependency: transitive
     description:
       name: belatuk_http_server
-      url: "https://pub.dartlang.org"
+      sha256: "2a4ae9409f3586a95a3393b924c86fd38c30d955aa2437070c3198a1ec0a1686"
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.0"
+    version: "4.5.0"
   belatuk_json_serializer:
     dependency: transitive
     description:
       name: belatuk_json_serializer
-      url: "https://pub.dartlang.org"
+      sha256: b0b6ee6b4aa0552d84b487c5d1a97f72c9d5c4cbc4e2828f57e24635d5d75be8
+      url: "https://pub.dev"
     source: hosted
-    version: "6.0.1"
+    version: "7.3.0"
   belatuk_merge_map:
     dependency: transitive
     description:
       name: belatuk_merge_map
-      url: "https://pub.dartlang.org"
+      sha256: "1eb3c77417598e1d40c11d8d93b3c7bb5f10ca0977b2f942c623698bf3745f43"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "5.3.0"
   belatuk_pretty_logging:
     dependency: "direct main"
     description:
       name: belatuk_pretty_logging
-      url: "https://pub.dartlang.org"
+      sha256: "29fb3127ce58643e59fc4510ce41fa4d795f56997cbc661dffdf07e9a65e7021"
+      url: "https://pub.dev"
     source: hosted
-    version: "5.0.0"
+    version: "6.3.0"
   belatuk_pub_sub:
     dependency: transitive
     description:
       name: belatuk_pub_sub
-      url: "https://pub.dartlang.org"
+      sha256: "08c4f458165f7e2d76a3a4796e94092b98579aedd1fc8a64f39cfbbd18db249d"
+      url: "https://pub.dev"
     source: hosted
-    version: "5.0.0"
+    version: "6.4.0"
   belatuk_range_header:
     dependency: transitive
     description:
       name: belatuk_range_header
-      url: "https://pub.dartlang.org"
+      sha256: "78f315c8a53415a04a77dee3fcec6f867bac77d2e5d3e13ffc7532d1800adc53"
+      url: "https://pub.dev"
     source: hosted
-    version: "5.0.0"
+    version: "6.4.0"
   belatuk_symbol_table:
     dependency: transitive
     description:
       name: belatuk_symbol_table
-      url: "https://pub.dartlang.org"
+      sha256: "154f50623b2c5a669561588d86a445f97cf081de6e690ba9bc866dcd98508f50"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
+    version: "5.3.0"
   boolean_selector:
     dependency: transitive
     description:
       name: boolean_selector
-      url: "https://pub.dartlang.org"
+      sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.1.2"
   buffer:
     dependency: transitive
     description:
       name: buffer
-      url: "https://pub.dartlang.org"
+      sha256: "389da2ec2c16283c8787e0adaede82b1842102f8c8aae2f49003a766c5c6b3d1"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.1.1"
+    version: "1.2.3"
   build:
     dependency: transitive
     description:
       name: build
-      url: "https://pub.dartlang.org"
+      sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
+      url: "https://pub.dev"
     source: hosted
-    version: "2.3.0"
+    version: "2.4.2"
   build_config:
     dependency: transitive
     description:
       name: build_config
-      url: "https://pub.dartlang.org"
+      sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.1.0"
+    version: "1.1.2"
   build_daemon:
     dependency: transitive
     description:
       name: build_daemon
-      url: "https://pub.dartlang.org"
+      sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
+      url: "https://pub.dev"
     source: hosted
-    version: "3.1.0"
+    version: "4.0.4"
   build_resolvers:
     dependency: transitive
     description:
       name: build_resolvers
-      url: "https://pub.dartlang.org"
+      sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.9"
+    version: "2.4.4"
   build_runner:
     dependency: "direct dev"
     description:
       name: build_runner
-      url: "https://pub.dartlang.org"
+      sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.2.0"
+    version: "2.4.15"
   build_runner_core:
     dependency: transitive
     description:
       name: build_runner_core
-      url: "https://pub.dartlang.org"
+      sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.2.3"
+    version: "8.0.0"
   built_collection:
     dependency: transitive
     description:
       name: built_collection
-      url: "https://pub.dartlang.org"
+      sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
+      url: "https://pub.dev"
     source: hosted
     version: "5.1.1"
   built_value:
     dependency: transitive
     description:
       name: built_value
-      url: "https://pub.dartlang.org"
+      sha256: ea90e81dc4a25a043d9bee692d20ed6d1c4a1662a28c03a96417446c093ed6b4
+      url: "https://pub.dev"
     source: hosted
-    version: "8.4.1"
+    version: "8.9.5"
   charcode:
     dependency: transitive
     description:
       name: charcode
-      url: "https://pub.dartlang.org"
+      sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a
+      url: "https://pub.dev"
     source: hosted
-    version: "1.3.1"
+    version: "1.4.0"
   checked_yaml:
     dependency: transitive
     description:
       name: checked_yaml
-      url: "https://pub.dartlang.org"
+      sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.1"
+    version: "2.0.3"
   clock:
     dependency: transitive
     description:
       name: clock
-      url: "https://pub.dartlang.org"
+      sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
+      url: "https://pub.dev"
     source: hosted
-    version: "1.1.1"
+    version: "1.1.2"
   code_builder:
     dependency: transitive
     description:
       name: code_builder
-      url: "https://pub.dartlang.org"
+      sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.2.0"
+    version: "4.10.1"
   collection:
     dependency: transitive
     description:
       name: collection
-      url: "https://pub.dartlang.org"
+      sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.16.0"
+    version: "1.19.1"
   convert:
     dependency: transitive
     description:
       name: convert
-      url: "https://pub.dartlang.org"
+      sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.2"
+    version: "3.1.2"
   coverage:
     dependency: transitive
     description:
       name: coverage
-      url: "https://pub.dartlang.org"
+      sha256: e3493833ea012784c740e341952298f1cc77f1f01b1bbc3eb4eecf6984fb7f43
+      url: "https://pub.dev"
     source: hosted
-    version: "1.5.0"
+    version: "1.11.1"
   crypto:
     dependency: transitive
     description:
       name: crypto
-      url: "https://pub.dartlang.org"
+      sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.2"
+    version: "3.0.6"
   dart_style:
     dependency: transitive
     description:
       name: dart_style
-      url: "https://pub.dartlang.org"
+      sha256: "27eb0ae77836989a3bc541ce55595e8ceee0992807f14511552a898ddd0d88ac"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.2.3"
+    version: "3.0.1"
   dotenv:
     dependency: transitive
     description:
       name: dotenv
-      url: "https://pub.dartlang.org"
-    source: hosted
-    version: "4.0.1"
-  executor:
-    dependency: transitive
-    description:
-      name: executor
-      url: "https://pub.dartlang.org"
+      sha256: "379e64b6fc82d3df29461d349a1796ecd2c436c480d4653f3af6872eccbc90e1"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.2.2"
+    version: "4.2.0"
   file:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: file
-      url: "https://pub.dartlang.org"
+      sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
+      url: "https://pub.dev"
     source: hosted
-    version: "6.1.4"
+    version: "7.0.1"
   fixnum:
     dependency: transitive
     description:
       name: fixnum
-      url: "https://pub.dartlang.org"
+      sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.1"
+    version: "1.1.1"
   frontend_server_client:
     dependency: transitive
     description:
       name: frontend_server_client
-      url: "https://pub.dartlang.org"
+      sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.3"
+    version: "4.0.0"
   glob:
     dependency: transitive
     description:
       name: glob
-      url: "https://pub.dartlang.org"
+      sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.1.3"
   graphs:
     dependency: transitive
     description:
       name: graphs
-      url: "https://pub.dartlang.org"
+      sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.3.2"
   http:
     dependency: transitive
     description:
       name: http
-      url: "https://pub.dartlang.org"
+      sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
+      url: "https://pub.dev"
     source: hosted
-    version: "0.13.5"
+    version: "1.3.0"
   http2:
     dependency: transitive
     description:
       name: http2
-      url: "https://pub.dartlang.org"
+      sha256: "382d3aefc5bd6dc68c6b892d7664f29b5beb3251611ae946a98d35158a82bbfa"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.0"
+    version: "2.3.1"
   http_multi_server:
     dependency: transitive
     description:
       name: http_multi_server
-      url: "https://pub.dartlang.org"
+      sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
+      url: "https://pub.dev"
     source: hosted
-    version: "3.2.1"
+    version: "3.2.2"
   http_parser:
     dependency: transitive
     description:
       name: http_parser
-      url: "https://pub.dartlang.org"
+      sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.1"
+    version: "4.1.2"
   inflection3:
     dependency: transitive
     description:
       name: inflection3
-      url: "https://pub.dartlang.org"
+      sha256: cb54689bcfe3c0168a6979ee3191df584dcef4f870c5ef41c798bcb35ff5aca3
+      url: "https://pub.dev"
     source: hosted
     version: "0.5.3+2"
   intl:
     dependency: transitive
     description:
       name: intl
-      url: "https://pub.dartlang.org"
+      sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.17.0"
+    version: "0.20.2"
   io:
     dependency: "direct dev"
     description:
       name: io
-      url: "https://pub.dartlang.org"
+      sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.3"
+    version: "1.0.5"
   jael3:
     dependency: "direct main"
     description:
       name: jael3
-      url: "https://pub.dartlang.org"
+      sha256: bee0b8d328898dac9008caf7392400d03bc2035a3dd9acebe7ebee052ef9132b
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.2.0"
   jael3_preprocessor:
     dependency: transitive
     description:
       name: jael3_preprocessor
-      url: "https://pub.dartlang.org"
+      sha256: "8e70b92608e61c032f08bed82fa63b82e26b4ede4f4924b81bd75329fae9e9b8"
+      url: "https://pub.dev"
     source: hosted
-    version: "7.0.0"
+    version: "8.2.0"
   js:
     dependency: transitive
     description:
       name: js
-      url: "https://pub.dartlang.org"
+      sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
+      url: "https://pub.dev"
     source: hosted
-    version: "0.6.4"
+    version: "0.7.1"
   json_annotation:
     dependency: transitive
     description:
       name: json_annotation
-      url: "https://pub.dartlang.org"
+      sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
+      url: "https://pub.dev"
     source: hosted
-    version: "4.6.0"
+    version: "4.9.0"
   json_rpc_2:
     dependency: transitive
     description:
       name: json_rpc_2
-      url: "https://pub.dartlang.org"
+      sha256: "246b321532f0e8e2ba474b4d757eaa558ae4fdd0688fdbc1e1ca9705f9b8ca0e"
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.2"
+    version: "3.0.3"
   lints:
     dependency: "direct dev"
     description:
       name: lints
-      url: "https://pub.dartlang.org"
+      sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.0"
+    version: "5.1.1"
   logging:
     dependency: "direct main"
     description:
       name: logging
-      url: "https://pub.dartlang.org"
+      sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.2"
+    version: "1.3.0"
   matcher:
     dependency: transitive
     description:
       name: matcher
-      url: "https://pub.dartlang.org"
+      sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
+      url: "https://pub.dev"
     source: hosted
-    version: "0.12.12"
+    version: "0.12.17"
   meta:
     dependency: transitive
     description:
       name: meta
-      url: "https://pub.dartlang.org"
+      sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
+      url: "https://pub.dev"
     source: hosted
-    version: "1.8.0"
+    version: "1.16.0"
   mime:
     dependency: transitive
     description:
       name: mime
-      url: "https://pub.dartlang.org"
+      sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.2"
+    version: "2.0.0"
   mysql1:
     dependency: transitive
     description:
       name: mysql1
-      url: "https://pub.dartlang.org"
+      sha256: "68aec7003d2abc85769bafa1777af3f4a390a90c31032b89636758ff8eb839e9"
+      url: "https://pub.dev"
     source: hosted
     version: "0.20.0"
   mysql_client:
     dependency: transitive
     description:
       name: mysql_client
-      url: "https://pub.dartlang.org"
+      sha256: "6a0fdcbe3e0721c637f97ad24649be2f70dbce2b21ede8f962910e640f753fc2"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.0.25"
+    version: "0.0.27"
   node_preamble:
     dependency: transitive
     description:
       name: node_preamble
-      url: "https://pub.dartlang.org"
+      sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.1"
+    version: "2.0.2"
   optional:
     dependency: "direct main"
     description:
       name: optional
-      url: "https://pub.dartlang.org"
+      sha256: f80327d7a3335a0be68418072668043c7ab291df575c21aa42e0c5633641da39
+      url: "https://pub.dev"
     source: hosted
     version: "6.1.0+1"
   package_config:
     dependency: transitive
     description:
       name: package_config
-      url: "https://pub.dartlang.org"
+      sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.2.0"
   path:
     dependency: transitive
     description:
       name: path
-      url: "https://pub.dartlang.org"
-    source: hosted
-    version: "1.8.2"
-  pedantic:
-    dependency: transitive
-    description:
-      name: pedantic
-      url: "https://pub.dartlang.org"
+      sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.11.1"
+    version: "1.9.1"
   pool:
     dependency: transitive
     description:
       name: pool
-      url: "https://pub.dartlang.org"
+      sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
+      url: "https://pub.dev"
     source: hosted
     version: "1.5.1"
   postgres:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: postgres
-      url: "https://pub.dartlang.org"
-    source: hosted
-    version: "2.4.6"
-  postgres_pool:
-    dependency: transitive
-    description:
-      name: postgres_pool
-      url: "https://pub.dartlang.org"
+      sha256: "7a7f9805d33e41cb14fa22535959f3af51843a792015cdbd8f2fa78bcd1b501b"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.3"
+    version: "3.5.4"
   pub_semver:
     dependency: transitive
     description:
       name: pub_semver
-      url: "https://pub.dartlang.org"
+      sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.1"
+    version: "2.2.0"
   pubspec_parse:
     dependency: transitive
     description:
       name: pubspec_parse
-      url: "https://pub.dartlang.org"
+      sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.2.1"
+    version: "1.5.0"
   quiver:
     dependency: transitive
     description:
       name: quiver
-      url: "https://pub.dartlang.org"
+      sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2
+      url: "https://pub.dev"
     source: hosted
-    version: "3.1.0"
+    version: "3.2.2"
   recase:
     dependency: transitive
     description:
       name: recase
-      url: "https://pub.dartlang.org"
+      sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213
+      url: "https://pub.dev"
     source: hosted
-    version: "4.0.0"
-  retry:
-    dependency: transitive
-    description:
-      name: retry
-      url: "https://pub.dartlang.org"
-    source: hosted
-    version: "3.1.0"
+    version: "4.1.0"
   sasl_scram:
     dependency: transitive
     description:
       name: sasl_scram
-      url: "https://pub.dartlang.org"
+      sha256: a47207a436eb650f8fdcf54a2e2587b850dc3caef9973ce01f332b07a6fc9cb9
+      url: "https://pub.dev"
     source: hosted
     version: "0.1.1"
   saslprep:
     dependency: transitive
     description:
       name: saslprep
-      url: "https://pub.dartlang.org"
+      sha256: "3d421d10be9513bf4459c17c5e70e7b8bc718c9fc5ad4ba5eb4f5fd27396f740"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.2"
+    version: "1.0.3"
   shelf:
     dependency: transitive
     description:
       name: shelf
-      url: "https://pub.dartlang.org"
+      sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+      url: "https://pub.dev"
     source: hosted
-    version: "1.3.2"
+    version: "1.4.2"
   shelf_packages_handler:
     dependency: transitive
     description:
       name: shelf_packages_handler
-      url: "https://pub.dartlang.org"
+      sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.1"
+    version: "3.0.2"
   shelf_static:
     dependency: transitive
     description:
       name: shelf_static
-      url: "https://pub.dartlang.org"
+      sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
+      url: "https://pub.dev"
     source: hosted
-    version: "1.1.1"
+    version: "1.1.3"
   shelf_web_socket:
     dependency: transitive
     description:
       name: shelf_web_socket
-      url: "https://pub.dartlang.org"
+      sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.2"
+    version: "3.0.0"
   source_gen:
     dependency: transitive
     description:
       name: source_gen
-      url: "https://pub.dartlang.org"
+      sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.2.2"
+    version: "2.0.0"
   source_map_stack_trace:
     dependency: transitive
     description:
       name: source_map_stack_trace
-      url: "https://pub.dartlang.org"
+      sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.1.2"
   source_maps:
     dependency: transitive
     description:
       name: source_maps
-      url: "https://pub.dartlang.org"
+      sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.10.10"
+    version: "0.10.13"
   source_span:
     dependency: transitive
     description:
       name: source_span
-      url: "https://pub.dartlang.org"
+      sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.9.1"
+    version: "1.10.1"
+  sprintf:
+    dependency: transitive
+    description:
+      name: sprintf
+      sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
+      url: "https://pub.dev"
+    source: hosted
+    version: "7.0.0"
   stack_trace:
     dependency: transitive
     description:
       name: stack_trace
-      url: "https://pub.dartlang.org"
+      sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.10.0"
+    version: "1.12.1"
   stream_channel:
     dependency: transitive
     description:
       name: stream_channel
-      url: "https://pub.dartlang.org"
+      sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.1.4"
   stream_transform:
     dependency: transitive
     description:
       name: stream_transform
-      url: "https://pub.dartlang.org"
+      sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.0"
+    version: "2.1.1"
   string_scanner:
     dependency: transitive
     description:
       name: string_scanner
-      url: "https://pub.dartlang.org"
+      sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.1.1"
+    version: "1.4.1"
   term_glyph:
     dependency: transitive
     description:
       name: term_glyph
-      url: "https://pub.dartlang.org"
+      sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.2.1"
+    version: "1.2.2"
   test:
     dependency: "direct dev"
     description:
       name: test
-      url: "https://pub.dartlang.org"
+      sha256: "301b213cd241ca982e9ba50266bd3f5bd1ea33f1455554c5abb85d1be0e2d87e"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.21.5"
+    version: "1.25.15"
   test_api:
     dependency: transitive
     description:
       name: test_api
-      url: "https://pub.dartlang.org"
+      sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
+      url: "https://pub.dev"
     source: hosted
-    version: "0.4.13"
+    version: "0.7.4"
   test_core:
     dependency: transitive
     description:
       name: test_core
-      url: "https://pub.dartlang.org"
+      sha256: "84d17c3486c8dfdbe5e12a50c8ae176d15e2a771b96909a9442b40173649ccaa"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.4.17"
+    version: "0.6.8"
   timing:
     dependency: transitive
     description:
       name: timing
-      url: "https://pub.dartlang.org"
+      sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.0"
+    version: "1.0.2"
   tuple:
     dependency: transitive
     description:
       name: tuple
-      url: "https://pub.dartlang.org"
+      sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
+      url: "https://pub.dev"
     source: hosted
-    version: "2.0.0"
+    version: "2.0.2"
   typed_data:
     dependency: transitive
     description:
       name: typed_data
-      url: "https://pub.dartlang.org"
+      sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
+      url: "https://pub.dev"
     source: hosted
-    version: "1.3.1"
+    version: "1.4.0"
   unorm_dart:
     dependency: transitive
     description:
       name: unorm_dart
-      url: "https://pub.dartlang.org"
+      sha256: "23d8bf65605401a6a32cff99435fed66ef3dab3ddcad3454059165df46496a3b"
+      url: "https://pub.dev"
     source: hosted
-    version: "0.2.0"
+    version: "0.3.0"
   uuid:
     dependency: transitive
     description:
       name: uuid
-      url: "https://pub.dartlang.org"
+      sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
+      url: "https://pub.dev"
     source: hosted
-    version: "3.0.6"
+    version: "4.5.1"
   vm_service:
     dependency: transitive
     description:
       name: vm_service
-      url: "https://pub.dartlang.org"
+      sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
+      url: "https://pub.dev"
     source: hosted
-    version: "9.3.0"
+    version: "15.0.0"
   watcher:
     dependency: transitive
     description:
       name: watcher
-      url: "https://pub.dartlang.org"
+      sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.1"
+  web:
+    dependency: transitive
+    description:
+      name: web
+      sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.0.1"
+    version: "1.1.1"
+  web_socket:
+    dependency: transitive
+    description:
+      name: web_socket
+      sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.1.6"
   web_socket_channel:
     dependency: transitive
     description:
       name: web_socket_channel
-      url: "https://pub.dartlang.org"
+      sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5"
+      url: "https://pub.dev"
     source: hosted
-    version: "2.2.0"
+    version: "3.0.2"
   webkit_inspection_protocol:
     dependency: transitive
     description:
       name: webkit_inspection_protocol
-      url: "https://pub.dartlang.org"
+      sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
+      url: "https://pub.dev"
     source: hosted
-    version: "1.2.0"
+    version: "1.2.1"
   yaml:
     dependency: transitive
     description:
       name: yaml
-      url: "https://pub.dartlang.org"
+      sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
+      url: "https://pub.dev"
     source: hosted
-    version: "3.1.1"
+    version: "3.1.3"
 sdks:
-  dart: ">=2.18.0-146.0.dev <3.0.0"
+  dart: ">=3.6.0 <4.0.0"

+ 29 - 31
frameworks/Dart/angel3/orm/pubspec.yaml

@@ -1,40 +1,38 @@
 name: benchmark_app
-version: 1.0.0
+version: 2.0.0
 description: A basic starter application template for Angel3 framework
 publish_to: none
 environment:
-  sdk: '>=2.17.0 <3.0.0'
+  sdk: '>=3.6.0 <4.0.0'
+
 dependencies:
-  angel3_auth: ^7.0.0
-  angel3_configuration: ^7.0.0
-  angel3_framework: ^7.0.0
-  angel3_jael: ^7.0.0
-  angel3_migration: ^7.0.0
-  angel3_orm: ^7.0.0
-  angel3_orm_postgres: ^7.0.0
-  angel3_serialize: ^7.0.0
-  angel3_production: ^7.0.0
-  angel3_static: ^7.0.0
-  angel3_validate: ^7.0.0
-  jael3: ^7.0.0
-  belatuk_pretty_logging: ^5.0.0
+  angel3_auth: ^8.3.0
+  angel3_configuration: ^8.3.0
+  angel3_framework: ^8.5.0
+  angel3_jael: ^8.3.0
+  angel3_migration: ^8.4.0
+  angel3_orm: ^8.3.0
+  angel3_orm_postgres: ^8.3.0
+  angel3_serialize: ^8.3.0
+  angel3_production: ^8.3.0
+  angel3_static: ^8.3.0
+  angel3_validate: ^8.3.0
+  jael3: ^8.0.0
+  belatuk_pretty_logging: ^6.0.0
+  postgres: ^3.5.0
   optional: ^6.0.0
-  logging: ^1.0.0
+  logging: ^1.3.0
+  angel3_container: ^8.3.0
+  file: ^7.0.1
+
 dev_dependencies:
-  angel3_hot: ^7.0.0
-  angel3_migration_runner: ^7.0.0
-  angel3_orm_generator: ^7.0.0
-  angel3_serialize_generator: ^7.0.0
-  angel3_test: ^7.0.0
-  build_runner: ^2.0.3
+  angel3_hot: ^8.3.0
+  angel3_migration_runner: ^8.3.0
+  angel3_orm_generator: ^8.3.0
+  angel3_serialize_generator: ^8.3.0
+  angel3_test: ^8.3.0
+  build_runner: ^2.4.0
   io: ^1.0.0
-  test: ^1.17.5
-  lints: ^2.0.0
-#dependency_overrides:
-#  angel3_orm:
-#    path: ../../../../../belatuk/packages/orm/angel_orm
-#  angel3_orm_postgres:
-#    path: ../../../../../belatuk/packages/orm/angel_orm_postgres
-#  angel3_jael:
-#    path: ../../../../../belatuk/packages/jael/angel_jael
+  test: ^1.25.0
+  lints: ^5.0.0
      

+ 0 - 23
frameworks/Dart/angel3/orm/run/prod.dart

@@ -2,28 +2,5 @@ import 'package:angel3_container/mirrors.dart';
 import 'package:angel3_production/angel3_production.dart';
 import 'package:benchmark_app/benchmark_app.dart';
 
-// NOTE: By default, the Runner class does not use the `MirrorsReflector`, or any
-// reflector, by default.
-//
-// If your application is using any sort of functionality reliant on annotations or reflection,
-// either include the MirrorsReflector, or use a static reflector variant.
-//
-// The following use cases require reflection:
-// * Use of Controllers, via @Expose() or @ExposeWS()
-// * Use of dependency injection into constructors, whether in controllers or plain `container.make` calls
-// * Use of the `ioc` function in any route
-//
-// The `MirrorsReflector` from `package:angel_container/mirrors.dart` is by far the most convenient pattern,
-// so use it if possible.
-//
-// However, the following alternatives exist:
-// * Generation via `package:angel_container_generator`
-// * Creating an instance of `StaticReflector`
-// * Manually implementing the `Reflector` interface (cumbersome; not recommended)
-//
-// As of January 4th, 2018, the documentation has not yet been updated to state this,
-// so in the meantime, visit the Angel chat for further questions:
-//
-// https://gitter.im/angel_dart/discussion
 void main(List<String> args) =>
     Runner('Angel3', configureServer, reflector: MirrorsReflector()).run(args);

+ 1 - 5
frameworks/Dart/angel3/orm/test/all_test.dart

@@ -5,16 +5,12 @@ import 'package:benchmark_app/benchmark_app.dart';
 
 // Angel also includes facilities to make testing easier.
 //
-// `package:angel_test` ships a client that can test
-// both plain HTTP and WebSockets.
+// `package:angel3_test` ships a client that can test both plain HTTP and WebSockets.
 //
 // Tests do not require your server to actually be mounted on a port,
 // so they will run faster than they would in other frameworks, where you
 // would have to first bind a socket, and then account for network latency.
 //
-// See the documentation here:
-// https://github.com/angel-dart/test
-//
 // If you are unfamiliar with Dart's advanced testing library, you can read up
 // here:
 // https://github.com/dart-lang/test