Skip to content
This repository was archived by the owner on May 25, 2022. It is now read-only.

Commit 377225a

Browse files
author
David Morgan
committed
Resolve packages.
1 parent f927484 commit 377225a

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

chat_example/lib/server/resource_server.dart

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'dart:async';
66
import 'dart:io';
77

8+
import 'package:package_resolver/package_resolver.dart';
89
import 'package:route/server.dart';
910

1011
typedef SocketReceiver(WebSocket webSocket);
@@ -36,12 +37,24 @@ class ResourceServer {
3637
..close();
3738
});
3839

39-
router.serve(new RegExp(r'.*\.dart$')).listen((request) {
40+
router.serve(new RegExp(r'.*\.dart$')).listen((request) async {
41+
var path = request.uri.path;
42+
43+
if (path.startsWith('/packages/')) {
44+
final package = path
45+
.replaceFirst('/packages/', '')
46+
.replaceFirst(new RegExp('/.*'), '');
47+
final resolved = await PackageResolver.current.packagePath(package);
48+
path = resolved + '/lib' + path.replaceFirst('/packages/$package', '');
49+
} else {
50+
path = '.$path';
51+
}
52+
4053
request.response
4154
..statusCode = HttpStatus.OK
4255
..headers.contentType =
4356
new ContentType('application', 'dart', charset: 'utf-8')
44-
..write(new File('.' + request.uri.path).readAsStringSync())
57+
..write(new File(path).readAsStringSync())
4558
..close();
4659
});
4760

chat_example/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ dependencies:
1414
built_json: '^0.1.4'
1515
built_value: '^0.1.3'
1616
enum_class: '^1.0.0'
17+
package_resolver: ^1.0.0
1718
route: '>=0.4.6'
1819

1920
dev_dependencies:

0 commit comments

Comments
 (0)