Fix Strong Mode error with latest shelf
- Add analysis_options.yaml to enable strong mode.
- Fix Strong mode errors.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f630263..13905e0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.2-dev
+
+- Fix Strong mode errors with `package:shelf` v0.7.x
+
## 1.0.1
- Allow dependencies on `package:shelf` v0.7.x
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..3d7fdea
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,37 @@
+analyzer:
+ strong-mode: true
+linter:
+ rules:
+ - avoid_empty_else
+ - avoid_init_to_null
+ - avoid_null_checks_in_equality_operators
+ - await_only_futures
+ - camel_case_types
+ - cancel_subscriptions
+ - constant_identifier_names
+ - control_flow_in_finally
+ - directives_ordering
+ - empty_catches
+ - empty_constructor_bodies
+ - empty_statements
+ - hash_and_equals
+ - implementation_imports
+ - iterable_contains_unrelated_type
+ - library_names
+ - library_prefixes
+ - list_remove_unrelated_type
+ - non_constant_identifier_names
+ - overridden_fields
+ - package_api_docs
+ - package_names
+ - package_prefixed_library_names
+ - prefer_final_fields
+ - prefer_is_not_empty
+ - slash_for_doc_comments
+ - super_goes_last
+ - test_types_in_equals
+ - throw_in_finally
+ - type_init_formals
+ - unnecessary_brace_in_string_interps
+ - unrelated_type_equality_checks
+ - valid_regexps
diff --git a/lib/src/async_handler.dart b/lib/src/async_handler.dart
index 1b68f12..3445aca 100644
--- a/lib/src/async_handler.dart
+++ b/lib/src/async_handler.dart
@@ -12,12 +12,13 @@
AsyncHandler(Future<Handler> future) : _future = new ResultFuture(future);
- call(Request request) {
+ FutureOr<Response> call(Request request) {
if (_future.result == null) {
return _future.then((handler) => handler(request));
}
- if (_future.result.isError) return _future;
+ if (_future.result.isError)
+ return new Future.error(_future.result.asError.error);
return _future.result.asValue.value(request);
}
diff --git a/lib/src/dir_handler.dart b/lib/src/dir_handler.dart
index 3605aa9..47f86af 100644
--- a/lib/src/dir_handler.dart
+++ b/lib/src/dir_handler.dart
@@ -4,6 +4,8 @@
library shelf_packages_handler.dir_handler;
+import 'dart:async';
+
import 'package:path/path.dart' as p;
import 'package:shelf/shelf.dart';
@@ -22,7 +24,7 @@
DirHandler(this._name, this._inner);
/// The callback for handling a single request.
- call(Request request) {
+ FutureOr<Response> call(Request request) {
var segments = request.url.pathSegments;
for (var i = 0; i < segments.length; i++) {
if (segments[i] != _name) continue;
diff --git a/lib/src/package_config_handler.dart b/lib/src/package_config_handler.dart
index fd79290..7994d48 100644
--- a/lib/src/package_config_handler.dart
+++ b/lib/src/package_config_handler.dart
@@ -2,6 +2,8 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
+import 'dart:async';
+
import 'package:package_resolver/package_resolver.dart';
import 'package:path/path.dart' as p;
import 'package:shelf/shelf.dart';
@@ -22,7 +24,7 @@
PackageConfigHandler(this._resolver);
/// The callback for handling a single request.
- call(Request request) {
+ FutureOr<Response> call(Request request) {
var segments = request.url.pathSegments;
return _handlerFor(segments.first)(request.change(path: segments.first));
}
diff --git a/pubspec.yaml b/pubspec.yaml
index 40cc176..b0d67ef 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,11 +1,11 @@
name: shelf_packages_handler
-version: 1.0.1
+version: 1.0.2-dev
description: A shelf handler for serving a `packages/` directory.
author: Dart Team <misc@dartlang.org>
homepage: https://github.com/dart-lang/shelf_packages_handler
environment:
- sdk: '>=1.9.0 <2.0.0'
+ sdk: '>=1.21.0 <2.0.0'
dependencies:
async: '^1.1.0'