From 84f6919fa97191ae93afcc5eef493e2c53e1fb78 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Wed, 8 Oct 2025 15:39:46 -0700 Subject: [PATCH] shelf_router_generator: update dependencies, SDK --- .github/workflows/dart.yml | 20 +-- pkgs/shelf_router_generator/CHANGELOG.md | 8 + .../lib/src/shelf_router_generator.dart | 148 +++++++++--------- pkgs/shelf_router_generator/pubspec.yaml | 16 +- 4 files changed, 102 insertions(+), 90 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 5e474bf..1c744b1 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -166,23 +166,23 @@ jobs: if: "always() && steps.pkgs_shelf_web_socket_pub_upgrade.conclusion == 'success'" working-directory: pkgs/shelf_web_socket job_005: - name: "analyze_and_format; linux; Dart 3.7.0; PKG: pkgs/shelf_router_generator; `dart analyze --fatal-infos .`" + name: "analyze_and_format; linux; Dart 3.9.0; PKG: pkgs/shelf_router_generator; `dart analyze --fatal-infos .`" runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 with: path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/shelf_router_generator;commands:analyze" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0;packages:pkgs/shelf_router_generator;commands:analyze" restore-keys: | - os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/shelf_router_generator - os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0 + os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0;packages:pkgs/shelf_router_generator + os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0 os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest - name: Setup Dart SDK uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c with: - sdk: "3.7.0" + sdk: "3.9.0" - id: checkout name: Checkout repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 @@ -608,23 +608,23 @@ jobs: - job_006 - job_007 job_013: - name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/shelf_router_generator; `dart test --test-randomize-ordering-seed=random`" + name: "unit_test; linux; Dart 3.9.0; PKG: pkgs/shelf_router_generator; `dart test --test-randomize-ordering-seed=random`" runs-on: ubuntu-latest steps: - name: Cache Pub hosted dependencies uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 with: path: "~/.pub-cache/hosted" - key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/shelf_router_generator;commands:test_0" + key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0;packages:pkgs/shelf_router_generator;commands:test_0" restore-keys: | - os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/shelf_router_generator - os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0 + os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0;packages:pkgs/shelf_router_generator + os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0 os:ubuntu-latest;pub-cache-hosted os:ubuntu-latest - name: Setup Dart SDK uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c with: - sdk: "3.7.0" + sdk: "3.9.0" - id: checkout name: Checkout repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 diff --git a/pkgs/shelf_router_generator/CHANGELOG.md b/pkgs/shelf_router_generator/CHANGELOG.md index 9077383..b1089aa 100644 --- a/pkgs/shelf_router_generator/CHANGELOG.md +++ b/pkgs/shelf_router_generator/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.1.3-wip + +* Require `analyzer: ^8.1.1` +* Require `build: ^4.0.0` +* Require `build_config: ^1.2.0` +* Require `source_gen: ^4.0.1` +* Require `sdk: ^3.9.0` + ## 1.1.2 * Require `analyzer: '>=7.4.0 <9.0.0'` diff --git a/pkgs/shelf_router_generator/lib/src/shelf_router_generator.dart b/pkgs/shelf_router_generator/lib/src/shelf_router_generator.dart index 27906de..b3c148d 100644 --- a/pkgs/shelf_router_generator/lib/src/shelf_router_generator.dart +++ b/pkgs/shelf_router_generator/lib/src/shelf_router_generator.dart @@ -30,11 +30,20 @@ import 'package:shelf_router/src/router_entry.dart' // ignore: implementation_im import 'package:source_gen/source_gen.dart' as g; // Type checkers that we need later -const _routeType = g.TypeChecker.fromRuntime(shelf_router.Route); -const _routerType = g.TypeChecker.fromRuntime(shelf_router.Router); -const _responseType = g.TypeChecker.fromRuntime(shelf.Response); -const _requestType = g.TypeChecker.fromRuntime(shelf.Request); -const _stringType = g.TypeChecker.fromRuntime(String); +const _routeType = g.TypeChecker.typeNamed( + shelf_router.Route, + inPackage: 'shelf_router', +); +const _routerType = g.TypeChecker.typeNamed( + shelf_router.Router, + inPackage: 'shelf_router', +); +const _responseType = g.TypeChecker.typeNamed( + shelf.Response, + inPackage: 'shelf', +); +const _requestType = g.TypeChecker.typeNamed(shelf.Request, inPackage: 'shelf'); +const _stringType = g.TypeChecker.typeNamed(String, inSdk: true); /// A representation of a handler that was annotated with [shelf_router.Route]. class _Handler { @@ -47,13 +56,15 @@ class _Handler { /// Find members of a class annotated with [shelf_router.Route]. List getAnnotatedElementsOrderBySourceOffset( ClassElement2 cls, -) => [ - ...cls.methods2.where(_routeType.hasAnnotationOfExact), - ...cls.getters2.where(_routeType.hasAnnotationOfExact), -]..sort( - (a, b) => - (a.firstFragment.nameOffset2!).compareTo(b.firstFragment.nameOffset2!), -); +) => + [ + ...cls.methods2.where(_routeType.hasAnnotationOfExact), + ...cls.getters2.where(_routeType.hasAnnotationOfExact), + ]..sort( + (a, b) => (a.firstFragment.nameOffset2!).compareTo( + b.firstFragment.nameOffset2!, + ), + ); /// Generate a `_$Router( service)` method that returns a /// [shelf_router.Router] configured based on annotated handlers. @@ -61,37 +72,34 @@ code.Method _buildRouterMethod({ required ClassElement2 classElement, required List<_Handler> handlers, }) => code.Method( - (b) => - b - ..name = '_\$${classElement.name3}Router' - ..requiredParameters.add( - code.Parameter( - (b) => - b - ..name = 'service' - ..type = code.refer(classElement.name3!), + (b) => b + ..name = '_\$${classElement.name3}Router' + ..requiredParameters.add( + code.Parameter( + (b) => b + ..name = 'service' + ..type = code.refer(classElement.name3!), + ), + ) + ..returns = code.refer('Router') + ..body = code.Block( + (b) => b + ..addExpression( + code + .declareFinal('router') + .assign(code.refer('Router').newInstance([])), + ) + ..statements.addAll( + handlers.map( + (h) => _buildAddHandlerCode( + router: code.refer('router'), + service: code.refer('service'), + handler: h, + ), ), ) - ..returns = code.refer('Router') - ..body = code.Block( - (b) => - b - ..addExpression( - code - .declareFinal('router') - .assign(code.refer('Router').newInstance([])), - ) - ..statements.addAll( - handlers.map( - (h) => _buildAddHandlerCode( - router: code.refer('router'), - service: code.refer('service'), - handler: h, - ), - ), - ) - ..addExpression(code.refer('router').returned), - ), + ..addExpression(code.refer('router').returned), + ), ); /// Generate the code statement that adds [handler] from [service] to [router]. @@ -100,22 +108,19 @@ code.Code _buildAddHandlerCode({ required code.Reference service, required _Handler handler, }) => switch (handler.verb) { - r'$mount' => - router.property('mount').call([ - code.literalString(handler.route, raw: true), - service.property(handler.element.name3!).property('call'), - ]).statement, - r'$all' => - router.property('all').call([ - code.literalString(handler.route, raw: true), - service.property(handler.element.name3!), - ]).statement, - _ => - router.property('add').call([ - code.literalString(handler.verb.toUpperCase()), - code.literalString(handler.route, raw: true), - service.property(handler.element.name3!), - ]).statement, + r'$mount' => router.property('mount').call([ + code.literalString(handler.route, raw: true), + service.property(handler.element.name3!).property('call'), + ]).statement, + r'$all' => router.property('all').call([ + code.literalString(handler.route, raw: true), + service.property(handler.element.name3!), + ]).statement, + _ => router.property('add').call([ + code.literalString(handler.verb.toUpperCase()), + code.literalString(handler.route, raw: true), + service.property(handler.element.name3!), + ]).statement, }; class ShelfRouterGenerator extends g.Generator { @@ -131,21 +136,20 @@ class ShelfRouterGenerator extends g.Generator { } log.info('found shelf_router.Route annotations in ${cls.name3}'); - classes[cls] = - elements - .map( - (e) => _routeType - .annotationsOfExact(e) - .map( - (a) => _Handler( - a.getField('verb')!.toStringValue()!, - a.getField('route')!.toStringValue()!, - e, - ), - ), - ) - .expand((i) => i) - .toList(); + classes[cls] = elements + .map( + (e) => _routeType + .annotationsOfExact(e) + .map( + (a) => _Handler( + a.getField('verb')!.toStringValue()!, + a.getField('route')!.toStringValue()!, + e, + ), + ), + ) + .expand((i) => i) + .toList(); } if (classes.isEmpty) { return null; // nothing to do if nothing was annotated diff --git a/pkgs/shelf_router_generator/pubspec.yaml b/pkgs/shelf_router_generator/pubspec.yaml index 276d295..2e28b51 100644 --- a/pkgs/shelf_router_generator/pubspec.yaml +++ b/pkgs/shelf_router_generator/pubspec.yaml @@ -1,5 +1,5 @@ name: shelf_router_generator -version: 1.1.2 +version: 1.1.3-wip description: > A package:build-compatible builder for generating request routers for the shelf web-framework based on source annotations. @@ -11,21 +11,21 @@ topics: - shelf environment: - sdk: ^3.7.0 + sdk: ^3.9.0 dependencies: - analyzer: '>=7.4.0 <9.0.0' - build: ^3.0.0 - build_config: ^1.1.0 + analyzer: ^8.1.1 + build: ^4.0.0 + build_config: ^1.2.0 code_builder: ^4.2.0 http_methods: ^1.1.0 shelf: ^1.1.0 shelf_router: ^1.1.0 - source_gen: ^3.0.0 + source_gen: ^4.0.1 dev_dependencies: - build_runner: ^2.6.0 + build_runner: ^2.7.2 build_verify: ^3.0.0 dart_flutter_team_lints: ^3.0.0 http: ^1.0.0 - test: ^1.25.9 + test: ^1.26.3