Merge pull request #126 from dukefirehawk/feature/upgrade_sdk
Feature/upgrade sdk
This commit is contained in:
commit
2698c4d753
20 changed files with 91 additions and 60 deletions
|
@ -1,5 +1,10 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 8.2.0
|
||||||
|
|
||||||
|
* Require Dart >= 3.3
|
||||||
|
* Updated `lints` to 4.0.0
|
||||||
|
|
||||||
## 8.1.1
|
## 8.1.1
|
||||||
|
|
||||||
* Updated repository link
|
* Updated repository link
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name: angel3_auth
|
name: angel3_auth
|
||||||
description: A complete authentication plugin for Angel3. Includes support for stateless JWT tokens, Basic Auth, and more.
|
description: A complete authentication plugin for Angel3. Includes support for stateless JWT tokens, Basic Auth, and more.
|
||||||
version: 8.1.1
|
version: 8.2.0
|
||||||
homepage: https://angel3-framework.web.app/
|
homepage: https://angel3-framework.web.app/
|
||||||
repository: https://github.com/dart-backend/angel/tree/master/packages/auth
|
repository: https://github.com/dart-backend/angel/tree/master/packages/auth
|
||||||
environment:
|
environment:
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 8.2.0
|
||||||
|
|
||||||
|
* Require Dart >= 3.3
|
||||||
|
* Updated `lints` to 4.0.0
|
||||||
|
|
||||||
## 8.1.1
|
## 8.1.1
|
||||||
|
|
||||||
* Updated repository link
|
* Updated repository link
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name: angel3_auth_oauth2
|
name: angel3_auth_oauth2
|
||||||
version: 8.1.1
|
version: 8.2.0
|
||||||
description: Angel3 library for authenticating users with external identity providers via OAuth2.
|
description: Angel3 library for authenticating users with external identity providers via OAuth2.
|
||||||
homepage: https://angel3-framework.web.app/
|
homepage: https://angel3-framework.web.app/
|
||||||
repository: https://github.com/dart-backend/angel/tree/master/packages/auth_oauth2
|
repository: https://github.com/dart-backend/angel/tree/master/packages/auth_oauth2
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
## 8.0.0
|
## 8.0.0
|
||||||
|
|
||||||
* Require Dart >= 3.0
|
* Require Dart >= 3.3
|
||||||
* Updated `oauth1` to `belatuk_oauth1`
|
* Updated `oauth1` to `belatuk_oauth1`
|
||||||
* Updated `lints` to 3.0.0
|
* Updated `lints` to 4.0.0
|
||||||
* Fixed linter warnings
|
|
||||||
* Updated repository link
|
* Updated repository link
|
||||||
|
* Fixed linter warnings
|
||||||
|
|
||||||
## 7.0.0
|
## 7.0.0
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
[![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion)
|
[![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion)
|
||||||
[![License](https://img.shields.io/github/license/dart-backend/angel)](https://github.com/dart-backend/angel/tree/master/packages/auth_twitter/LICENSE)
|
[![License](https://img.shields.io/github/license/dart-backend/angel)](https://github.com/dart-backend/angel/tree/master/packages/auth_twitter/LICENSE)
|
||||||
|
|
||||||
|
**Not ready for release**
|
||||||
Angel3 authentication strategy using Twitter OAuth 1.0a.
|
Angel3 authentication strategy using Twitter OAuth 1.0a.
|
||||||
|
|
||||||
See the [example](example/example.dart);
|
See the [example](example/example.dart);
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
name: "angel3_auth_twitter"
|
name: "angel3_auth_twitter"
|
||||||
description: Angel3 authentication strategy for Twitter login. Auto-signs requests.
|
description: Angel3 authentication strategy for Twitter login. Auto-signs requests.
|
||||||
version: 8.0.1
|
version: 8.0.0
|
||||||
homepage: https://angel3-framework.web.app/
|
homepage: https://angel3-framework.web.app/
|
||||||
repository: https://github.com/dart-backend/angel/tree/master/packages/auth_twitter
|
repository: https://github.com/dart-backend/angel/tree/master/packages/auth_twitter
|
||||||
publish_to: none
|
publish_to: none
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.3.0 <4.0.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
angel3_auth: ^8.0.0
|
angel3_auth: ^8.0.0
|
||||||
angel3_framework: ^8.0.0
|
angel3_framework: ^8.0.0
|
||||||
|
|
5
packages/cache/CHANGELOG.md
vendored
5
packages/cache/CHANGELOG.md
vendored
|
@ -1,5 +1,10 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 8.2.0
|
||||||
|
|
||||||
|
* Require Dart >= 3.3
|
||||||
|
* Updated `lints` to 4.0.0
|
||||||
|
|
||||||
## 8.1.1
|
## 8.1.1
|
||||||
|
|
||||||
* Updated repository link
|
* Updated repository link
|
||||||
|
|
4
packages/cache/pubspec.yaml
vendored
4
packages/cache/pubspec.yaml
vendored
|
@ -1,10 +1,10 @@
|
||||||
name: angel3_cache
|
name: angel3_cache
|
||||||
version: 8.1.1
|
version: 8.2.0
|
||||||
description: A service that provides HTTP caching to the response data for Angel3
|
description: A service that provides HTTP caching to the response data for Angel3
|
||||||
homepage: https://angel3-framework.web.app/
|
homepage: https://angel3-framework.web.app/
|
||||||
repository: https://github.com/dart-backend/angel/tree/master/packages/cache
|
repository: https://github.com/dart-backend/angel/tree/master/packages/cache
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=3.3.0 <4.0.0'
|
sdk: '>=3.4.0 <4.0.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
angel3_framework: ^8.0.0
|
angel3_framework: ^8.0.0
|
||||||
collection: ^1.17.0
|
collection: ^1.17.0
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 8.4.0
|
||||||
|
|
||||||
|
* Require Dart >= 3.3
|
||||||
|
* Updated `lints` to 4.0.0
|
||||||
|
|
||||||
## 8.3.2
|
## 8.3.2
|
||||||
|
|
||||||
* Updated README
|
* Updated README
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name: angel3_framework
|
name: angel3_framework
|
||||||
version: 8.3.2
|
version: 8.4.0
|
||||||
description: A high-powered HTTP server extensible framework with dependency injection, routing and much more.
|
description: A high-powered HTTP server extensible framework with dependency injection, routing and much more.
|
||||||
homepage: https://angel3-framework.web.app/
|
homepage: https://angel3-framework.web.app/
|
||||||
repository: https://github.com/dart-backend/angel/tree/master/packages/framework
|
repository: https://github.com/dart-backend/angel/tree/master/packages/framework
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 8.2.0
|
||||||
|
|
||||||
|
* Require Dart >= 3.3
|
||||||
|
* Updated `mongo_dart` to 0.10.2
|
||||||
|
* Updated `lints` to 3.0.0
|
||||||
|
* Fixed deprecated methods
|
||||||
|
|
||||||
## 8.1.1
|
## 8.1.1
|
||||||
|
|
||||||
* Updated repository link
|
* Updated repository link
|
||||||
|
|
|
@ -73,7 +73,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
|
||||||
for (var key in doc.keys) {
|
for (var key in doc.keys) {
|
||||||
var value = doc[key];
|
var value = doc[key];
|
||||||
if (value is ObjectId) {
|
if (value is ObjectId) {
|
||||||
result[key] = value.toHexString();
|
result[key] = value.oid;
|
||||||
} else if (value is! RequestContext && value is! ResponseContext) {
|
} else if (value is! RequestContext && value is! ResponseContext) {
|
||||||
result[key] = value;
|
result[key] = value;
|
||||||
}
|
}
|
||||||
|
@ -133,7 +133,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
|
||||||
|
|
||||||
if (found == null) {
|
if (found == null) {
|
||||||
throw AngelHttpException.notFound(
|
throw AngelHttpException.notFound(
|
||||||
message: 'No record found for ID ${localId.toHexString()}');
|
message: 'No record found for ID ${localId.oid}');
|
||||||
}
|
}
|
||||||
|
|
||||||
return _jsonify(found, params);
|
return _jsonify(found, params);
|
||||||
|
@ -171,7 +171,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
|
||||||
update: result,
|
update: result,
|
||||||
returnNew: true) as FutureOr<Map<String, dynamic>>);
|
returnNew: true) as FutureOr<Map<String, dynamic>>);
|
||||||
result = _jsonify(modified, params);
|
result = _jsonify(modified, params);
|
||||||
result['id'] = _makeId(id).toHexString();
|
result['id'] = _makeId(id).oid;
|
||||||
return result;
|
return result;
|
||||||
} catch (e, st) {
|
} catch (e, st) {
|
||||||
//printDebug(e, st, 'MODIFY');
|
//printDebug(e, st, 'MODIFY');
|
||||||
|
@ -199,7 +199,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
|
||||||
returnNew: true,
|
returnNew: true,
|
||||||
upsert: true) as FutureOr<Map<String, dynamic>>);
|
upsert: true) as FutureOr<Map<String, dynamic>>);
|
||||||
result = _jsonify(updated, params);
|
result = _jsonify(updated, params);
|
||||||
result['id'] = _makeId(id).toHexString();
|
result['id'] = _makeId(id).oid;
|
||||||
return result;
|
return result;
|
||||||
} catch (e, st) {
|
} catch (e, st) {
|
||||||
//printDebug(e, st, 'UPDATE');
|
//printDebug(e, st, 'UPDATE');
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name: angel3_mongo
|
name: angel3_mongo
|
||||||
version: 8.1.1
|
version: 8.2.0
|
||||||
description: MongoDB-enabled services for the Angel3 framework. Well-tested.
|
description: MongoDB-enabled services for the Angel3 framework. Well-tested.
|
||||||
homepage: https://angel3-framework.web.app/
|
homepage: https://angel3-framework.web.app/
|
||||||
repository: https://github.com/dart-backend/angel/tree/master/packages/mongo
|
repository: https://github.com/dart-backend/angel/tree/master/packages/mongo
|
||||||
|
@ -9,7 +9,7 @@ dependencies:
|
||||||
angel3_framework: ^8.0.0
|
angel3_framework: ^8.0.0
|
||||||
belatuk_json_serializer: ^7.1.0
|
belatuk_json_serializer: ^7.1.0
|
||||||
belatuk_merge_map: ^5.1.0
|
belatuk_merge_map: ^5.1.0
|
||||||
mongo_dart: ^0.9.0
|
mongo_dart: ^0.10.2
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
http: ^1.0.0
|
http: ^1.0.0
|
||||||
test: ^1.24.0
|
test: ^1.24.0
|
||||||
|
|
|
@ -24,11 +24,12 @@ void main() {
|
||||||
group('Generic Tests', () {
|
group('Generic Tests', () {
|
||||||
Angel app;
|
Angel app;
|
||||||
late AngelHttp transport;
|
late AngelHttp transport;
|
||||||
http.Client? client;
|
late http.Client client;
|
||||||
var db = Db('mongodb://localhost:27017/angel_mongo');
|
var db = Db('mongodb://localhost:27017/angel_mongo');
|
||||||
late DbCollection testData;
|
late DbCollection testData;
|
||||||
String? url;
|
String? url;
|
||||||
HookedService<String, Map<String, dynamic>, MongoService>? greetingService;
|
late HookedService<String, Map<String, dynamic>, MongoService>
|
||||||
|
greetingService;
|
||||||
|
|
||||||
setUp(() async {
|
setUp(() async {
|
||||||
app = Angel();
|
app = Angel();
|
||||||
|
@ -41,7 +42,7 @@ void main() {
|
||||||
|
|
||||||
var service = MongoService(testData);
|
var service = MongoService(testData);
|
||||||
greetingService = HookedService(service);
|
greetingService = HookedService(service);
|
||||||
wireHooked(greetingService!);
|
wireHooked(greetingService);
|
||||||
|
|
||||||
app.use('/api', greetingService as Service);
|
app.use('/api', greetingService as Service);
|
||||||
|
|
||||||
|
@ -54,31 +55,28 @@ void main() {
|
||||||
await testData.remove(<String, dynamic>{});
|
await testData.remove(<String, dynamic>{});
|
||||||
await db.close();
|
await db.close();
|
||||||
await transport.close();
|
await transport.close();
|
||||||
client = null;
|
|
||||||
url = null;
|
|
||||||
greetingService = null;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('query fields mapped to filters', () async {
|
test('query fields mapped to filters', () async {
|
||||||
await greetingService!.create({'foo': 'bar'});
|
await greetingService.create({'foo': 'bar'});
|
||||||
expect(
|
expect(
|
||||||
await greetingService!.index({
|
await greetingService.index({
|
||||||
'query': {'foo': 'not bar'}
|
'query': {'foo': 'not bar'}
|
||||||
}),
|
}),
|
||||||
isEmpty,
|
isEmpty,
|
||||||
);
|
);
|
||||||
expect(
|
expect(
|
||||||
await greetingService!.index(),
|
await greetingService.index(),
|
||||||
isNotEmpty,
|
isNotEmpty,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('insert items', () async {
|
test('insert items', () async {
|
||||||
var response = await client!.post(Uri.parse('$url/api'),
|
var response = await client.post(Uri.parse('$url/api'),
|
||||||
body: god.serialize(testGreeting), headers: headers);
|
body: god.serialize(testGreeting), headers: headers);
|
||||||
expect(response.statusCode, isIn([200, 201]));
|
expect(response.statusCode, isIn([200, 201]));
|
||||||
|
|
||||||
response = await client!.get(Uri.parse('$url/api'));
|
response = await client.get(Uri.parse('$url/api'));
|
||||||
expect(response.statusCode, isIn([200, 201]));
|
expect(response.statusCode, isIn([200, 201]));
|
||||||
var users = god.deserialize(response.body,
|
var users = god.deserialize(response.body,
|
||||||
outputType: <Map>[].runtimeType) as List<Map>;
|
outputType: <Map>[].runtimeType) as List<Map>;
|
||||||
|
@ -86,12 +84,12 @@ void main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('read item', () async {
|
test('read item', () async {
|
||||||
var response = await client!.post(Uri.parse('$url/api'),
|
var response = await client.post(Uri.parse('$url/api'),
|
||||||
body: god.serialize(testGreeting), headers: headers);
|
body: god.serialize(testGreeting), headers: headers);
|
||||||
expect(response.statusCode, isIn([200, 201]));
|
expect(response.statusCode, isIn([200, 201]));
|
||||||
var created = god.deserialize(response.body) as Map;
|
var created = god.deserialize(response.body) as Map;
|
||||||
|
|
||||||
response = await client!.get(Uri.parse("$url/api/${created['id']}"));
|
response = await client.get(Uri.parse("$url/api/${created['id']}"));
|
||||||
expect(response.statusCode, isIn([200, 201]));
|
expect(response.statusCode, isIn([200, 201]));
|
||||||
var read = god.deserialize(response.body) as Map;
|
var read = god.deserialize(response.body) as Map;
|
||||||
expect(read['id'], equals(created['id']));
|
expect(read['id'], equals(created['id']));
|
||||||
|
@ -100,37 +98,37 @@ void main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('findOne', () async {
|
test('findOne', () async {
|
||||||
var response = await client!.post(Uri.parse('$url/api'),
|
var response = await client.post(Uri.parse('$url/api'),
|
||||||
body: god.serialize(testGreeting), headers: headers);
|
body: god.serialize(testGreeting), headers: headers);
|
||||||
expect(response.statusCode, isIn([200, 201]));
|
expect(response.statusCode, isIn([200, 201]));
|
||||||
var created = god.deserialize(response.body) as Map;
|
var created = god.deserialize(response.body) as Map;
|
||||||
|
|
||||||
var id = ObjectId.fromHexString(created['id'] as String);
|
var id = ObjectId.fromHexString(created['id'] as String);
|
||||||
var read = await greetingService!.findOne({'query': where.id(id)});
|
var read = await greetingService.findOne({'query': where.id(id)});
|
||||||
expect(read['id'], equals(created['id']));
|
expect(read['id'], equals(created['id']));
|
||||||
expect(read['to'], equals('world'));
|
expect(read['to'], equals('world'));
|
||||||
//expect(read['createdAt'], isNot(null));
|
//expect(read['createdAt'], isNot(null));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('readMany', () async {
|
test('readMany', () async {
|
||||||
var response = await client!.post(Uri.parse('$url/api'),
|
var response = await client.post(Uri.parse('$url/api'),
|
||||||
body: god.serialize(testGreeting), headers: headers);
|
body: god.serialize(testGreeting), headers: headers);
|
||||||
expect(response.statusCode, isIn([200, 201]));
|
expect(response.statusCode, isIn([200, 201]));
|
||||||
var created = god.deserialize(response.body) as Map;
|
var created = god.deserialize(response.body) as Map;
|
||||||
|
|
||||||
var id = ObjectId.fromHexString(created['id'] as String);
|
var id = ObjectId.fromHexString(created['id'] as String);
|
||||||
var read = await greetingService!.readMany([id.toHexString()]);
|
var read = await greetingService.readMany([id.oid]);
|
||||||
expect(read, [created]);
|
expect(read, [created]);
|
||||||
//expect(read['createdAt'], isNot(null));
|
//expect(read['createdAt'], isNot(null));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('modify item', () async {
|
test('modify item', () async {
|
||||||
var response = await client!.post(Uri.parse('$url/api'),
|
var response = await client.post(Uri.parse('$url/api'),
|
||||||
body: god.serialize(testGreeting), headers: headers);
|
body: god.serialize(testGreeting), headers: headers);
|
||||||
expect(response.statusCode, isIn([200, 201]));
|
expect(response.statusCode, isIn([200, 201]));
|
||||||
var created = god.deserialize(response.body) as Map;
|
var created = god.deserialize(response.body) as Map;
|
||||||
|
|
||||||
response = await client!.patch(Uri.parse("$url/api/${created['id']}"),
|
response = await client.patch(Uri.parse("$url/api/${created['id']}"),
|
||||||
body: god.serialize({'to': 'Mom'}), headers: headers);
|
body: god.serialize({'to': 'Mom'}), headers: headers);
|
||||||
var modified = god.deserialize(response.body) as Map;
|
var modified = god.deserialize(response.body) as Map;
|
||||||
expect(response.statusCode, isIn([200, 201]));
|
expect(response.statusCode, isIn([200, 201]));
|
||||||
|
@ -140,12 +138,12 @@ void main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('update item', () async {
|
test('update item', () async {
|
||||||
var response = await client!.post(Uri.parse('$url/api'),
|
var response = await client.post(Uri.parse('$url/api'),
|
||||||
body: god.serialize(testGreeting), headers: headers);
|
body: god.serialize(testGreeting), headers: headers);
|
||||||
expect(response.statusCode, isIn([200, 201]));
|
expect(response.statusCode, isIn([200, 201]));
|
||||||
var created = god.deserialize(response.body) as Map;
|
var created = god.deserialize(response.body) as Map;
|
||||||
|
|
||||||
response = await client!.post(Uri.parse("$url/api/${created['id']}"),
|
response = await client.post(Uri.parse("$url/api/${created['id']}"),
|
||||||
body: god.serialize({'to': 'Updated'}), headers: headers);
|
body: god.serialize({'to': 'Updated'}), headers: headers);
|
||||||
var modified = god.deserialize(response.body) as Map;
|
var modified = god.deserialize(response.body) as Map;
|
||||||
expect(response.statusCode, isIn([200, 201]));
|
expect(response.statusCode, isIn([200, 201]));
|
||||||
|
@ -155,28 +153,28 @@ void main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('remove item', () async {
|
test('remove item', () async {
|
||||||
var response = await client!.post(Uri.parse('$url/api'),
|
var response = await client.post(Uri.parse('$url/api'),
|
||||||
body: god.serialize(testGreeting), headers: headers);
|
body: god.serialize(testGreeting), headers: headers);
|
||||||
var created = god.deserialize(response.body) as Map;
|
var created = god.deserialize(response.body) as Map;
|
||||||
|
|
||||||
var lastCount = (await greetingService!.index()).length;
|
var lastCount = (await greetingService.index()).length;
|
||||||
|
|
||||||
await client!.delete(Uri.parse("$url/api/${created['id']}"));
|
await client.delete(Uri.parse("$url/api/${created['id']}"));
|
||||||
expect((await greetingService!.index()).length, equals(lastCount - 1));
|
expect((await greetingService.index()).length, equals(lastCount - 1));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('cannot remove all unless explicitly set', () async {
|
test('cannot remove all unless explicitly set', () async {
|
||||||
var response = await client!.delete(Uri.parse('$url/api/null'));
|
var response = await client.delete(Uri.parse('$url/api/null'));
|
||||||
expect(response.statusCode, 403);
|
expect(response.statusCode, 403);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('\$sort and query parameters', () async {
|
test('\$sort and query parameters', () async {
|
||||||
// Search by where.eq
|
// Search by where.eq
|
||||||
Map world = await greetingService!.create({'to': 'world'});
|
Map world = await greetingService.create({'to': 'world'});
|
||||||
await greetingService!.create({'to': 'Mom'});
|
await greetingService.create({'to': 'Mom'});
|
||||||
await greetingService!.create({'to': 'Updated'});
|
await greetingService.create({'to': 'Updated'});
|
||||||
|
|
||||||
var response = await client!.get(Uri.parse('$url/api?to=world'));
|
var response = await client.get(Uri.parse('$url/api?to=world'));
|
||||||
print(response.body);
|
print(response.body);
|
||||||
var queried = god.deserialize(response.body,
|
var queried = god.deserialize(response.body,
|
||||||
outputType: <Map>[].runtimeType) as List<Map>;
|
outputType: <Map>[].runtimeType) as List<Map>;
|
||||||
|
@ -193,7 +191,7 @@ void main() {
|
||||||
expect(queried[1]["id"], equals(Mom["id"]));
|
expect(queried[1]["id"], equals(Mom["id"]));
|
||||||
expect(queried[2]["id"], equals(world["id"]));*/
|
expect(queried[2]["id"], equals(world["id"]));*/
|
||||||
|
|
||||||
queried = await greetingService!.index({
|
queried = await greetingService.index({
|
||||||
'\$query': {
|
'\$query': {
|
||||||
'_id': where.id(ObjectId.fromHexString(world['id'] as String))
|
'_id': where.id(ObjectId.fromHexString(world['id'] as String))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 8.2.0
|
||||||
|
|
||||||
|
* Require Dart >= 3.3
|
||||||
|
* Updated `lints` to 4.0.0
|
||||||
|
* Updated `web_socket_channel` to 3.0.0
|
||||||
|
|
||||||
## 8.1.1
|
## 8.1.1
|
||||||
|
|
||||||
* Updated repository link
|
* Updated repository link
|
||||||
|
|
|
@ -93,7 +93,7 @@ abstract class BaseWebSocketClient extends BaseAngelClient {
|
||||||
Future close() async {
|
Future close() async {
|
||||||
on._close();
|
on._close();
|
||||||
scheduleMicrotask(() async {
|
scheduleMicrotask(() async {
|
||||||
await _socket!.sink.close(status.goingAway);
|
await _socket!.sink.close(status.normalClosure);
|
||||||
await _onData.close();
|
await _onData.close();
|
||||||
await _onAllEvents.close();
|
await _onAllEvents.close();
|
||||||
await _onAuthenticated.close();
|
await _onAuthenticated.close();
|
||||||
|
|
|
@ -508,8 +508,8 @@ class AngelWebSocket {
|
||||||
if (protocol != null) sink.add('Sec-WebSocket-Protocol: $protocol\r\n');
|
if (protocol != null) sink.add('Sec-WebSocket-Protocol: $protocol\r\n');
|
||||||
sink.add('\r\n');
|
sink.add('\r\n');
|
||||||
|
|
||||||
var ws = WebSocketChannel(ctrl.foreign);
|
//var ws = IOWebSocketChannel.connect(ctrl.foreign);
|
||||||
var socket = WebSocketContext(ws, req, res);
|
var socket = WebSocketContext(ctrl.foreign, req, res);
|
||||||
scheduleMicrotask(() => handleClient(socket));
|
scheduleMicrotask(() => handleClient(socket));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name: angel3_websocket
|
name: angel3_websocket
|
||||||
version: 8.1.1
|
version: 8.2.0
|
||||||
description: This library provides WebSockets support for Angel3 framework.
|
description: This library provides WebSockets support for Angel3 framework.
|
||||||
homepage: https://angel3-framework.web.app/
|
homepage: https://angel3-framework.web.app/
|
||||||
repository: https://github.com/dart-backend/angel/tree/master/packages/websocket
|
repository: https://github.com/dart-backend/angel/tree/master/packages/websocket
|
||||||
|
@ -14,14 +14,14 @@ dependencies:
|
||||||
http: ^1.0.0
|
http: ^1.0.0
|
||||||
meta: ^1.8.0
|
meta: ^1.8.0
|
||||||
stream_channel: ^2.1.0
|
stream_channel: ^2.1.0
|
||||||
web_socket_channel: '>=2.1.0 <2.4.1'
|
web_socket_channel: ^3.0.0
|
||||||
collection: ^1.17.0
|
collection: ^1.17.0
|
||||||
logging: ^1.1.0
|
logging: ^1.1.0
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
angel3_container: ^8.0.0
|
angel3_container: ^8.0.0
|
||||||
angel3_model: ^8.0.0
|
angel3_model: ^8.0.0
|
||||||
quiver: ^3.2.0
|
quiver: ^3.2.0
|
||||||
test: ^1.24.0
|
test: ^1.25.0
|
||||||
lints: ^4.0.0
|
lints: ^4.0.0
|
||||||
file: ^7.0.0
|
file: ^7.0.0
|
||||||
# dependency_overrides:
|
# dependency_overrides:
|
||||||
|
|
|
@ -11,7 +11,7 @@ import 'common.dart';
|
||||||
void main() {
|
void main() {
|
||||||
srv.Angel app;
|
srv.Angel app;
|
||||||
late srv.AngelHttp http;
|
late srv.AngelHttp http;
|
||||||
ws.WebSockets? client;
|
late ws.WebSockets client;
|
||||||
srv.AngelWebSocket websockets;
|
srv.AngelWebSocket websockets;
|
||||||
HttpServer? server;
|
HttpServer? server;
|
||||||
String? url;
|
String? url;
|
||||||
|
@ -34,12 +34,12 @@ void main() {
|
||||||
url = 'ws://${server!.address.address}:${server!.port}/ws';
|
url = 'ws://${server!.address.address}:${server!.port}/ws';
|
||||||
|
|
||||||
client = ws.WebSockets(url);
|
client = ws.WebSockets(url);
|
||||||
await client!.connect(timeout: Duration(seconds: 3));
|
await client.connect(timeout: Duration(seconds: 3));
|
||||||
|
|
||||||
print('Connected');
|
print('Connected');
|
||||||
|
|
||||||
client
|
client
|
||||||
?..onData.listen((data) {
|
..onData.listen((data) {
|
||||||
print('Received by client: $data');
|
print('Received by client: $data');
|
||||||
})
|
})
|
||||||
..onError.listen((error) {
|
..onError.listen((error) {
|
||||||
|
@ -51,18 +51,17 @@ void main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
tearDown(() async {
|
tearDown(() async {
|
||||||
await client!.close();
|
await client.close();
|
||||||
await http.close();
|
await http.close();
|
||||||
//app = null;
|
//app = null;
|
||||||
client = null;
|
|
||||||
server = null;
|
server = null;
|
||||||
url = null;
|
url = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
group('controller.io', () {
|
group('controller.io', () {
|
||||||
test('search', () async {
|
test('search', () async {
|
||||||
client!.sendAction(ws.WebSocketAction(eventName: 'search'));
|
client.sendAction(ws.WebSocketAction(eventName: 'search'));
|
||||||
var search = await client!.on['searched'].first;
|
var search = await client.on['searched'].first;
|
||||||
print('Searched: ${search.data}');
|
print('Searched: ${search.data}');
|
||||||
expect(Game.fromJson(search.data as Map), equals(johnVsBob));
|
expect(Game.fromJson(search.data as Map), equals(johnVsBob));
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue