Skip to content

refactor(firestore)!: migrate to NNBD #4780

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 47 commits into from
Feb 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
2e763ab
chore(firestore): add linting rules
russellwheatley Jan 21, 2021
f176eb3
chore(firestore): fix linting issues
russellwheatley Jan 22, 2021
1335e4f
Merge branch 'master' into @russell/nnbd-firestore-migration
russellwheatley Jan 22, 2021
c9166c6
format: run formatter
russellwheatley Jan 22, 2021
44377bb
chore(firestore): ignore lint warning
russellwheatley Jan 22, 2021
4feda6a
chore(firestore): fix pubspecs for firestore
russellwheatley Jan 22, 2021
b45d456
fix(*): http dependency overrides to fix "melos bs"
russellwheatley Jan 25, 2021
e7fbc16
chore(firestore_platform_interface): null safety annotation tweaks
russellwheatley Jan 25, 2021
eff6fbb
refactor(firestore_platform_interface): NNBD migration
russellwheatley Jan 25, 2021
cd9fb47
chore(firestore): tweak firestore NNBD annotations
russellwheatley Jan 26, 2021
3771b39
refactor(firestore): NNBD migration applied
russellwheatley Jan 26, 2021
0b1ac09
chore(firestore_web): NNBD annotation tweaks
russellwheatley Jan 26, 2021
9f3ded8
refactor(firestore_web): NNBD migration
russellwheatley Jan 26, 2021
ffc66fe
format: run formatter
russellwheatley Jan 26, 2021
b6cc2da
chore: install melos for ci
russellwheatley Jan 26, 2021
e1a4d6b
chore(firestore_example): NNBD tweaks
russellwheatley Jan 26, 2021
f369461
refactor(firestore_example): nnbd migration
russellwheatley Jan 26, 2021
7918b2d
chore(firestore_interface): analyse error updates
russellwheatley Jan 27, 2021
3ced117
chore(firestore): platform interface analyse issues fixed
russellwheatley Jan 27, 2021
7c08ae6
chore(firestore): web analyse error clear up
russellwheatley Jan 27, 2021
a916a2b
chore(firestore): web analyse tweaks
russellwheatley Jan 27, 2021
9b448be
chore(firestore): cloud_firestore pkg analyse clean up
russellwheatley Jan 27, 2021
90e6870
format: run formatter
russellwheatley Jan 27, 2021
5e9a560
refactor(firestore_example): nnbd migration
russellwheatley Jan 27, 2021
41d4766
format: run formatter
russellwheatley Jan 27, 2021
188d299
Merge branch 'master' into @russell/nnbd-firestore-migration
russellwheatley Jan 27, 2021
c06c43f
chore(firestore): packages use same sdk constraints
russellwheatley Jan 27, 2021
337f635
tests(firestore): fix platform interface tests
russellwheatley Jan 27, 2021
f7bfcad
tests(firestore): fix SetOptions logic
russellwheatley Jan 28, 2021
8cac6b7
tests(firestore): nnbd migration test fixes
russellwheatley Jan 28, 2021
49626fc
refactor(firestore_example): revert nnbd migration
russellwheatley Jan 29, 2021
7d67720
Merge branch 'master' into @russell/nnbd-firestore-migration
russellwheatley Jan 29, 2021
b46bf2d
chore: remove duplicate packages
russellwheatley Jan 29, 2021
2edcf8d
fix(firestore_web): fix melos bs
russellwheatley Jan 29, 2021
9710301
format: run formatter
russellwheatley Jan 29, 2021
c93a838
chore(firestore): code review updates
russellwheatley Jan 29, 2021
9d1c66d
format: run formatter
russellwheatley Jan 29, 2021
89049c8
Merge branch 'master' into @russell/nnbd-firestore-migration
Salakar Feb 1, 2021
d3e34e3
chore(firestore): NNBD PR review recommendations
russellwheatley Feb 2, 2021
27d5fe5
chore(firestore_web): meta null safe package
russellwheatley Feb 2, 2021
084591e
chore(firestore): rm all pedantic dependencies
russellwheatley Feb 2, 2021
2ebdeb1
chore(firestore_web): upgarde sdk versions
russellwheatley Feb 2, 2021
4953c7d
chore(firestore): rm unnecessary asserts
russellwheatley Feb 2, 2021
d19a48e
format: run formatter
russellwheatley Feb 2, 2021
00f366c
fix(firestore): collection dependency override
russellwheatley Feb 2, 2021
6ffe2f6
chore(firestore): PI collection version
russellwheatley Feb 2, 2021
80b7752
chore(firestore): update flutter sdk version in example
russellwheatley Feb 2, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 184 additions & 0 deletions packages/cloud_firestore/all_lint_rules.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
# Copyright 2021 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# in the LICENSE file.

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
- always_specify_types
- always_use_package_imports
- annotate_overrides
- avoid_annotating_with_dynamic
- avoid_as
- avoid_bool_literals_in_conditional_expressions
- avoid_catches_without_on_clauses
- avoid_catching_errors
- avoid_classes_with_only_static_members
- avoid_double_and_int_checks
- avoid_empty_else
- avoid_equals_and_hash_code_on_mutable_classes
- avoid_escaping_inner_quotes
- avoid_field_initializers_in_const_classes
- avoid_function_literals_in_foreach_calls
- avoid_implementing_value_types
- avoid_init_to_null
- avoid_js_rounded_ints
- avoid_null_checks_in_equality_operators
- avoid_positional_boolean_parameters
- avoid_print
- avoid_private_typedef_functions
- avoid_redundant_argument_values
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_returning_null_for_future
- avoid_returning_null_for_void
- avoid_returning_this
- avoid_setters_without_getters
- avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_slow_async_io
- avoid_type_to_string
- avoid_types_as_parameter_names
- avoid_types_on_closure_parameters
- avoid_unnecessary_containers
- avoid_unused_constructor_parameters
- avoid_void_async
- avoid_web_libraries_in_flutter
- await_only_futures
- camel_case_extensions
- camel_case_types
- cancel_subscriptions
- cascade_invocations
- cast_nullable_to_non_nullable
- close_sinks
- comment_references
- constant_identifier_names
- control_flow_in_finally
- curly_braces_in_flow_control_structures
- diagnostic_describe_all_properties
- directives_ordering
- do_not_use_environment
- empty_catches
- empty_constructor_bodies
- empty_statements
- exhaustive_cases
- file_names
- flutter_style_todos
- hash_and_equals
- implementation_imports
- invariant_booleans
- iterable_contains_unrelated_type
- join_return_with_assignment
- leading_newlines_in_multiline_strings
- library_names
- library_prefixes
- lines_longer_than_80_chars
- list_remove_unrelated_type
- literal_only_boolean_expressions
- missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list
- no_default_cases
- no_duplicate_case_values
- no_logic_in_create_state
- no_runtimeType_toString
- non_constant_identifier_names
- null_check_on_nullable_type_parameter
- null_closures
- omit_local_variable_types
- one_member_abstracts
- only_throw_errors
- overridden_fields
- package_api_docs
- package_names
- package_prefixed_library_names
- parameter_assignments
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
- prefer_asserts_with_message
- 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_double_quotes
- prefer_equal_for_default_values
- prefer_expression_function_bodies
- prefer_final_fields
- prefer_final_in_for_each
- prefer_final_locals
- prefer_for_elements_to_map_fromIterable
- prefer_foreach
- prefer_function_declarations_over_variables
- prefer_generic_function_type_aliases
- prefer_if_elements_to_conditional_expressions
- prefer_if_null_operators
- prefer_initializing_formals
- prefer_inlined_adds
- prefer_int_literals
- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_is_not_operator
- prefer_iterable_whereType
- prefer_mixin
- prefer_null_aware_operators
- prefer_relative_imports
- prefer_single_quotes
- prefer_spread_collections
- prefer_typing_uninitialized_variables
- prefer_void_to_null
- provide_deprecation_message
- public_member_api_docs
- recursive_getters
- sized_box_for_whitespace
- slash_for_doc_comments
- sort_child_properties_last
- sort_constructors_first
- sort_pub_dependencies
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
- tighten_type_of_initializing_formals
- type_annotate_public_apis
- type_init_formals
- unawaited_futures
- unnecessary_await_in_return
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_final
- unnecessary_getters_setters
- unnecessary_lambdas
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_null_checks
- unnecessary_null_in_if_null_operators
- unnecessary_nullable_for_final_variable_declarations
- unnecessary_overrides
- unnecessary_parenthesis
- unnecessary_raw_strings
- unnecessary_statements
- unnecessary_string_escapes
- unnecessary_string_interpolations
- unnecessary_this
- unrelated_type_equality_checks
- unsafe_html
- use_full_hex_values_for_flutter_colors
- use_function_type_syntax_for_parameters
- use_is_even_rather_than_modulo
- use_key_in_widget_constructors
- use_late_for_private_fields_and_variables
- use_raw_strings
- use_rethrow_when_possible
- use_setters_to_change_properties
- use_string_buffers
- use_to_and_as_if_applicable
- valid_regexps
- void_checks
106 changes: 106 additions & 0 deletions packages/cloud_firestore/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# Copyright 2021 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# in the LICENSE file.

