1.1.0
This commit is contained in:
parent
18c06142a9
commit
1623e92e94
5 changed files with 25 additions and 24 deletions
|
@ -5,10 +5,6 @@
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.pub" />
|
<excludeFolder url="file://$MODULE_DIR$/.pub" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/example/basic/packages" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/example/basic/src/packages" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/example/packages" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/packages" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||||
</content>
|
</content>
|
||||||
|
|
|
@ -11,7 +11,6 @@ In your `pubspec.yaml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
dependencies:
|
dependencies:
|
||||||
angel_framework: ^1.0.0
|
|
||||||
angel_hot: ^1.0.0
|
angel_hot: ^1.0.0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
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_framework/angel_framework.dart';
|
||||||
import 'package:angel_hot/angel_hot.dart';
|
import 'package:angel_hot/angel_hot.dart';
|
||||||
|
import 'package:logging/logging.dart';
|
||||||
import 'src/foo.dart';
|
import 'src/foo.dart';
|
||||||
|
|
||||||
main() async {
|
main() async {
|
||||||
|
@ -20,19 +19,30 @@ main() async {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Angel> createServer() async {
|
Future<Angel> createServer() async {
|
||||||
// Max speed???
|
|
||||||
var app = new Angel();
|
var app = new Angel();
|
||||||
|
|
||||||
app.lazyParseBodies = true;
|
app.lazyParseBodies = true;
|
||||||
app.injectSerializer(JSON.encode);
|
app.injectSerializer(JSON.encode);
|
||||||
|
|
||||||
|
// Edit this line, and then refresh the page in your browser!
|
||||||
app.get('/', {'hello': 'hot world!'});
|
app.get('/', {'hello': 'hot world!'});
|
||||||
app.get('/foo', new Foo(bar: 'baz'));
|
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;
|
return app;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,9 +11,7 @@ import 'package:html_builder/html_builder.dart';
|
||||||
import 'package:vm_service_client/vm_service_client.dart';
|
import 'package:vm_service_client/vm_service_client.dart';
|
||||||
import 'package:watcher/watcher.dart';
|
import 'package:watcher/watcher.dart';
|
||||||
|
|
||||||
/// A typedef over a function that returns a fresh [Angel] instance, whether synchronously or asynchronously.
|
/// A utility class that watches the filesystem for changes, and starts new instances of an Angel server.
|
||||||
typedef FutureOr<Angel> AngelGenerator();
|
|
||||||
|
|
||||||
class HotReloader {
|
class HotReloader {
|
||||||
VMServiceClient _client;
|
VMServiceClient _client;
|
||||||
final StreamController<WatchEvent> _onChange =
|
final StreamController<WatchEvent> _onChange =
|
||||||
|
@ -25,7 +23,7 @@ class HotReloader {
|
||||||
Duration _timeout;
|
Duration _timeout;
|
||||||
|
|
||||||
/// Invoked to load a new instance of [Angel] on file changes.
|
/// Invoked to load a new instance of [Angel] on file changes.
|
||||||
final AngelGenerator generator;
|
final FutureOr<Angel> Function() generator;
|
||||||
|
|
||||||
/// Fires whenever a file change. You might consider using this to trigger
|
/// Fires whenever a file change. You might consider using this to trigger
|
||||||
/// page reloads in a client.
|
/// page reloads in a client.
|
||||||
|
@ -105,7 +103,7 @@ class HotReloader {
|
||||||
|
|
||||||
Future<Angel> _generateServer() async {
|
Future<Angel> _generateServer() async {
|
||||||
var s = await generator() as Angel;
|
var s = await generator() as Angel;
|
||||||
await Future.forEach(s.justBeforeStart, s.configure);
|
await Future.forEach(s.startupHooks, s.configure);
|
||||||
s.optimizeForProduction();
|
s.optimizeForProduction();
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
@ -214,14 +212,14 @@ class HotReloader {
|
||||||
|
|
||||||
for (var client in ws.clients) {
|
for (var client in ws.clients) {
|
||||||
try {
|
try {
|
||||||
client.io.close(WebSocketStatus.GOING_AWAY);
|
await client.close(WebSocketStatus.GOING_AWAY);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
stderr.writeln(
|
stderr.writeln(
|
||||||
'Couldn\'t close WebSocket from session #${client.request.session.id}: $e');
|
'Couldn\'t close WebSocket from session #${client.request.session.id}: $e');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future.forEach(old.justBeforeStop, old.configure);
|
Future.forEach(old.shutdownHooks, old.configure);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,19 @@
|
||||||
name: angel_hot
|
name: angel_hot
|
||||||
description: Supports hot reloading of Angel servers on file changes.
|
description: Supports hot reloading of Angel servers on file changes.
|
||||||
version: 1.0.1
|
version: 1.1.0-alpha
|
||||||
author: Tobe O <thosakwe@gmail.com>
|
author: Tobe O <thosakwe@gmail.com>
|
||||||
homepage: https://github.com/angel-dart/hot
|
homepage: https://github.com/angel-dart/hot
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=1.19.0"
|
sdk: ">=1.19.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
angel_framework: ^1.0.0-dev
|
angel_framework: ^1.1.0-alpha
|
||||||
angel_websocket: ^1.0.0
|
angel_websocket: ^1.1.0-alpha
|
||||||
html_builder: ^1.0.0
|
html_builder: ^1.0.0
|
||||||
vm_service_client:
|
vm_service_client:
|
||||||
git:
|
git:
|
||||||
url: git://github.com/BlackHC/vm_service_client.git
|
url: git://github.com/BlackHC/vm_service_client.git
|
||||||
ref: reload_sources_poc
|
ref: reload_sources_poc
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
angel_compress: ^1.0.0
|
|
||||||
angel_diagnostics: ^1.0.0
|
|
||||||
angel_test: ^1.0.0
|
angel_test: ^1.0.0
|
||||||
http: ^0.11.3
|
http: ^0.11.3
|
||||||
test: ^0.12.15
|
test: ^0.12.15
|
Loading…
Reference in a new issue