Merge pull request #5 from dukefirehawk/angel3

Updated linter to package:lints
This commit is contained in:
Thomas Hii 2021-09-25 14:43:18 +08:00 committed by GitHub
commit 7a5e3ae1ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
72 changed files with 502 additions and 852 deletions

42
LICENSE
View file

@ -1,21 +1,29 @@
MIT License (MIT) BSD 3-Clause License
Copyright (c) 2021 dukefirehawk.com Copyright (c) 2021, dukefirehawk.com
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy Redistribution and use in source and binary forms, with or without
of this software and associated documentation files (the "Software"), to deal modification, are permitted provided that the following conditions are met:
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all 1. Redistributions of source code must retain the above copyright notice, this
copies or substantial portions of the Software. list of conditions and the following disclaimer.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2. Redistributions in binary form must reproduce the above copyright notice,
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, this list of conditions and the following disclaimer in the documentation
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE and/or other materials provided with the distribution.
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3. Neither the name of the copyright holder nor the names of its
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE contributors may be used to endorse or promote products derived from
SOFTWARE. this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,6 +1,10 @@
# Change Log # Change Log
## 4.1.0
* Updated to use `package:belatuk_json_serializer`
* Updated linter to `package:lints`
## 4.0.2 ## 4.0.2
* Added logging * Added logging

View file

