Skip to content

Commit

Permalink
refactor: Apply standard lint analysis, refactor some nullables (#129)
Browse files Browse the repository at this point in the history
* refactor: Apply standard lint analysis, refactor some nullables

* fix(conduit/test/openapi): Operations need to be functions for order
  • Loading branch information
j4qfrost committed Oct 31, 2022
1 parent d351e8e commit 17f71bb
Show file tree
Hide file tree
Showing 266 changed files with 12,357 additions and 7,615 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
- name: Install melos
run: dart pub global activate melos
- name: Strip overrides
run: melos run strip-overrides
run: melos strip-overrides
- name: Format
run: dart fix --apply && dart format --fix .
- name: Uptick versions
Expand All @@ -41,14 +41,16 @@ jobs:
run: git diff --unified=0 $GITHUB_SHA packages/conduit/CHANGELOG.md | tail +6 | sed -e 's/^\+//' > CHANGES.txt
- name: Cache Source
run: melos cache-source
- name: Publish package
run: melos publish --no-dry-run --git-tag-version --yes
- name: Apply overrides
run: melos apply-overrides
- name: Push tags
uses: CasperWA/push-protected@v2
with:
token: ${{ secrets.CONDUIT_PAT }}
tags: true
branch: master
- name: Publish package
run: melos publish --no-dry-run --git-tag-version --yes
- name: Compute the release tag
run: |
echo "release_tag=v`cat packages/conduit/pubspec.yaml | sed -nre 's/^version: [^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p'`" >> $GITHUB_ENV
Expand Down
7 changes: 4 additions & 3 deletions packages/common/lib/src/openapi/documentable.dart
Original file line number Diff line number Diff line change
Expand Up @@ -159,15 +159,15 @@ class APIDocumentContext {
/// Reusable [APICallback] components.
final APIComponentCollection<APICallback> callbacks;

List<Future> _deferredOperations = [];
List<Function> _deferredOperations = [];

/// Allows asynchronous code during documentation.
///
/// Documentation methods are synchronous. Asynchronous methods may be called and awaited on
/// in [document]. All [document] closures will be executes and awaited on before finishing [document].
/// These closures are called in the order they were added.
void defer(FutureOr Function() document) {
_deferredOperations.add(Future(document));
_deferredOperations.add(document);
}

/// Finalizes [document] and returns it as a serializable [Map].
Expand All @@ -176,7 +176,8 @@ class APIDocumentContext {
Future<Map<String, dynamic>> finalize() async {
final dops = _deferredOperations;
_deferredOperations = [];
await Future.wait(dops);
// ignore: avoid_dynamic_calls
await Future.forEach(dops, (Function dop) => dop());

document.paths!.values
.expand((p) => p!.operations.values)
Expand Down
5 changes: 5 additions & 0 deletions packages/common/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,8 @@ dependencies:
conduit_open_api: ^3.2.7
dev_dependencies:
lint: ^1.0.0
dependency_overrides:
conduit_codable:
path: ../codable
conduit_open_api:
path: ../open_api
21 changes: 19 additions & 2 deletions packages/common_test/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,22 @@ publish_to: none
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
conduit: ^3.2.8
conduit_common: ^3.2.7
conduit: ^3.2.6
conduit_common: ^3.2.5
dependency_overrides:
conduit:
path: ../conduit
conduit_common:
path: ../common
conduit_open_api:
path: ../open_api
conduit_codable:
path: ../codable
conduit_config:
path: ../config
conduit_isolate_exec:
path: ../isolate_exec
conduit_password_hash:
path: ../password_hash
conduit_runtime:
path: ../runtime
99 changes: 3 additions & 96 deletions packages/conduit/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,101 +1,8 @@
include: package:lint/analysis_options.yaml

analyzer:
strong-mode:
implicit-casts: false
exclude:
- tmp/**
- templates/**

linter:
rules:
- always_declare_return_types
- always_put_control_body_on_new_line
- always_put_required_named_parameters_first
- always_require_non_null_named_parameters
- annotate_overrides
- avoid_bool_literals_in_conditional_expressions
- avoid_double_and_int_checks
- avoid_empty_else
- avoid_field_initializers_in_const_classes
- avoid_init_to_null
- avoid_null_checks_in_equality_operators
- avoid_positional_boolean_parameters
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_single_cascade_in_expression_statements
- avoid_slow_async_io
- avoid_types_as_parameter_names
- avoid_unused_constructor_parameters
- await_only_futures
- camel_case_types
- cancel_subscriptions
- close_sinks
- comment_references
- constant_identifier_names
- control_flow_in_finally
- directives_ordering
- empty_catches
- empty_constructor_bodies
- empty_statements
- file_names
- hash_and_equals
- implementation_imports
- iterable_contains_unrelated_type
- join_return_with_assignment
- library_names
- library_prefixes
- list_remove_unrelated_type
- literal_only_boolean_expressions
- no_duplicate_case_values
- non_constant_identifier_names
- null_closures
- package_api_docs
- package_names
- package_prefixed_library_names
- parameter_assignments
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_const_constructors
- prefer_const_constructors_in_immutables
- prefer_const_declarations
- prefer_const_literals_to_create_immutables
- prefer_constructors_over_static_methods
- prefer_contains
- prefer_equal_for_default_values
- prefer_final_fields
- prefer_final_locals
- prefer_foreach
- prefer_generic_function_type_aliases
- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_iterable_whereType
- prefer_typing_uninitialized_variables
- recursive_getters
- slash_for_doc_comments
- sort_constructors_first
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
- type_annotate_public_apis
- type_init_formals
- unawaited_futures
- unnecessary_const
- unnecessary_getters_setters
- unnecessary_lambdas
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_null_in_if_null_operators
- unnecessary_overrides
- unnecessary_parenthesis
- unnecessary_statements
- unnecessary_this
- unrelated_type_equality_checks
- use_rethrow_when_possible
- use_string_buffers
- use_to_and_as_if_applicable
- valid_regexps
- void_checks
- templates/**
46 changes: 0 additions & 46 deletions packages/conduit/doc/source/docs/intellij.md

This file was deleted.

96 changes: 0 additions & 96 deletions packages/conduit/doc/source/docs/migration.md

This file was deleted.

2 changes: 1 addition & 1 deletion packages/conduit/doc/source/docs/tut/oauth2.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ class RegisterController extends ResourceController {
}
user
..salt = AuthUtility.generateRandomSalt()
..salt = generateRandomSalt()
..hashedPassword = authServer.hashPassword(user.password, user.salt);
return Response.ok(await Query(context, values: user).insert());
Expand Down
25 changes: 17 additions & 8 deletions packages/conduit/example/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,16 @@ class App extends ApplicationChannel {
AppConfiguration.fromFile(File(options!.configurationFilePath!));
final db = config.database;
final persistentStore = PostgreSQLPersistentStore.fromConnectionInfo(
db.username, db.password, db.host, db.port, db.databaseName);
db.username,
db.password,
db.host,
db.port,
db.databaseName,
);
context = ManagedContext(
ManagedDataModel.fromCurrentMirrorSystem(), persistentStore);
ManagedDataModel.fromCurrentMirrorSystem(),
persistentStore,
);

authServer = AuthServer(ManagedAuthDelegate(context));
}
Expand Down Expand Up @@ -77,10 +84,11 @@ class UserController extends ResourceController {
Future<Response> createUser(@Bind.body() User user) async {
if (user.username == null || user.password == null) {
return Response.badRequest(
body: {"error": "username and password required."});
body: {"error": "username and password required."},
);
}

final salt = AuthUtility.generateRandomSalt();
final salt = generateRandomSalt();
final hashedPassword = authServer!.hashPassword(user.password!, salt);

final query = Query<User>(context!)
Expand All @@ -91,10 +99,11 @@ class UserController extends ResourceController {

final u = await query.insert();
final token = await authServer!.authenticate(
u.username,
query.values.password,
request!.authorization!.credentials!.username,
request!.authorization!.credentials!.password);
u.username,
query.values.password,
request!.authorization!.credentials!.username,
request!.authorization!.credentials!.password,
);

return AuthController.tokenResponse(token);
}
Expand Down
Loading

0 comments on commit 17f71bb

Please sign in to comment.