include: all_lint_rules.yaml
analyzer:
# TODO(rrousselGit): disable implicit-cast/implicit-dynamic
errors:
import_of_legacy_library_into_null_safe: ignore
# Otherwise cause the import of all_lint_rules to warn because of some rules conflicts.
# We explicitly enabled even conflicting rules and are fixing the conflict
# in this file
included_file_warning: ignore

linter:
rules:
## Disabled rules because the repository doesn't respect them (yet)

directives_ordering: false
prefer_final_fields: false
comment_references: false
sort_constructors_first: false
sort_unnamed_constructors_first: false
always_put_control_body_on_new_line: false
omit_local_variable_types: false
prefer_constructors_over_static_methods: false
prefer_final_locals: false
only_throw_errors: false
prefer_relative_imports: false
non_constant_identifier_names: false
avoid_returning_this: false
avoid_catching_errors: false
constant_identifier_names: false
prefer_function_declarations_over_variables: false
avoid_classes_with_only_static_members: false
avoid_function_literals_in_foreach_calls: false
use_key_in_widget_constructors: false
prefer_mixin: false

#############

# Personal preference. I don't find it more readable
cascade_invocations: false

# Conflicts with `prefer_single_quotes`
# Single quotes are easier to type and don't compromise on readability.
prefer_double_quotes: false

