diff --git a/.idea/hot.iml b/.idea/hot.iml
index 466ce67a..eae13016 100644
--- a/.idea/hot.iml
+++ b/.idea/hot.iml
@@ -5,10 +5,6 @@
-
-
-
-
diff --git a/README.md b/README.md
index b6b0c587..c2b941a2 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,6 @@ In your `pubspec.yaml`:
```yaml
dependencies:
- angel_framework: ^1.0.0
angel_hot: ^1.0.0
```
diff --git a/example/basic/server.dart b/example/basic/server.dart
index 2bf80b3c..cd4c8194 100644
--- a/example/basic/server.dart
+++ b/example/basic/server.dart
@@ -1,10 +1,9 @@
import 'dart:async';
import 'dart:convert';
import 'dart:io';
-import 'package:angel_compress/angel_compress.dart';
-import 'package:angel_diagnostics/angel_diagnostics.dart';
import 'package:angel_framework/angel_framework.dart';
import 'package:angel_hot/angel_hot.dart';
+import 'package:logging/logging.dart';
import 'src/foo.dart';
main() async {
@@ -20,19 +19,30 @@ main() async {
}
Future createServer() async {
- // Max speed???
var app = new Angel();
app.lazyParseBodies = true;
app.injectSerializer(JSON.encode);
+ // Edit this line, and then refresh the page in your browser!
app.get('/', {'hello': 'hot world!'});
app.get('/foo', new Foo(bar: 'baz'));
- app.after.add(() => throw new AngelHttpException.notFound());
+ app.use(() => throw new AngelHttpException.notFound());
+
+ app.injectEncoders({
+ 'gzip': GZIP.encoder,
+ 'deflate': ZLIB.encoder,
+ });
+
+ app.logger = new Logger('angel')
+ ..onRecord.listen((rec) {
+ print(rec);
+ if (rec.error != null) {
+ print(rec.error);
+ print(rec.stackTrace);
+ }
+ });
- app.responseFinalizers.add(gzip());
- //await app.configure(cacheResponses());
- await app.configure(logRequests());
return app;
}
diff --git a/lib/angel_hot.dart b/lib/angel_hot.dart
index 5e904729..1fd46943 100644
--- a/lib/angel_hot.dart
+++ b/lib/angel_hot.dart
@@ -11,9 +11,7 @@ import 'package:html_builder/html_builder.dart';
import 'package:vm_service_client/vm_service_client.dart';
import 'package:watcher/watcher.dart';
-/// A typedef over a function that returns a fresh [Angel] instance, whether synchronously or asynchronously.
-typedef FutureOr AngelGenerator();
-
+/// A utility class that watches the filesystem for changes, and starts new instances of an Angel server.
class HotReloader {
VMServiceClient _client;
final StreamController _onChange =
@@ -25,7 +23,7 @@ class HotReloader {
Duration _timeout;
/// Invoked to load a new instance of [Angel] on file changes.
- final AngelGenerator generator;
+ final FutureOr Function() generator;
/// Fires whenever a file change. You might consider using this to trigger
/// page reloads in a client.
@@ -105,7 +103,7 @@ class HotReloader {
Future _generateServer() async {
var s = await generator() as Angel;
- await Future.forEach(s.justBeforeStart, s.configure);
+ await Future.forEach(s.startupHooks, s.configure);
s.optimizeForProduction();
return s;
}
@@ -214,14 +212,14 @@ class HotReloader {
for (var client in ws.clients) {
try {
- client.io.close(WebSocketStatus.GOING_AWAY);
+ await client.close(WebSocketStatus.GOING_AWAY);
} catch (e) {
stderr.writeln(
'Couldn\'t close WebSocket from session #${client.request.session.id}: $e');
}
}
- Future.forEach(old.justBeforeStop, old.configure);
+ Future.forEach(old.shutdownHooks, old.configure);
});
}
diff --git a/pubspec.yaml b/pubspec.yaml
index 43939d79..095ce871 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,21 +1,19 @@
name: angel_hot
description: Supports hot reloading of Angel servers on file changes.
-version: 1.0.1
+version: 1.1.0-alpha
author: Tobe O
homepage: https://github.com/angel-dart/hot
environment:
sdk: ">=1.19.0"
dependencies:
- angel_framework: ^1.0.0-dev
- angel_websocket: ^1.0.0
+ angel_framework: ^1.1.0-alpha
+ angel_websocket: ^1.1.0-alpha
html_builder: ^1.0.0
vm_service_client:
git:
url: git://github.com/BlackHC/vm_service_client.git
ref: reload_sources_poc
dev_dependencies:
- angel_compress: ^1.0.0
- angel_diagnostics: ^1.0.0
angel_test: ^1.0.0
http: ^0.11.3
test: ^0.12.15
\ No newline at end of file