@ -1,21 +1,29 @@
MIT License (MIT) BSD 3-Clause License
Copyright (c) 2021 dukefirehawk.com Copyright (c) 2021, dukefirehawk.com
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy Redistribution and use in source and binary forms, with or without
of this software and associated documentation files (the "Software"), to deal modification, are permitted provided that the following conditions are met:
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all 1. Redistributions of source code must retain the above copyright notice, this
copies or substantial portions of the Software. list of conditions and the following disclaimer.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2. Redistributions in binary form must reproduce the above copyright notice,
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, this list of conditions and the following disclaimer in the documentation
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE and/or other materials provided with the distribution.
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3. Neither the name of the copyright holder nor the names of its
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE contributors may be used to endorse or promote products derived from
SOFTWARE. this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,10 +1,9 @@
# Angel3 Client # Angel3 Client
[![version](https://img.shields.io/badge/pub-v4.0.2-brightgreen)](https://pub.dartlang.org/packages/angel3_client) ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_client?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/client/LICENSE)
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/client/LICENSE)
A browser, mobile and command line based client that supports querying Angel3 backend. A browser, mobile and command line based client that supports querying Angel3 backend.
@ -32,7 +31,7 @@ foo() async {
} }
``` ```
The CLI client also supports reflection via `angel3_json_god`. There is no need to work with Maps; you can use the same class on the client and the server. The CLI client also supports reflection via `package:belatuk_json_serializer`. There is no need to work with Maps; you can use the same class on the client and the server.
```dart ```dart
class Todo extends Model { class Todo extends Model {

View file

@ -1,6 +1 @@
include: package:pedantic/analysis_options.yaml include: package:lints/recommended.yaml
analyzer:
strong-mode:
implicit-casts: false
# errors:
# unawaited_futures: ignore

View file

@ -3,7 +3,7 @@ library angel_client.cli;
import 'dart:async'; import 'dart:async';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:angel3_json_god/angel3_json_god.dart' as god; import 'package:belatuk_json_serializer/belatuk_json_serializer.dart' as god;
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'angel3_client.dart'; import 'angel3_client.dart';

View file

@ -1,20 +1,20 @@
name: angel3_client name: angel3_client
version: 4.0.2 version: 4.1.0
description: A browser, mobile and command line based client that supports querying Angel3 servers description: A browser, mobile and command line based client that supports querying Angel3 servers
homepage: https://angel3-framework.web.app/ homepage: https://angel3-framework.web.app/
repository: https://github.com/dukefirehawk/angel/tree/angel3/packages/client repository: https://github.com/dukefirehawk/angel/tree/master/packages/client
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
angel3_http_exception: ^3.0.0 angel3_http_exception: ^3.0.0
angel3_json_god: ^4.0.0 belatuk_json_serializer: ^5.0.0
collection: ^1.15.0 collection: ^1.15.0
http: ^0.13.1 http: ^0.13.1
meta: ^1.3.0 meta: ^1.3.0
path: ^1.8.0 path: ^1.8.0
logging: ^1.0.0 logging: ^1.0.0
dev_dependencies: dev_dependencies:
angel3_framework: ^4.0.0 angel3_framework: ^4.2.0
angel3_model: ^3.0.0 angel3_model: ^3.0.0
angel3_mock_request: ^2.0.0 angel3_mock_request: ^2.0.0
angel3_container: ^3.0.0 angel3_container: ^3.0.0
@ -22,5 +22,10 @@ dev_dependencies:
async: ^2.6.1 async: ^2.6.1
build_runner: ^1.12.2 build_runner: ^1.12.2
build_web_compilers: ^2.16.5 build_web_compilers: ^2.16.5
pedantic: ^1.11.0 test: ^1.17.5
test: ^1.17.4 lints: ^1.0.0
#dependency_overrides:
# angel3_framework:
# path: ../framework
# angel3_route:
# path: ../route

View file

@ -1,10 +1,15 @@
# Change Log # Change Log
## 4.1.0
* Updated to use `package:belatuk_merge_map`
* Updated to use `package:belatuk_pretty_logging`
* Updated linter to `package:lints`
## 4.0.1 ## 4.0.1
* Updated README * Updated README
* Fixed unit tests * All 8 unit tests passed
* All 8 unit test passed
## 4.0.0 ## 4.0.0

View file

@ -1,21 +1,29 @@
MIT License (MIT) BSD 3-Clause License
Copyright (c) 2021 dukefirehawk.com Copyright (c) 2021, dukefirehawk.com
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy Redistribution and use in source and binary forms, with or without
of this software and associated documentation files (the "Software"), to deal modification, are permitted provided that the following conditions are met:
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all 1. Redistributions of source code must retain the above copyright notice, this
copies or substantial portions of the Software. list of conditions and the following disclaimer.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2. Redistributions in binary form must reproduce the above copyright notice,
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, this list of conditions and the following disclaimer in the documentation
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE and/or other materials provided with the distribution.
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3. Neither the name of the copyright holder nor the names of its
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE contributors may be used to endorse or promote products derived from
SOFTWARE. this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,10 +1,9 @@
# Angel3 Configuration Loader # Angel3 Configuration Loader
[![version](https://img.shields.io/badge/pub-v4.0.1-brightgreen)](https://pub.dev/packages/angel3_configuration) ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_configuration?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/configuration/LICENSE)
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/configuration/LICENSE)
Automatic YAML configuration loader for [Angel3 framework](https://pub.dev/packages/angel3) Automatic YAML configuration loader for [Angel3 framework](https://pub.dev/packages/angel3)

View file

@ -1,4 +1 @@
include: package:pedantic/analysis_options.yaml include: package:lints/recommended.yaml
analyzer:
strong-mode:
implicit-casts: true

View file

@ -5,7 +5,7 @@ import 'dart:async';
import 'package:angel3_framework/angel3_framework.dart'; import 'package:angel3_framework/angel3_framework.dart';
import 'package:dotenv/dotenv.dart' as dotenv; import 'package:dotenv/dotenv.dart' as dotenv;
import 'package:file/file.dart'; import 'package:file/file.dart';
import 'package:angel3_merge_map/angel3_merge_map.dart'; import 'package:belatuk_merge_map/belatuk_merge_map.dart';
import 'package:yaml/yaml.dart'; import 'package:yaml/yaml.dart';
Future<void> _loadYamlFile(Map map, File yamlFile, Map<String, String> env, Future<void> _loadYamlFile(Map map, File yamlFile, Map<String, String> env,

View file

@ -1,19 +1,22 @@
name: angel3_configuration name: angel3_configuration
description: Automatic YAML application configuration loader for Angel, with .env support. version: 4.1.0
version: 4.0.1 description: Automatic YAML application configuration loader for Angel 3, with .env support.
homepage: https://angel3-framework.web.app/ homepage: https://angel3-framework.web.app/
repository: https://github.com/dukefirehawk/angel/tree/angel3/packages/configuration repository: https://github.com/dukefirehawk/angel/tree/master/packages/configuration
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
angel3_framework: ^4.0.0 angel3_framework: ^4.2.0
angel3_merge_map: ^2.0.0 belatuk_merge_map: ^3.0.0
dotenv: ^3.0.0 dotenv: ^3.0.0
file: ^6.1.0 file: ^6.1.0
yaml: ^3.1.0 yaml: ^3.1.0
dev_dependencies: dev_dependencies:
io: ^1.0.0 io: ^1.0.0
logging: ^1.0.1 logging: ^1.0.1
pedantic: ^1.11.0 lints: ^1.0.0
angel3_pretty_logging: ^3.0.0 belatuk_pretty_logging: ^4.0.0
test: ^1.17.3 test: ^1.17.5
#dependency_overrides:
# angel3_framework:
# path: ../framework

View file

@ -2,7 +2,7 @@ import 'dart:async';
import 'package:angel3_framework/angel3_framework.dart'; import 'package:angel3_framework/angel3_framework.dart';
import 'package:angel3_configuration/angel3_configuration.dart'; import 'package:angel3_configuration/angel3_configuration.dart';
import 'package:angel3_pretty_logging/angel3_pretty_logging.dart'; import 'package:belatuk_pretty_logging/belatuk_pretty_logging.dart';
import 'package:file/local.dart'; import 'package:file/local.dart';
import 'package:io/ansi.dart'; import 'package:io/ansi.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';

View file

@ -1,6 +0,0 @@
// Place your settings in this file to overwrite default and user settings.
{
"files.watcherExclude": {
"**/target": true
}
}

View file

@ -1,5 +1,11 @@
# Change Log # Change Log
## 4.2.0
* Updated to use `package:belatuk_combinator`
* Updated to use `package:belatuk_merge_map`
* Updated linter to `package:lints`
## 4.1.3 ## 4.1.3
* Updated README * Updated README

View file

@ -1,21 +1,29 @@
MIT License (MIT) BSD 3-Clause License
Copyright (c) 2021 dukefirehawk.com Copyright (c) 2021, dukefirehawk.com
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy Redistribution and use in source and binary forms, with or without
of this software and associated documentation files (the "Software"), to deal modification, are permitted provided that the following conditions are met:
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all 1. Redistributions of source code must retain the above copyright notice, this
copies or substantial portions of the Software. list of conditions and the following disclaimer.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2. Redistributions in binary form must reproduce the above copyright notice,
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, this list of conditions and the following disclaimer in the documentation
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE and/or other materials provided with the distribution.
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3. Neither the name of the copyright holder nor the names of its
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE contributors may be used to endorse or promote products derived from
SOFTWARE. this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,16 +1,15 @@
# Angel3 Framework # Angel3 Framework
[![version](https://img.shields.io/badge/pub-v4.1.3-brightgreen)](https://pub.dev/packages/angel3_framework) ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_framework?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/framework/LICENSE)
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/framework/LICENSE)
**Replacement of Angel Framework with major change to support NNBD.** **Replacement of Angel Framework with major change to support NNBD.**
Angel3 framework is a high-powered HTTP server with support for dependency injection, sophisticated routing, authentication, ORM, graphql etc. It is designed to keep the core minimal but extensible through a series of plugin packages. It won't dictate which features, databases or web templating engine to use. This flexibility enable Angel3 framework to grow with your application as new features can be added to handle the new use cases. Angel3 framework is a high-powered HTTP server with support for dependency injection, sophisticated routing, authentication, ORM, graphql etc. It is designed to keep the core minimal but extensible through a series of plugin packages. It won't dictate which features, databases or web templating engine to use. This flexibility enable Angel3 framework to grow with your application as new features can be added to handle the new use cases.
This package is the core of the [Angel3](https://github.com/dukefirehawk/angel/tree/angel3) framework. To see more details, please refer to the [Developer Guide](https://angel3-docs.dukefirehawk.com). This package is the core package of [Angel 3](https://github.com/dukefirehawk/angel). To see more details, please refer to the [Developer Guide](https://angel3-docs.dukefirehawk.com).
## Installation and Setup ## Installation and Setup

View file

@ -1,16 +1,2 @@
include: package:pedantic/analysis_options.yaml
analyzer: include: package:lints/recommended.yaml
# errors:
# always_declare_return_types: ignore
# omit_local_variable_types: ignore
# prefer_single_quotes: ignore
# prefer_spread_collections: ignore
strong-mode:
implicit-casts: false
#linter:
# rules:
# - avoid_slow_async_io
# - curly_braces_in_flow_control_structures
# - unnecessary_const
# - unnecessary_new

View file

@ -3,7 +3,7 @@ import 'dart:convert';
import 'dart:io' show stderr, Cookie; import 'dart:io' show stderr, Cookie;
import 'package:angel3_http_exception/angel3_http_exception.dart'; import 'package:angel3_http_exception/angel3_http_exception.dart';
import 'package:angel3_route/angel3_route.dart'; import 'package:angel3_route/angel3_route.dart';
import 'package:angel3_combinator/angel3_combinator.dart'; import 'package:belatuk_combinator/belatuk_combinator.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:stack_trace/stack_trace.dart'; import 'package:stack_trace/stack_trace.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';

View file

@ -6,7 +6,7 @@ import 'dart:convert';
import 'package:angel3_container/angel3_container.dart'; import 'package:angel3_container/angel3_container.dart';
import 'package:angel3_http_exception/angel3_http_exception.dart'; import 'package:angel3_http_exception/angel3_http_exception.dart';
import 'package:angel3_route/angel3_route.dart'; import 'package:angel3_route/angel3_route.dart';
import 'package:angel3_combinator/angel3_combinator.dart'; import 'package:belatuk_combinator/belatuk_combinator.dart';
import 'package:http_parser/http_parser.dart'; import 'package:http_parser/http_parser.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:mime/mime.dart'; import 'package:mime/mime.dart';

View file

@ -2,7 +2,7 @@ library angel_framework.http.service;
import 'dart:async'; import 'dart:async';
import 'package:angel3_http_exception/angel3_http_exception.dart'; import 'package:angel3_http_exception/angel3_http_exception.dart';
import 'package:angel3_merge_map/angel3_merge_map.dart'; import 'package:belatuk_merge_map/belatuk_merge_map.dart';
import 'package:quiver/core.dart'; import 'package:quiver/core.dart';
import '../util.dart'; import '../util.dart';
import 'anonymous_service.dart'; import 'anonymous_service.dart';

View file

@ -1,22 +1,22 @@
name: angel3_framework name: angel3_framework
version: 4.1.3 version: 4.2.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/dukefirehawk/angel repository: https://github.com/dukefirehawk/angel/tree/master/packages/framework
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
angel3_container: ^3.0.0 angel3_container: ^3.0.0
angel3_http_exception: ^3.0.0 angel3_http_exception: ^3.0.0
angel3_model: ^3.0.0 angel3_model: ^3.0.0
angel3_route: ^5.0.0 angel3_route: ^5.1.0
angel3_combinator: ^2.0.0
angel3_merge_map: ^2.0.0
angel3_mock_request: ^2.0.0 angel3_mock_request: ^2.0.0
belatuk_merge_map: ^3.0.0
belatuk_combinator: ^3.0.0
belatuk_http_server: ^2.0.0
charcode: ^1.2.0 charcode: ^1.2.0
file: ^6.1.0 file: ^6.1.0
http_parser: ^4.0.0 http_parser: ^4.0.0
belatuk_http_server: ^2.0.0
http2: ^2.0.0 http2: ^2.0.0
logging: ^1.0.0 logging: ^1.0.0
matcher: ^0.12.10 matcher: ^0.12.10
@ -33,5 +33,8 @@ dependencies:
dev_dependencies: dev_dependencies:
http: ^0.13.1 http: ^0.13.1
io: ^1.0.0 io: ^1.0.0
test: ^1.17.4 test: ^1.17.5
pedantic: ^1.11.0 lints: ^1.0.0
#dependency_overrides:
# angel3_route:
# path: ../route

View file

@ -1,9 +1,13 @@
# Change Log # Change Log
## 4.2.0
* Updated to use `package:belatuk_code_buffer`
## 4.1.0 ## 4.1.0
* Updated to use `belatuk_symbol_table` package * Updated to use `package:belatuk_symbol_table`
* Upgraded from `pendantic` to `lints` linter * Updated linter to `package:lints`
## 4.0.0 ## 4.0.0

View file

@ -1,11 +1,11 @@
# Angel3 Jael # Angel3 Jael
[![version](https://img.shields.io/badge/pub-v4.1.0-brightgreen)](https://pub.dev/packages/angel3_jael) ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_jael?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/belatuk-common-utilities)](https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/angel_jael/LICENSE) [![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/jael/angel_jael/LICENSE)
[Angel 3](https://github.com/dukefirehawk/angel/tree/angel3) support for [Jael 3](https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/jael). [Angel 3](https://pub.dev/packages/angel3_framework) support for [Jael 3](https://pub.dev/packages/jael3).
## Installation ## Installation
@ -13,7 +13,7 @@ In your `pubspec.yaml`:
```yaml ```yaml
dependencies: dependencies:
angel3_jael: ^4.1.0 angel3_jael: ^4.2.0
``` ```
## Usage ## Usage

View file

@ -1,5 +1,5 @@
import 'package:angel3_framework/angel3_framework.dart'; import 'package:angel3_framework/angel3_framework.dart';
import 'package:angel3_code_buffer/angel3_code_buffer.dart'; import 'package:belatuk_code_buffer/belatuk_code_buffer.dart';
import 'package:file/file.dart'; import 'package:file/file.dart';
import 'package:jael3/jael3.dart'; import 'package:jael3/jael3.dart';
import 'package:jael3_preprocessor/jael3_preprocessor.dart'; import 'package:jael3_preprocessor/jael3_preprocessor.dart';
@ -17,7 +17,7 @@ AngelConfigurer jael(Directory viewsDirectory,
bool cacheViews = false, bool cacheViews = false,
Iterable<Patcher>? patch, Iterable<Patcher>? patch,
bool asDSX = false, bool asDSX = false,
CodeBuffer createBuffer()?}) { CodeBuffer Function()? createBuffer}) {
var cache = <String, Document?>{}; var cache = <String, Document?>{};
fileExtension ??= '.jael'; fileExtension ??= '.jael';
createBuffer ??= () => CodeBuffer(); createBuffer ??= () => CodeBuffer();

View file

@ -1,14 +1,15 @@
name: angel3_jael name: angel3_jael
version: 4.1.0 version: 4.2.0
description: Angel support for the Jael templating engine, similar to Blade or Liquid. description: Angel support for the Jael templating engine, similar to Blade or Liquid.
homepage: https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/angel_jael homepage: https://angel3-framework.web.app/
repository: https://github.com/dukefirehawk/angel/tree/master/packages/jael/angel_jael
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
angel3_framework: ^4.0.0 angel3_framework: ^4.1.0
angel3_code_buffer: ^2.0.0 belatuk_code_buffer: ^3.0.0
belatuk_symbol_table: ^3.0.0 belatuk_symbol_table: ^3.0.0
jael3: ^4.1.0 jael3: ^4.2.0
jael3_preprocessor: ^4.1.0 jael3_preprocessor: ^4.1.0
file: ^6.0.0 file: ^6.0.0
logging: ^1.0.1 logging: ^1.0.1

View file

@ -1,9 +1,13 @@
# Change Log # Change Log
## 4.2.0
* Updated to use `package:belatuk_code_buffer`
## 4.1.0 ## 4.1.0
* Updated to use `belatuk_symbol_table` package * Updated to use `package:belatuk_symbol_table`
* Upgraded from `pendantic` to `lints` linter * Updated linter to `package:lints`
## 4.0.0 ## 4.0.0

View file

@ -1,13 +1,13 @@
# Jael 3 # Jael 3
[![version](https://img.shields.io/badge/pub-v4.1.0-brightgreen)](https://pub.dev/packages/jael3) ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/jael3?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/belatuk-common-utilities)](https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/jael/LICENSE) [![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/jael/jael/LICENSE)
A simple server-side HTML templating engine for Dart. A simple server-side HTML templating engine for Dart.
[See documentation.](https://docs.angel-dart.dev/packages/front-end/jael) [See documentation.](https://angel3-docs.dukefirehawk.com/packages/front-end/jael)
## Installation ## Installation
@ -15,7 +15,7 @@ In your `pubspec.yaml`:
```yaml ```yaml
dependencies: dependencies:
jael3: ^4.1.0 jael3: ^4.2.0
``` ```
## API ## API
@ -23,9 +23,9 @@ dependencies:
The core `jael3` package exports classes for parsing Jael templates, an AST library, and a `Renderer` class that generates HTML on-the-fly. The core `jael3` package exports classes for parsing Jael templates, an AST library, and a `Renderer` class that generates HTML on-the-fly.
```dart ```dart
import 'package:angel3_code_buffer/code_buffer.dart'; import 'package:belatuk_code_buffer/code_buffer.dart';
import 'package:belatuk_symbol_table/symbol_table.dart';
import 'package:jael3/jael.dart' as jael; import 'package:jael3/jael.dart' as jael;
import 'package:angel3_symbol_table/symbol_table.dart';
void myFunction() { void myFunction() {
const template = ''' const template = '''
@ -50,5 +50,4 @@ void myFunction() {
} }
``` ```
Pre-processing (i.e. handling of blocks and includes) is handled Pre-processing (i.e. handling of blocks and includes) is handled by `package:jael3_preprocessor.`.
by `package:jael3_preprocessor.`.

View file

@ -1,6 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:charcode/charcode.dart'; import 'package:charcode/charcode.dart';
import 'package:angel3_code_buffer/angel3_code_buffer.dart'; import 'package:belatuk_code_buffer/belatuk_code_buffer.dart';
import 'package:jael3/jael3.dart' as jael; import 'package:jael3/jael3.dart' as jael;
import 'package:belatuk_symbol_table/belatuk_symbol_table.dart'; import 'package:belatuk_symbol_table/belatuk_symbol_table.dart';

View file

@ -1,5 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'package:angel3_code_buffer/angel3_code_buffer.dart'; import 'package:belatuk_code_buffer/belatuk_code_buffer.dart';
import 'package:collection/collection.dart' show IterableExtension; import 'package:collection/collection.dart' show IterableExtension;
//import 'package:source_span/source_span.dart'; //import 'package:source_span/source_span.dart';
import 'package:belatuk_symbol_table/belatuk_symbol_table.dart'; import 'package:belatuk_symbol_table/belatuk_symbol_table.dart';

View file

@ -1,13 +1,13 @@
name: jael3 name: jael3
version: 4.1.0 version: 4.2.0
description: A simple server-side HTML templating engine for Dart. Comparable to Blade or Liquid. description: A simple server-side HTML templating engine for Dart. Comparable to Blade or Liquid.
homepage: https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/jael homepage: https://github.com/dukefirehawk/angel/tree/master/packages/jael/jael
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
args: ^2.0.0 args: ^2.0.0
charcode: ^1.0.0 charcode: ^1.0.0
angel3_code_buffer: ^2.0.0 belatuk_code_buffer: ^3.0.0
belatuk_symbol_table: ^3.0.0 belatuk_symbol_table: ^3.0.0
source_span: ^1.0.0 source_span: ^1.0.0
string_scanner: ^1.0.0 string_scanner: ^1.0.0

View file

@ -1,5 +1,5 @@
import 'dart:math'; import 'dart:math';
import 'package:angel3_code_buffer/angel3_code_buffer.dart'; import 'package:belatuk_code_buffer/belatuk_code_buffer.dart';
import 'package:jael3/jael3.dart' as jael; import 'package:jael3/jael3.dart' as jael;
import 'package:belatuk_symbol_table/belatuk_symbol_table.dart'; import 'package:belatuk_symbol_table/belatuk_symbol_table.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';

View file

@ -1,4 +1,4 @@
import 'package:angel3_code_buffer/angel3_code_buffer.dart'; import 'package:belatuk_code_buffer/belatuk_code_buffer.dart';
import 'package:jael3/jael3.dart' as jael; import 'package:jael3/jael3.dart' as jael;
import 'package:belatuk_symbol_table/belatuk_symbol_table.dart'; import 'package:belatuk_symbol_table/belatuk_symbol_table.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';

View file

@ -1,9 +1,13 @@
# Change Log # Change Log
## 4.2.0
* Updated to use `package:belatuk_code_buffer`
## 4.1.0 ## 4.1.0
* Updated to use `belatuk_symbol_table` package * Updated to use `package:belatuk_symbol_table`
* Upgraded from `pendantic` to `lints` linter * Updated linter to `package:lints`
## 4.0.1 ## 4.0.1

View file

@ -1,11 +1,11 @@
# Jael Ppreprocessor # Jael Ppreprocessor
[![version](https://img.shields.io/badge/pub-v4.0.1-brightgreen)](https://pub.dev/packages/jael3_preprocessor) ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/jael3_preprocessor?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/belatuk-common-utilities)](https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/jael_preprocessor/LICENSE) [![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/jael/jael_preprocessor/LICENSE)
A pre-processor for resolving blocks and includes within [Jael 3](https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/jael) templates. A pre-processor for resolving blocks and includes within [Jael 3](https://pub.dev/packages/jael3) templates.
## Installation ## Installation
@ -13,19 +13,14 @@ In your `pubspec.yaml`:
```yaml ```yaml
dependencies: dependencies:
jael3_prepreprocessor: ^4.1.0 jael3_prepreprocessor: ^4.2.0
``` ```
## Usage ## Usage
It is unlikely that you will directly use this package, as it is It is unlikely that you will directly use this package, as it is more of an implementation detail than a requirement. However, it is responsible for handling `include` and `block` directives (template inheritance), so you are a package maintainer and want to support Jael, read on.
more of an implementation detail than a requirement. However, it
is responsible for handling `include` and `block` directives
(template inheritance), so you are a package maintainer and want
to support Jael, read on.
To keep things simple, just use the `resolve` function, which will To keep things simple, just use the `resolve` function, which will take care of inheritance for you.
take care of inheritance for you.
```dart ```dart
import 'package:jael3_preprocessor/jael3_preprocessor.dart' as jael; import 'package:jael3_preprocessor/jael3_preprocessor.dart' as jael;
@ -36,9 +31,7 @@ myFunction() async {
} }
``` ```
You may occasionally need to manually patch in functionality that is not You may occasionally need to manually patch in functionality that is not available through the official Jael packages. To achieve this, simply provide an `Iterable` of `Patcher` functions:
available through the official Jael packages. To achieve this, simply
provide an `Iterable` of `Patcher` functions:
```dart ```dart
myOtherFunction(jael.Document doc) { myOtherFunction(jael.Document doc) {

View file

@ -1,16 +1,17 @@
name: jael3_preprocessor name: jael3_preprocessor
version: 4.1.0 version: 4.2.0
description: A pre-processor for resolving blocks and includes within Jael templates. description: A pre-processor for resolving blocks and includes within Jael templates.
homepage: https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/jael_preprocessor homepage: https://angel3-framework.web.app/
repository: https://github.com/dukefirehawk/angel/tree/master/packages/jael/jael_preprocessor
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
file: ^6.1.0 file: ^6.1.0
jael3: ^4.1.0 jael3: ^4.2.0
belatuk_symbol_table: ^3.0.0 belatuk_symbol_table: ^3.0.0
collection: ^1.15.0 collection: ^1.15.0
dev_dependencies: dev_dependencies:
angel3_code_buffer: ^2.0.0 belatuk_code_buffer: ^3.0.0
test: ^1.17.4 test: ^1.17.4
lints: ^1.0.0 lints: ^1.0.0
#dependency_overrides: #dependency_overrides:

View file

@ -1,4 +1,4 @@
import 'package:angel3_code_buffer/angel3_code_buffer.dart'; import 'package:belatuk_code_buffer/belatuk_code_buffer.dart';
import 'package:file/file.dart'; import 'package:file/file.dart';
import 'package:file/memory.dart'; import 'package:file/memory.dart';
import 'package:jael3/jael3.dart' as jael; import 'package:jael3/jael3.dart' as jael;

View file

@ -1,4 +1,4 @@
import 'package:angel3_code_buffer/angel3_code_buffer.dart'; import 'package:belatuk_code_buffer/belatuk_code_buffer.dart';
import 'package:file/file.dart'; import 'package:file/file.dart';
import 'package:file/memory.dart'; import 'package:file/memory.dart';
import 'package:jael3/jael3.dart' as jael; import 'package:jael3/jael3.dart' as jael;

View file

@ -1,15 +1,28 @@
# 3.0.0 # Change Log
## 3.1.0
* Updated to use `package:belatuk_merge_map`
* Updated to use `package:belatuk_json_serializer`
* Updated linter to `package:lints`
## 3.0.0
* Migrated to support Dart SDK 2.12.x NNBD * Migrated to support Dart SDK 2.12.x NNBD
# 2.0.3 ## 2.0.3
* Add null-coalescing check when processing queries: https://github.com/angel-dart/mongo/pull/12
* Add null-coalescing check when processing queries: <https://github.com/angel-dart/mongo/pull/12>
## 2.0.2
# 2.0.2
* Fix flaw where clients could remove all records, even if `allowRemoveAll` were `false`. * Fix flaw where clients could remove all records, even if `allowRemoveAll` were `false`.
# 2.0.1 ## 2.0.1
* Override `readMany` and `findOne`. * Override `readMany` and `findOne`.
# 2.0.0- ## 2.0.0-
* Delete `mongo_service_typed`. * Delete `mongo_service_typed`.
* Update for Angel 2. * Update for Angel 2.

View file

@ -1,21 +1,29 @@
The MIT License (MIT) BSD 3-Clause License
Copyright (c) 2016 angel-dart Copyright (c) 2021, dukefirehawk.com
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy Redistribution and use in source and binary forms, with or without
of this software and associated documentation files (the "Software"), to deal modification, are permitted provided that the following conditions are met:
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all 1. Redistributions of source code must retain the above copyright notice, this
copies or substantial portions of the Software. list of conditions and the following disclaimer.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2. Redistributions in binary form must reproduce the above copyright notice,
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, this list of conditions and the following disclaimer in the documentation
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE and/or other materials provided with the distribution.
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3. Neither the name of the copyright holder nor the names of its
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE contributors may be used to endorse or promote products derived from
SOFTWARE. this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,24 +1,27 @@
# angel3_mongo # Angel3 Mongo
[![version](https://img.shields.io/badge/pub-v3.0.0-brightgreen)](https://pub.dartlang.org/packages/angel3_mongo)
![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_mongo?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/mongo/LICENSE)
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/mongo/LICENSE)
MongoDB-enabled services for the Angel3 framework. MongoDB-enabled services for the Angel3 framework.
# Installation ## Installation
Add the following to your `pubspec.yaml`: Add the following to your `pubspec.yaml`:
```yaml ```yaml
dependencies: dependencies:
angel3_mongo: ^3.0.0 angel3_mongo: ^3.1.0
``` ```
# Usage ## Usage
This library exposes one main class: `MongoService`. This library exposes one main class: `MongoService`.
## Model ## Model
`Model` is class with no real functionality; however, it represents a basic document, and your services should host inherited classes. `Model` is class with no real functionality; however, it represents a basic document, and your services should host inherited classes.
Other Angel service providers host `Model` as well, so you will easily be able to modify your application if you ever switch databases. Other Angel service providers host `Model` as well, so you will easily be able to modify your application if you ever switch databases.
@ -41,18 +44,24 @@ void main() async {
``` ```
## MongoService ## MongoService
This class interacts with a `DbCollection` (from mongo_dart) and serializing data to and from Maps. This class interacts with a `DbCollection` (from mongo_dart) and serializing data to and from Maps.
## Querying ## Querying
You can query these services as follows: You can query these services as follows:
```bash
/path/to/service?foo=bar /path/to/service?foo=bar
```
The above will query the database to find records where 'foo' equals 'bar'. The above will query the database to find records where 'foo' equals 'bar'.
The former will sort result in ascending order of creation, and so will the latter. The former will sort result in ascending order of creation, and so will the latter.
```dart
List queried = await MyService.index({r"$query": where.id(new ObjectId.fromHexString("some hex string"}))); List queried = await MyService.index({r"$query": where.id(new ObjectId.fromHexString("some hex string"})));
```
And, of course, you can use mongo_dart queries. Just pass it as `query` within `params`. And, of course, you can use mongo_dart queries. Just pass it as `query` within `params`.

View file

@ -1,4 +1 @@
include: package:pedantic/analysis_options.yaml include: package:lints/recommended.yaml
analyzer:
strong-mode:
implicit-casts: false

View file

@ -2,7 +2,7 @@ library angel3_mongo.services;
import 'dart:async'; import 'dart:async';
import 'package:angel3_framework/angel3_framework.dart'; import 'package:angel3_framework/angel3_framework.dart';
import 'package:angel3_merge_map/angel3_merge_map.dart'; import 'package:belatuk_merge_map/belatuk_merge_map.dart';
import 'package:mongo_dart/mongo_dart.dart'; import 'package:mongo_dart/mongo_dart.dart';
part 'mongo_service.dart'; part 'mongo_service.dart';

View file

@ -1,15 +1,21 @@
name: angel3_mongo name: angel3_mongo
version: 3.0.0 version: 3.1.0
description: MongoDB-enabled services for the Angel framework. Well-tested. description: MongoDB-enabled services for the Angel framework. Well-tested.
homepage: https://github.com/dukefirehawk/angel/tree/angel3/packages/mongo homepage: https://angel3-framework.web.app/
repository: https://github.com/dukefirehawk/angel/tree/master/packages/mongo
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
angel3_framework: ^4.0.0 angel3_framework: ^4.2.0
angel3_json_god: ^4.0.0 belatuk_json_serializer: ^5.0.0
angel3_merge_map: ^2.0.0 belatuk_merge_map: ^3.0.0
mongo_dart: ^0.7.0 mongo_dart: ^0.7.0
dev_dependencies: dev_dependencies:
http: ^0.13.0 http: ^0.13.0
pedantic: ^1.11.0 test: ^1.17.5
test: ^1.17.0 lints: ^1.0.0
#dependency_overrides:
# angel3_framework:
# path: ../framework
# angel3_route:
# path: ../route

View file

@ -2,7 +2,7 @@ import 'package:angel3_framework/angel3_framework.dart';
import 'package:angel3_framework/http.dart'; import 'package:angel3_framework/http.dart';
import 'package:angel3_mongo/angel3_mongo.dart'; import 'package:angel3_mongo/angel3_mongo.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:angel3_json_god/angel3_json_god.dart' as god; import 'package:belatuk_json_serializer/belatuk_json_serializer.dart' as god;
import 'package:mongo_dart/mongo_dart.dart'; import 'package:mongo_dart/mongo_dart.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';

View file

@ -1,5 +0,0 @@
{
"files.watcherExclude": {
"**/target": true
}
}

View file

@ -1,39 +1,58 @@
# 5.0.1 # Change Log
## 5.1.0
* Updated to use `package:belatuk_combinator`
* Updated linter to `package:lints`
## 5.0.1
* Updated README * Updated README
# 5.0.0 ## 5.0.0
* Migrated to support Dart SDK 2.12.x NNBD * Migrated to support Dart SDK 2.12.x NNBD
# 4.0.0 ## 4.0.0
* Migrated to work with Dart SDK 2.12.x Non NNBD * Migrated to work with Dart SDK 2.12.x Non NNBD
# 3.1.0+1 ## 3.1.0+1
* Accidentally hit `CTRL-C` while uploading `3.1.0`; this version ensures everything is ok. * Accidentally hit `CTRL-C` while uploading `3.1.0`; this version ensures everything is ok.
# 3.1.0 ## 3.1.0
* Add `Router.groupAsync` * Add `Router.groupAsync`
# 3.0.6 ## 3.0.6
* Remove static default values for `middleware`. * Remove static default values for `middleware`.
# 3.0.5 ## 3.0.5
* Add `MiddlewarePipelineIterator`. * Add `MiddlewarePipelineIterator`.
# 3.0.4 ## 3.0.4
* Add `RouteResult` class, which allows segments (i.e. wildcard) to * Add `RouteResult` class, which allows segments (i.e. wildcard) to
modify the `tail`. modify the `tail`.
* Add more wildcard tests. * Add more wildcard tests.
# 3.0.3 ## 3.0.3
* Support trailing text after parameters with custom Regexes. * Support trailing text after parameters with custom Regexes.
# 3.0.2 ## 3.0.2
* Support leading and trailing text for both `:parameters` and `*` * Support leading and trailing text for both `:parameters` and `*`
# 3.0.1 ## 3.0.1
* Make the callback in `Router.group` generically-typed. * Make the callback in `Router.group` generically-typed.
# 3.0.0 ## 3.0.0
* Make `Router` and `Route` single-parameter generic. * Make `Router` and `Route` single-parameter generic.
* Remove `package:browser` dependency. * Remove `package:browser` dependency.
* `BrowserRouter.on` now only accepts a `String`. * `BrowserRouter.on` now only accepts a `String`.
@ -42,8 +61,10 @@ an `Iterable<RoutingResult>`, instead of just a `List`.
* Removed deprecated `Route.as`, as well as `Router.registerMiddleware`. * Removed deprecated `Route.as`, as well as `Router.registerMiddleware`.
* Completely removed `Route.requestMiddleware`. * Completely removed `Route.requestMiddleware`.
# 2.0.7 ## 2.0.7
* Minor strong mode updates to work with stricter Dart 2. * Minor strong mode updates to work with stricter Dart 2.
# 2.0.5 ## 2.0.5
* Patch to work with `combinator@1.0.0`. * Patch to work with `combinator@1.0.0`.

View file

@ -1,21 +1,29 @@
MIT License (MIT) BSD 3-Clause License
Copyright (c) 2021 dukefirehawk.com Copyright (c) 2021, dukefirehawk.com
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy Redistribution and use in source and binary forms, with or without
of this software and associated documentation files (the "Software"), to deal modification, are permitted provided that the following conditions are met:
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all 1. Redistributions of source code must retain the above copyright notice, this
copies or substantial portions of the Software. list of conditions and the following disclaimer.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2. Redistributions in binary form must reproduce the above copyright notice,
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, this list of conditions and the following disclaimer in the documentation
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE and/or other materials provided with the distribution.
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3. Neither the name of the copyright holder nor the names of its
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE contributors may be used to endorse or promote products derived from
SOFTWARE. this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,41 +1,35 @@
# angel3_route # Angel3 Route
[![version](https://img.shields.io/badge/pub-v5.0.1-brightgreen)](https://pub.dartlang.org/packages/angel3_route)
![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_route?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/route/LICENSE)
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/route/LICENSE)
A powerful, isomorphic routing library for Dart. A powerful, isomorphic routing library for Dart.
`angel3_route` exposes a routing system that takes the shape of a tree. This tree structure `angel3_route` exposes a routing system that takes the shape of a tree. This tree structure can be easily navigated, in a fashion somewhat similar to a filesystem. The `Router` API is a very straightforward interface that allows for your code to take a shape similar to the route tree. Users of Laravel and Express will be very happy.
can be easily navigated, in a fashion somewhat similar to a filesystem. The `Router` API
is a very straightforward interface that allows for your code to take a shape similar to
the route tree. Users of Laravel and Express will be very happy.
`angel3_route` does not require the use of [Angel](https://github.com/dukefirehawk/angel), `angel3_route` does not require the use of [Angel 3](https://pub.dev/packages/angel3_framework), and has minimal dependencies. Thus, it can be used in any application, regardless of framework. This includes Web apps, Flutter apps, CLI apps, and smaller servers which do not need all the features of the Angel framework.
and has minimal dependencies. Thus, it can be used in any application, regardless of
framework. This includes Web apps, Flutter apps, CLI apps, and smaller servers which do
not need all the features of the Angel framework.
# Contents ## Contents
* [Examples](#examples) - [Angel3 Route](#angel3-route)
* [Routing](#routing) - [Contents](#contents)
* [Tree Hierarchy and Path Resolution](#hierarchy) - [Examples](#examples)
* [In the Browser](#in-the-browser) - [Routing](#routing)
* [Route State](#route-state) - [Hierarchy](#hierarchy)
* [Route Parameters](#route-parameters) - [In the Browser](#in-the-browser)
- [Route State](#route-state)
- [Route Parameters](#route-parameters)
# Examples ## Examples
## Routing ### Routing
If you use [Angel](https://github.com/dukefirehawk/angel), every `Angel` instance is
a `Router` in itself. If you use [Angel 3](https://pub.dev/packages/angel3_framework), every `Angel` instance is a `Router` in itself.
```dart ```dart
void main() {
main() {
final router = Router(); final router = Router();
router.get('/users', () {}); router.get('/users', () {});
@ -73,14 +67,12 @@ main() {
} }
``` ```
The default `Router` does not give any notification of routes being changed, because The default `Router` does not give any notification of routes being changed, because there is no inherent stream of URL's for it to listen to. This is good, because a server needs a lot of flexibility with which to handle requests.
there is no inherent stream of URL's for it to listen to. This is good, because a server
needs a lot of flexibility with which to handle requests.
## Hierarchy ### Hierarchy
```dart ```dart
main() { void main() {
final router = Router(); final router = Router();
router router
@ -101,20 +93,19 @@ main() {
See [the tests](test/route/no_params.dart) for good examples. See [the tests](test/route/no_params.dart) for good examples.
# In the Browser ## In the Browser
Supports both hashed routes and pushState. The `BrowserRouter` interface exposes
a `Stream<RoutingResult> onRoute`, which can be listened to for changes. It will fire `"NULL"`
whenever no route is matched.
`angel3_route` will also automatically intercept `<a>` elements and redirect them to Supports both hashed routes and pushState. The `BrowserRouter` interface exposes a `Stream<RoutingResult> onRoute`, which can be listened to for changes. It will fire `"NULL"` whenever no route is matched.
your routes.
`angel3_route` will also automatically intercept `<a>` elements and redirect them to your routes.
To prevent this for a given anchor, do any of the following: To prevent this for a given anchor, do any of the following:
* Do not provide an `href`
* Provide a `download` or `target` attribute on the element
* Set `rel="external"`
# Route State * Do not provide an `href`
* Provide a `download` or `target` attribute on the element
* Set `rel="external"`
## Route State
```dart ```dart
main() { main() {
@ -130,12 +121,11 @@ main() {
} }
``` ```
For applications where you need to access a chain of handlers, consider using For applications where you need to access a chain of handlers, consider using `onResolve` instead. You can see an example in `web/shared/basic.dart`.
`onResolve` instead. You can see an example in `web/shared/basic.dart`.
# Route Parameters ## Route Parameters
Routes can have parameters, as seen in the above examples.
Use `allParams` in a `RoutingResult` to get them as a nice `Map`: Routes can have parameters, as seen in the above examples. Use `allParams` in a `RoutingResult` to get them as a nice `Map`:
```dart ```dart
var router = Router(); var router = Router();

View file

@ -1,4 +1 @@
include: package:pedantic/analysis_options.yaml include: package:lints/recommended.yaml
analyzer:
strong-mode:
implicit-casts: false

View file

@ -1,7 +1,7 @@
library angel3_route.src.router; library angel3_route.src.router;
import 'dart:async'; import 'dart:async';
import 'package:angel3_combinator/angel3_combinator.dart'; import 'package:belatuk_combinator/belatuk_combinator.dart';
import 'package:string_scanner/string_scanner.dart'; import 'package:string_scanner/string_scanner.dart';
import '../string_util.dart'; import '../string_util.dart';

View file

@ -1,16 +1,17 @@
name: angel3_route name: angel3_route
version: 5.0.1 version: 5.1.0
description: A powerful, isomorphic routing library for Dart. It is mainly used in the Angel framework, but can be used in Flutter and on the Web. description: A powerful, isomorphic routing library for Dart. It is mainly used in the Angel framework, but can be used in Flutter and on the Web.
homepage: https://github.com/dukefirehawk/angel/tree/angel3/packages/route homepage: https://angel3-framework.web.app/
repository: https://github.com/dukefirehawk/angel/tree/master/packages/route
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
angel3_combinator: ^2.0.0 belatuk_combinator: ^3.0.0
string_scanner: ^1.1.0 string_scanner: ^1.1.0
path: ^1.8.0 path: ^1.8.0
dev_dependencies: dev_dependencies:
build_runner: ^1.12.2 build_runner: ^1.12.2
build_web_compilers: ^2.16.5 build_web_compilers: ^2.16.5
http: ^0.13.3 http: ^0.13.3
pedantic: ^1.11.0 test: ^1.17.5
test: ^1.17.4 lints: ^1.0.0

View file

@ -1,4 +0,0 @@
language: dart
script: bash tool/.travis.sh
dart:
- stable

View file

@ -1,21 +0,0 @@
MIT License (MIT)
Copyright (c) 2021 dukefirehawk.com
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,427 +0,0 @@
# serialize
[![Pub](https://img.shields.io/pub/v/angel_serialize.svg)](https://pub.dartlang.org/packages/angel_serialize)
[![build status](https://travis-ci.org/angel-dart/serialize.svg)](https://travis-ci.org/angel-dart/serialize)
Source-generated serialization for Dart objects. This package uses `package:source_gen` to eliminate
the time you spend writing boilerplate serialization code for your models.
`package:angel_serialize` also powers `package:angel_orm`.
- [Usage](#usage)
- [Models](#models)
- [Subclasses](#subclasses)
- [Field Aliases](#aliases)
- [Excluding Keys](#excluding-keys)
- [Required Fields](#required-fields)
- [Adding Annotations to Generated Classes](#adding-annotations-to-generated-classes)
- [Custom Serializers](#custom-serializers)
- [Serialization](#serializaition)
- [Nesting](#nesting)
- [ID and Date Fields](#id-and-dates)
- [Binary Data](#binary-data)
- [TypeScript Definition Generator](#typescript-definitions)
- [Constructor Parameters](#constructor-parameters)
# Usage
In your `pubspec.yaml`, you need to install the following dependencies:
```yaml
dependencies:
angel_model: ^1.0.0
angel_serialize: ^2.0.0
dev_dependencies:
angel_serialize_generator: ^2.0.0
build_runner: ^1.0.0
```
With the recent updates to `package:build_runner`, you can build models automatically,
anywhere in your project structure,
by running `pub run build_runner build`.
To tweak this:
https://pub.dartlang.org/packages/build_config
If you want to watch for file changes and re-build when necessary, replace the `build` call
with a call to `watch`. They take the same parameters.
# Models
There are a few changes opposed to normal Model classes. You need to add a `@serializable` annotation to your model
class to have it serialized, and a serializable model class's name should also start
with a leading underscore.
In addition, you may consider using an `abstract` class to ensure immutability
of models.
Rather you writing the public class, `angel_serialize` does it for you. This means that the main class can have
its constructors automatically generated, in addition into serialization functions.
For example, say we have a `Book` model. Create a class named `_Book`:
```dart
library angel_serialize.test.models.book;
import 'package:angel_model/angel_model.dart';
import 'package:angel_serialize/angel_serialize.dart';
import 'package:collection/collection.dart';
part 'book.g.dart';
@serializable
abstract class _Book extends Model {
String get author;
@SerializableField(defaultValue: '[Untitled]')
String get title;
String get description;
int get pageCount;
BookType get type;
}
/// It even supports enums!
enum BookType {
fiction,
nonFiction
}
```
The following file will be generated:
- `book.g.dart`
Producing these classes:
- `Book`: Extends or implements `_Book`; may be `const`-enabled.
- `BookSerializer`: static functionality for serializing `Book` models.
- `BookFields`: The names of all fields from the `Book` model, statically-available.
- `BookEncoder`: Allows `BookSerializer` to extend `Codec<Book, Map>`.
- `BookDecoder`: Also allows `BookSerializer` to extend `Codec<Book, Map>`.
And the following other features:
- `bookSerializer`: A top-level, `const` instance of `BookSerializer`.
- `Book.toString`: Prints out all of a `Book` instance's fields.
# Serialization
You can use the generated files as follows:
```dart
myFunction() {
var warAndPeace = new Book(
author: 'Leo Tolstoy',
title: 'War and Peace',
description: 'You will cry after reading this.',
pageCount: 1225
);
// Easily serialize models into Maps
var map = BookSerializer.toMap(warAndPeace);
// Also deserialize from Maps
var book = BookSerializer.fromMap(map);
print(book.title); // 'War and Peace'
// For compatibility with `JSON.encode`, a `toJson` method
// is included that forwards to `BookSerializer.toMap`:
expect(book.toJson(), map);
// Generated classes act as value types, and thus can be compared.
expect(BookSerializer.fromMap(map), equals(warAndPeace));
}
```
As of `2.0.2`, the generated output also includes information
about the serialized names of keys on your model class.
```dart
myOtherFunction() {
// Relying on the serialized key of a field? No worries.
map[BookFields.author] = 'Zora Neale Hurston';
}
}
```
## Customizing Serialization
Currently, these serialization methods are supported:
- to `Map`
- to JSON
- to TypeScript definitions
You can customize these by means of `serializers`:
```dart
@Serializable(serializers: const [Serializers.map, Serializers.json])
class _MyClass extends Model {}
```
## Subclasses
`angel_serialize` pulls in fields from parent classes, as well as
implemented interfaces, so it is extremely easy to share attributes among
model classes:
```dart
import 'package:angel_serialize/angel_serialize.dart';
part 'subclass.g.dart';
@serializable
class _Animal {
@notNull
String genus;
@notNull
String species;
}
@serializable
class _Bird extends _Animal {
@DefaultsTo(false)
bool isSparrow;
}
var saxaulSparrow = Bird(
genus: 'Passer',
species: 'ammodendri',
isSparrow: true,
);
```
## Aliases
Whereas Dart fields conventionally are camelCased, most database columns
tend to be snake_cased. This is not a problem, because we can define an alias
for a field.
By default `angel_serialize` will transform keys into snake case. Use `alias` to
provide a custom name, or pass `autoSnakeCaseNames`: `false` to the builder;
```dart
@serializable
abstract class _Spy extends Model {
/// Will show up as 'agency_id' in serialized JSON.
///
/// When deserializing JSON, instead of searching for an 'agencyId' key,
/// it will use 'agency_id'.
///
/// Hooray!
String agencyId;
@SerializableField(alias: 'foo')
String someOtherField;
}
```
You can also override `autoSnakeCaseNames` per model:
```dart
@Serializable(autoSnakeCaseNames: false)
abstract class _OtherCasing extends Model {
String camelCasedField;
}
```
## Excluding Keys
In pratice, there may keys that you want to exclude from JSON.
To accomplish this, simply annotate them with `@exclude`:
```dart
@serializable
abstract class _Whisper extends Model {
/// Will never be serialized to JSON
@SerializableField(exclude: true)
String secret;
}
```
There are times, however, when you want to only exclude either serialization
or deserialization, but not both. For example, you might want to deserialize
passwords from a database without sending them to users as JSON.
In this case, use `canSerialize` or `canDeserialize`:
```dart
@serializable
abstract class _Whisper extends Model {
/// Will never be serialized to JSON
///
/// ... But it can be deserialized
@SerializableField(exclude: true, canDeserialize: true)
String secret;
}
```
## Required Fields
It is easy to mark a field as required:
```dart
@serializable
abstract class _Foo extends Model {
@SerializableField(isNullable: false)
int myRequiredInt;
@SerializableField(isNullable: false, errorMessage: 'Custom message')
int myOtherRequiredInt;
}
```
The given field will be marked as `@required` in the
generated constructor, and serializers will check for its
presence, throwing a `FormatException` if it is missing.
## Adding Annotations to Generated Classes
There are times when you need the generated class to have annotations affixed to it:
```dart
@Serializable(
includeAnnotations: [
Deprecated('blah blah blah'),
pragma('something...'),
]
)
abstract class _Foo extends Model {}
```
## Custom Serializers
`package:angel_serialize` does not cover every known Dart data type; you can add support for your own.
Provide `serializer` and `deserializer` arguments to `@SerializableField()` as you see fit.
They are typically used together. Note that the argument to `deserializer` will always be
`dynamic`, while `serializer` can receive the data type in question.
In such a case, you might want to also provide a `serializesTo` argument.
This lets the generator, as well as the ORM, apply the correct (de)serialization rules
and validations.
```dart
DateTime _dateFromString(s) => s is String ? HttpDate.parse(s) : null;
String _dateToString(DateTime v) => v == null ? null : HttpDate.format(v);
@serializable
abstract class _HttpRequest {
@SerializableField(
serializer: #_dateToString,
deserializer: #_dateFromString,
serializesTo: String)
DateTime date;
}
```
# Nesting
`angel_serialize` also supports a few types of nesting of `@serializable` classes:
- As a class member, ex. `Book myField`
- As the type argument to a `List`, ex. `List<Book>`
- As the second type argument to a `Map`, ex. `Map<String, Book>`
In other words, the following are all legal, and will be serialized/deserialized.
You can use either the underscored name of a child class (ex. `_Book`), or the
generated class name (ex `Book`):
```dart
@serializable
abstract class _Author extends Model {
List<Book> books;
Book newestBook;
Map<String, Book> booksByIsbn;
}
```
If your model (`Author`) depends on a model defined in another file (`Book`),
then you will need to generate `book.g.dart` before, `author.g.dart`,
**in a separate build action**. This way, the analyzer can resolve the `Book` type.
# ID and Dates
This package will automatically generate `id`, `createdAt`, and `updatedAt` fields for you,
in the style of an Angel `Model`. This will automatically be generated, **only** for classes
extending `Model`.
# Binary Data
`package:angel_serialize` also handles `Uint8List` fields, by means of serialization to
and from `base64` encoding.
# TypeScript Definitions
It is quite common to build frontends with JavaScript and/or TypeScript,
so why not generate typings as well?
To accomplish this, add `Serializers.typescript` to your `@Serializable()` declaration:
```dart
@Serializable(serializers: const [Serializers.map, Serializers.json, Serializers.typescript])
class _Foo extends Model {}
```
The aforementioned `_Author` class will generate the following in `author.d.ts`:
```typescript
interface Author {
id: string;
name: string;
age: number;
books: Book[];
newest_book: Book;
created_at: any;
updated_at: any;
}
interface Library {
id: string;
collection: BookCollection;
created_at: any;
updated_at: any;
}
interface BookCollection {
[key: string]: Book;
}
```
Fields with an `@Exclude()` that specifies `canSerialize: false` will not be present in the
TypeScript definition. The rationale for this is that if a field (i.e. `password`) will
never be sent to the client, the client shouldn't even know the field exists.
# Constructor Parameters
Sometimes, you may need to have custom constructor parameters, for example, when
using depedency injection frameworks. For these cases, `angel_serialize` can forward
custom constructor parameters.
The following:
```dart
@serializable
abstract class _Bookmark extends _BookmarkBase {
@SerializableField(exclude: true)
final Book book;
int get page;
String get comment;
_Bookmark(this.book);
}
```
Generates:
```dart
class Bookmark extends _Bookmark {
Bookmark(Book book,
{this.id,
this.page,
this.comment,
this.createdAt,
this.updatedAt})
: super(book);
@override
final String id;
// ...
}
```

View file

@ -1,5 +1,10 @@
# Change Log # Change Log
## 4.1.0
* Updated README
* Updated linter to `package:lints`
## 4.0.1 ## 4.0.1
* Updated README * Updated README

View file

@ -1,21 +1,29 @@
MIT License (MIT) BSD 3-Clause License
Copyright (c) 2021 dukefirehawk.com Copyright (c) 2021, dukefirehawk.com
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy Redistribution and use in source and binary forms, with or without
of this software and associated documentation files (the "Software"), to deal modification, are permitted provided that the following conditions are met:
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all 1. Redistributions of source code must retain the above copyright notice, this
copies or substantial portions of the Software. list of conditions and the following disclaimer.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2. Redistributions in binary form must reproduce the above copyright notice,
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, this list of conditions and the following disclaimer in the documentation
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE and/or other materials provided with the distribution.
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3. Neither the name of the copyright holder nor the names of its
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE contributors may be used to endorse or promote products derived from
SOFTWARE. this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,9 +1,8 @@
# Angel3 Serialization # Angel3 Serialization
[![version](https://img.shields.io/badge/pub-v4.0.1-brightgreen)](https://pub.dartlang.org/packages/angel3_serialize) ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_serialize?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/serialize/angel_serialize/LICENSE)
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/serialize/angel_serialize/LICENSE) The frontend for Angel3 model serialization. See [`Documentation`](https://angel3-docs.dukefirehawk.com/guides/serialization)
The frontend for Angel3 model serialization. See [`Documentation`](https://pub.dev/documentation/angel3_serialize/latest/)

View file

@ -1,4 +1 @@
include: package:pedantic/analysis_options.yaml include: package:lints/recommended.yaml
analyzer:
strong-mode:
implicit-casts: false

View file

@ -1,5 +1,5 @@
name: angel3_serialize name: angel3_serialize
version: 4.0.1 version: 4.1.0
description: Static annotations powering Angel3 model serialization. Combine with angel3_serialize_generator for flexible modeling. description: Static annotations powering Angel3 model serialization. Combine with angel3_serialize_generator for flexible modeling.
homepage: https://angel3-framework.web.app/ homepage: https://angel3-framework.web.app/
repository: https://github.com/dukefirehawk/angel/tree/angel3/packages/serialize/angel_serialize repository: https://github.com/dukefirehawk/angel/tree/angel3/packages/serialize/angel_serialize
@ -11,5 +11,5 @@ dependencies:
meta: ^1.3.0 meta: ^1.3.0
quiver: ^3.0.1 quiver: ^3.0.1
dev_dependencies: dev_dependencies:
pedantic: ^1.11.0 lints: ^1.0.0

View file

@ -1,10 +1,14 @@
# Change Log # Change Log
## 4.3.0
* Updated to use `package:belatuk_code_buffer`
## 4.2.0 ## 4.2.0
* Fixed `toMap` method generation for non nullable Map * Fixed `toMap` method generation for non nullable Map
* Fixed `fromMap` method generation for non nullable Map * Fixed `fromMap` method generation for non nullable Map
* Upgraded from `pendantic` to `lints` linter * Updated linter to `package:lints`
## 4.1.2 ## 4.1.2

View file

@ -1,10 +1,9 @@
# Angel3 Serialize Generator # Angel3 Serialize Generator
[![version](https://img.shields.io/badge/pub-v4.2.0-brightgreen)](https://pub.dartlang.org/packages/angel3_serialize_generator) ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_serialize_generator?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/serialize/angel_serialize_generator/LICENSE)
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/serialize/angel_serialize_generator/LICENSE)
The builder for Angel3 model serialization. The builder for Angel3 model serialization.

View file

@ -10,7 +10,7 @@ import 'package:analyzer/dart/element/type.dart';
import 'package:angel3_model/angel3_model.dart'; import 'package:angel3_model/angel3_model.dart';
import 'package:angel3_serialize/angel3_serialize.dart'; import 'package:angel3_serialize/angel3_serialize.dart';
import 'package:build/build.dart'; import 'package:build/build.dart';
import 'package:angel3_code_buffer/angel3_code_buffer.dart'; import 'package:belatuk_code_buffer/belatuk_code_buffer.dart';
import 'package:code_builder/code_builder.dart'; import 'package:code_builder/code_builder.dart';
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
import 'package:recase/recase.dart'; import 'package:recase/recase.dart';

View file

@ -126,7 +126,7 @@ class ${pascal}Decoder extends Converter<Map, $pascal> {
b b
..name = 'model' ..name = 'model'
..type = TypeReference((b) => b ..type = TypeReference((b) => b
..symbol = '$originalClassName' ..symbol = originalClassName
..isNullable = true); ..isNullable = true);
})); }));

View file

@ -1,5 +1,5 @@
name: angel3_serialize_generator name: angel3_serialize_generator
version: 4.2.0 version: 4.3.0
description: Angel3 model serialization generators, designed for use with Angel. Combine with angel_serialize for flexible modeling. description: Angel3 model serialization generators, designed for use with Angel. Combine with angel_serialize for flexible modeling.
homepage: https://angel3-framework.web.app/ homepage: https://angel3-framework.web.app/
repository: https://github.com/dukefirehawk/angel/tree/angel3/packages/serialize/angel_serialize_generator repository: https://github.com/dukefirehawk/angel/tree/angel3/packages/serialize/angel_serialize_generator
@ -9,7 +9,7 @@ dependencies:
analyzer: ^2.0.0 analyzer: ^2.0.0
angel3_model: ^3.0.0 angel3_model: ^3.0.0
angel3_serialize: ^4.0.0 angel3_serialize: ^4.0.0
angel3_code_buffer: ^2.0.0 belatuk_code_buffer: ^3.0.0
build: ^2.0.1 build: ^2.0.1
build_config: ^1.0.0 build_config: ^1.0.0
code_builder: ^4.0.0 code_builder: ^4.0.0

View file

@ -1,5 +1,10 @@
# Change Log # Change Log
## 4.1.0
* Updated to use `package:belatuk_merge_map`
* Updated linter to `package:lints`
## 4.0.1 ## 4.0.1
* Updated README * Updated README

View file

@ -1,21 +1,29 @@
MIT License (MIT) BSD 3-Clause License
Copyright (c) 2021 dukefirehawk.com Copyright (c) 2021, dukefirehawk.com
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy Redistribution and use in source and binary forms, with or without
of this software and associated documentation files (the "Software"), to deal modification, are permitted provided that the following conditions are met:
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all 1. Redistributions of source code must retain the above copyright notice, this
copies or substantial portions of the Software. list of conditions and the following disclaimer.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 2. Redistributions in binary form must reproduce the above copyright notice,
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, this list of conditions and the following disclaimer in the documentation
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE and/or other materials provided with the distribution.
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 3. Neither the name of the copyright holder nor the names of its
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE contributors may be used to endorse or promote products derived from
SOFTWARE. this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,10 +1,9 @@
# Angel3 Websocket Library # Angel3 Websocket
[![version](https://img.shields.io/badge/pub-v4.0.1-brightgreen)](https://pub.dartlang.org/packages/angel3_websocket) ![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_websocket?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![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/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/master/packages/websocket/LICENSE)
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/websocket/LICENSE)
WebSocket plugin for Angel3 framework. This plugin broadcasts events from hooked services via WebSockets. In addition, it adds itself to the app's IoC container as `AngelWebSocket`, so that it can be used in controllers as well. WebSocket plugin for Angel3 framework. This plugin broadcasts events from hooked services via WebSockets. In addition, it adds itself to the app's IoC container as `AngelWebSocket`, so that it can be used in controllers as well.
@ -134,7 +133,7 @@ class Car extends Model {
@override String toString() => "$year $brand $make"; @override String toString() => "$year $brand $make";
} }
main() async { void main() async {
Angel app = WebSockets("/ws"); Angel app = WebSockets("/ws");
// Wait for WebSocket connection... // Wait for WebSocket connection...
@ -155,3 +154,4 @@ main() async {
// Authenticate a WebSocket, if you were not already authenticated... // Authenticate a WebSocket, if you were not already authenticated...
app.authenticateViaJwt('<some-jwt>'); app.authenticateViaJwt('<some-jwt>');
} }
```

View file

@ -1,4 +1 @@
include: package:pedantic/analysis_options.yaml include: package:lints/recommended.yaml
analyzer:
strong-mode:
implicit-casts: false

View file

@ -9,7 +9,7 @@ import 'package:angel3_auth/angel3_auth.dart';
import 'package:angel3_framework/angel3_framework.dart'; import 'package:angel3_framework/angel3_framework.dart';
import 'package:angel3_framework/http.dart'; import 'package:angel3_framework/http.dart';
import 'package:angel3_framework/http2.dart'; import 'package:angel3_framework/http2.dart';
import 'package:angel3_merge_map/angel3_merge_map.dart'; import 'package:belatuk_merge_map/belatuk_merge_map.dart';
import 'package:stream_channel/stream_channel.dart'; import 'package:stream_channel/stream_channel.dart';
import 'package:web_socket_channel/io.dart'; import 'package:web_socket_channel/io.dart';
import 'package:web_socket_channel/web_socket_channel.dart'; import 'package:web_socket_channel/web_socket_channel.dart';

View file

@ -1,16 +1,16 @@
name: angel3_websocket name: angel3_websocket
version: 4.1.0
description: This library provides WebSockets support for Angel3 framework. description: This library provides WebSockets support for Angel3 framework.
version: 4.0.1
homepage: https://angel3-framework.web.app/ homepage: https://angel3-framework.web.app/
repository: https://github.com/dukefirehawk/angel/tree/angel3/packages/websocket repository: https://github.com/dukefirehawk/angel/tree/master/packages/websocket
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
angel3_auth: ^4.0.0 angel3_auth: ^4.0.0
angel3_client: ^4.0.0 angel3_client: ^4.0.0
angel3_framework: ^4.0.0 angel3_framework: ^4.2.0
angel3_http_exception: ^3.0.0 angel3_http_exception: ^3.0.0
angel3_merge_map: ^2.0.0 belatuk_merge_map: ^3.0.0
http: ^0.13.1 http: ^0.13.1
meta: ^1.3.0 meta: ^1.3.0
stream_channel: ^2.1.0 stream_channel: ^2.1.0
@ -20,8 +20,10 @@ dependencies:
dev_dependencies: dev_dependencies:
angel3_container: ^3.0.0 angel3_container: ^3.0.0
angel3_model: ^3.0.0 angel3_model: ^3.0.0
pedantic: ^1.11.0 test: ^1.17.5
test: ^1.17.4 lints: ^1.0.0
#dependency_overrides:
# angel3_framework:
# path: ../framework