# Conflicts with `omit_local_variable_types` and other rules.
# As per Dart guidelines, we want to avoid unnecessary types to make the code
# more readable.
# See https://dart.dev/guides/language/effective-dart/design#avoid-type-annotating-initialized-local-variables
always_specify_types: false

# Incompatible with `prefer_final_locals`
# Having immutable local variables makes larger functions more predictible
# so we will use `prefer_final_locals` instead.
unnecessary_final: false

# Not quite suitable for Flutter, which may have a `build` method with a single
# return, but that return is still complex enough that a "body" is worth it.
prefer_expression_function_bodies: false

# Conflicts with the convention used by flutter, which puts `Key key`
# and `@required Widget child` last.
always_put_required_named_parameters_first: false

# `as` is not that bad (especially with the upcoming non-nullable types).
# Explicit exceptions is better than implicit exceptions.
avoid_as: false

# This project doesn't use Flutter-style todos
flutter_style_todos: false

# There are situations where we voluntarily want to catch everything,
# especially as a library.
avoid_catches_without_on_clauses: false

# Boring as it sometimes force a line of 81 characters to be split in two.
# As long as we try to respect that 80 characters limit, going slightly
# above is fine.
lines_longer_than_80_chars: false

# Conflicts with disabling `implicit-dynamic`
avoid_annotating_with_dynamic: false

# conflicts with `prefer_relative_imports`
always_use_package_imports: false

# Disabled for now until we have NNBD as it otherwise conflicts with `missing_return`
no_default_cases: false

# False positive, null checks don't need a message
prefer_asserts_with_message: false

# Cumbersome with `context.select`
avoid_types_on_closure_parameters: false

# Too many false positive (builders)
diagnostic_describe_all_properties: false

# false positives (setter-like functions)
avoid_positional_boolean_parameters: false

# Does not apply to providers
prefer_const_constructors_in_immutables: false
Loading