Skip to content

Commit 710b8ce

Browse files
authored
shelf_router_generator: update dependencies, SDK (#484)
1 parent f30d650 commit 710b8ce

File tree

4 files changed

+102
-90
lines changed

4 files changed

+102
-90
lines changed

.github/workflows/dart.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -166,23 +166,23 @@ jobs:
166166
if: "always() && steps.pkgs_shelf_web_socket_pub_upgrade.conclusion == 'success'"
167167
working-directory: pkgs/shelf_web_socket
168168
job_005:
169-
name: "analyze_and_format; linux; Dart 3.7.0; PKG: pkgs/shelf_router_generator; `dart analyze --fatal-infos .`"
169+
name: "analyze_and_format; linux; Dart 3.9.0; PKG: pkgs/shelf_router_generator; `dart analyze --fatal-infos .`"
170170
runs-on: ubuntu-latest
171171
steps:
172172
- name: Cache Pub hosted dependencies
173173
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830
174174
with:
175175
path: "~/.pub-cache/hosted"
176-
key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/shelf_router_generator;commands:analyze"
176+
key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0;packages:pkgs/shelf_router_generator;commands:analyze"
177177
restore-keys: |
178-
os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/shelf_router_generator
179-
os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
178+
os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0;packages:pkgs/shelf_router_generator
179+
os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0
180180
os:ubuntu-latest;pub-cache-hosted
181181
os:ubuntu-latest
182182
- name: Setup Dart SDK
183183
uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c
184184
with:
185-
sdk: "3.7.0"
185+
sdk: "3.9.0"
186186
- id: checkout
187187
name: Checkout repository
188188
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
@@ -608,23 +608,23 @@ jobs:
608608
- job_006
609609
- job_007
610610
job_013:
611-
name: "unit_test; linux; Dart 3.7.0; PKG: pkgs/shelf_router_generator; `dart test --test-randomize-ordering-seed=random`"
611+
name: "unit_test; linux; Dart 3.9.0; PKG: pkgs/shelf_router_generator; `dart test --test-randomize-ordering-seed=random`"
612612
runs-on: ubuntu-latest
613613
steps:
614614
- name: Cache Pub hosted dependencies
615615
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830
616616
with:
617617
path: "~/.pub-cache/hosted"
618-
key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/shelf_router_generator;commands:test_0"
618+
key: "os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0;packages:pkgs/shelf_router_generator;commands:test_0"
619619
restore-keys: |
620-
os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0;packages:pkgs/shelf_router_generator
621-
os:ubuntu-latest;pub-cache-hosted;sdk:3.7.0
620+
os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0;packages:pkgs/shelf_router_generator
621+
os:ubuntu-latest;pub-cache-hosted;sdk:3.9.0
622622
os:ubuntu-latest;pub-cache-hosted
623623
os:ubuntu-latest
624624
- name: Setup Dart SDK
625625
uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c
626626
with:
627-
sdk: "3.7.0"
627+
sdk: "3.9.0"
628628
- id: checkout
629629
name: Checkout repository
630630
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8

pkgs/shelf_router_generator/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## 1.1.3-wip
2+
3+
* Require `analyzer: ^8.1.1`
4+
* Require `build: ^4.0.0`
5+
* Require `build_config: ^1.2.0`
6+
* Require `source_gen: ^4.0.1`
7+
* Require `sdk: ^3.9.0`
8+
19
## 1.1.2
210

311
* Require `analyzer: '>=7.4.0 <9.0.0'`

pkgs/shelf_router_generator/lib/src/shelf_router_generator.dart

Lines changed: 76 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,20 @@ import 'package:shelf_router/src/router_entry.dart' // ignore: implementation_im
3030
import 'package:source_gen/source_gen.dart' as g;
3131

3232
// Type checkers that we need later
33-
const _routeType = g.TypeChecker.fromRuntime(shelf_router.Route);
34-
const _routerType = g.TypeChecker.fromRuntime(shelf_router.Router);
35-
const _responseType = g.TypeChecker.fromRuntime(shelf.Response);
36-
const _requestType = g.TypeChecker.fromRuntime(shelf.Request);
37-
const _stringType = g.TypeChecker.fromRuntime(String);
33+
const _routeType = g.TypeChecker.typeNamed(
34+
shelf_router.Route,
35+
inPackage: 'shelf_router',
36+
);
37+
const _routerType = g.TypeChecker.typeNamed(
38+
shelf_router.Router,
39+
inPackage: 'shelf_router',
40+
);
41+
const _responseType = g.TypeChecker.typeNamed(
42+
shelf.Response,
43+
inPackage: 'shelf',
44+
);
45+
const _requestType = g.TypeChecker.typeNamed(shelf.Request, inPackage: 'shelf');
46+
const _stringType = g.TypeChecker.typeNamed(String, inSdk: true);
3847

3948
/// A representation of a handler that was annotated with [shelf_router.Route].
4049
class _Handler {
@@ -47,51 +56,50 @@ class _Handler {
4756
/// Find members of a class annotated with [shelf_router.Route].
4857
List<ExecutableElement2> getAnnotatedElementsOrderBySourceOffset(
4958
ClassElement2 cls,
50-
) => <ExecutableElement2>[
51-
...cls.methods2.where(_routeType.hasAnnotationOfExact),
52-
...cls.getters2.where(_routeType.hasAnnotationOfExact),
53-
]..sort(
54-
(a, b) =>
55-
(a.firstFragment.nameOffset2!).compareTo(b.firstFragment.nameOffset2!),
56-
);
59+
) =>
60+
<ExecutableElement2>[
61+
...cls.methods2.where(_routeType.hasAnnotationOfExact),
62+
...cls.getters2.where(_routeType.hasAnnotationOfExact),
63+
]..sort(
64+
(a, b) => (a.firstFragment.nameOffset2!).compareTo(
65+
b.firstFragment.nameOffset2!,
66+
),
67+
);
5768

5869
/// Generate a `_$<className>Router(<className> service)` method that returns a
5970
/// [shelf_router.Router] configured based on annotated handlers.
6071
code.Method _buildRouterMethod({
6172
required ClassElement2 classElement,
6273
required List<_Handler> handlers,
6374
}) => code.Method(
64-
(b) =>
65-
b
66-
..name = '_\$${classElement.name3}Router'
67-
..requiredParameters.add(
68-
code.Parameter(
69-
(b) =>
70-
b
71-
..name = 'service'
72-
..type = code.refer(classElement.name3!),
75+
(b) => b
76+
..name = '_\$${classElement.name3}Router'
77+
..requiredParameters.add(
78+
code.Parameter(
79+
(b) => b
80+
..name = 'service'
81+
..type = code.refer(classElement.name3!),
82+
),
83+
)
84+
..returns = code.refer('Router')
85+
..body = code.Block(
86+
(b) => b
87+
..addExpression(
88+
code
89+
.declareFinal('router')
90+
.assign(code.refer('Router').newInstance([])),
91+
)
92+
..statements.addAll(
93+
handlers.map(
94+
(h) => _buildAddHandlerCode(
95+
router: code.refer('router'),
96+
service: code.refer('service'),
97+
handler: h,
98+
),
7399
),
74100
)
75-
..returns = code.refer('Router')
76-
..body = code.Block(
77-
(b) =>
78-
b
79-
..addExpression(
80-
code
81-
.declareFinal('router')
82-
.assign(code.refer('Router').newInstance([])),
83-
)
84-
..statements.addAll(
85-
handlers.map(
86-
(h) => _buildAddHandlerCode(
87-
router: code.refer('router'),
88-
service: code.refer('service'),
89-
handler: h,
90-
),
91-
),
92-
)
93-
..addExpression(code.refer('router').returned),
94-
),
101+
..addExpression(code.refer('router').returned),
102+
),
95103
);
96104

97105
/// Generate the code statement that adds [handler] from [service] to [router].
@@ -100,22 +108,19 @@ code.Code _buildAddHandlerCode({
100108
required code.Reference service,
101109
required _Handler handler,
102110
}) => switch (handler.verb) {
103-
r'$mount' =>
104-
router.property('mount').call([
105-
code.literalString(handler.route, raw: true),
106-
service.property(handler.element.name3!).property('call'),
107-
]).statement,
108-
r'$all' =>
109-
router.property('all').call([
110-
code.literalString(handler.route, raw: true),
111-
service.property(handler.element.name3!),
112-
]).statement,
113-
_ =>
114-
router.property('add').call([
115-
code.literalString(handler.verb.toUpperCase()),
116-
code.literalString(handler.route, raw: true),
117-
service.property(handler.element.name3!),
118-
]).statement,
111+
r'$mount' => router.property('mount').call([
112+
code.literalString(handler.route, raw: true),
113+
service.property(handler.element.name3!).property('call'),
114+
]).statement,
115+
r'$all' => router.property('all').call([
116+
code.literalString(handler.route, raw: true),
117+
service.property(handler.element.name3!),
118+
]).statement,
119+
_ => router.property('add').call([
120+
code.literalString(handler.verb.toUpperCase()),
121+
code.literalString(handler.route, raw: true),
122+
service.property(handler.element.name3!),
123+
]).statement,
119124
};
120125

121126
class ShelfRouterGenerator extends g.Generator {
@@ -131,21 +136,20 @@ class ShelfRouterGenerator extends g.Generator {
131136
}
132137
log.info('found shelf_router.Route annotations in ${cls.name3}');
133138

134-
classes[cls] =
135-
elements
136-
.map(
137-
(e) => _routeType
138-
.annotationsOfExact(e)
139-
.map(
140-
(a) => _Handler(
141-
a.getField('verb')!.toStringValue()!,
142-
a.getField('route')!.toStringValue()!,
143-
e,
144-
),
145-
),
146-
)
147-
.expand((i) => i)
148-
.toList();
139+
classes[cls] = elements
140+
.map(
141+
(e) => _routeType
142+
.annotationsOfExact(e)
143+
.map(
144+
(a) => _Handler(
145+
a.getField('verb')!.toStringValue()!,
146+
a.getField('route')!.toStringValue()!,
147+
e,
148+
),
149+
),
150+
)
151+
.expand((i) => i)
152+
.toList();
149153
}
150154
if (classes.isEmpty) {
151155
return null; // nothing to do if nothing was annotated
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: shelf_router_generator
2-
version: 1.1.2
2+
version: 1.1.3-wip
33
description: >
44
A package:build-compatible builder for generating request routers for the
55
shelf web-framework based on source annotations.
@@ -11,21 +11,21 @@ topics:
1111
- shelf
1212

1313
environment:
14-
sdk: ^3.7.0
14+
sdk: ^3.9.0
1515

1616
dependencies:
17-
analyzer: '>=7.4.0 <9.0.0'
18-
build: ^3.0.0
19-
build_config: ^1.1.0
17+
analyzer: ^8.1.1
18+
build: ^4.0.0
19+
build_config: ^1.2.0
2020
code_builder: ^4.2.0
2121
http_methods: ^1.1.0
2222
shelf: ^1.1.0
2323
shelf_router: ^1.1.0
24-
source_gen: ^3.0.0
24+
source_gen: ^4.0.1
2525

2626
dev_dependencies:
27-
build_runner: ^2.6.0
27+
build_runner: ^2.7.2
2828
build_verify: ^3.0.0
2929
dart_flutter_team_lints: ^3.0.0
3030
http: ^1.0.0
31-
test: ^1.25.9
31+
test: ^1.26.3

0 commit comments

Comments
 (0)