@blumintinc/eslint-plugin-blumint 1.13.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/README.md +169 -139
  2. package/lib/index.js +200 -9
  3. package/lib/rules/array-methods-this-context.js +1 -1
  4. package/lib/rules/avoid-utils-directory.js +0 -4
  5. package/lib/rules/class-methods-read-top-to-bottom.js +24 -5
  6. package/lib/rules/consistent-callback-naming.js +43 -4
  7. package/lib/rules/dynamic-https-errors.d.ts +1 -1
  8. package/lib/rules/dynamic-https-errors.js +134 -44
  9. package/lib/rules/enforce-assert-safe-object-key.js +11 -11
  10. package/lib/rules/enforce-boolean-naming-prefixes.js +11 -235
  11. package/lib/rules/enforce-callback-memo.js +1 -1
  12. package/lib/rules/enforce-centralized-mock-firestore.js +1 -1
  13. package/lib/rules/enforce-console-error.js +35 -7
  14. package/lib/rules/enforce-date-ttime.d.ts +1 -0
  15. package/lib/rules/enforce-date-ttime.js +156 -0
  16. package/lib/rules/enforce-dynamic-file-naming.d.ts +2 -0
  17. package/lib/rules/enforce-dynamic-file-naming.js +53 -28
  18. package/lib/rules/enforce-dynamic-firebase-imports.d.ts +2 -1
  19. package/lib/rules/enforce-dynamic-firebase-imports.js +3 -2
  20. package/lib/rules/enforce-early-destructuring.d.ts +2 -0
  21. package/lib/rules/enforce-early-destructuring.js +980 -0
  22. package/lib/rules/enforce-empty-object-check.d.ts +11 -0
  23. package/lib/rules/enforce-empty-object-check.js +502 -0
  24. package/lib/rules/enforce-exported-function-types.js +1 -1
  25. package/lib/rules/enforce-f-extension-for-entry-points.d.ts +8 -0
  26. package/lib/rules/enforce-f-extension-for-entry-points.js +283 -0
  27. package/lib/rules/enforce-fieldpath-syntax-in-docsetter.js +100 -50
  28. package/lib/rules/enforce-firestore-doc-ref-generic.js +15 -3
  29. package/lib/rules/enforce-firestore-facade.js +4 -2
  30. package/lib/rules/enforce-firestore-set-merge.js +3 -4
  31. package/lib/rules/enforce-global-constants.js +4 -4
  32. package/lib/rules/enforce-id-capitalization.js +1 -1
  33. package/lib/rules/enforce-identifiable-firestore-type.js +108 -58
  34. package/lib/rules/enforce-memoize-async.js +71 -21
  35. package/lib/rules/enforce-memoize-getters.js +39 -15
  36. package/lib/rules/enforce-microdiff.js +1 -1
  37. package/lib/rules/enforce-object-literal-as-const.js +4 -4
  38. package/lib/rules/enforce-positive-naming.js +4 -0
  39. package/lib/rules/enforce-props-argument-name.js +44 -18
  40. package/lib/rules/enforce-safe-stringify.js +1 -1
  41. package/lib/rules/enforce-serializable-params.js +3 -3
  42. package/lib/rules/enforce-singular-type-names.js +1 -1
  43. package/lib/rules/enforce-stable-hash-spread-props.d.ts +13 -0
  44. package/lib/rules/enforce-stable-hash-spread-props.js +342 -0
  45. package/lib/rules/enforce-storage-context.d.ts +9 -0
  46. package/lib/rules/enforce-storage-context.js +646 -0
  47. package/lib/rules/enforce-timestamp-now.js +23 -7
  48. package/lib/rules/enforce-transform-memoization.d.ts +4 -0
  49. package/lib/rules/enforce-transform-memoization.js +416 -0
  50. package/lib/rules/enforce-typescript-markdown-code-blocks.js +7 -3
  51. package/lib/rules/enforce-unique-cursor-headers.d.ts +16 -0
  52. package/lib/rules/enforce-unique-cursor-headers.js +365 -0
  53. package/lib/rules/enforce-verb-noun-naming.js +3818 -4644
  54. package/lib/rules/ensure-pointer-events-none.js +28 -2
  55. package/lib/rules/export-if-in-doubt.js +27 -4
  56. package/lib/rules/extract-global-constants.js +40 -13
  57. package/lib/rules/fast-deep-equal-over-microdiff.js +29 -39
  58. package/lib/rules/firestore-transaction-reads-before-writes.js +50 -4
  59. package/lib/rules/flatten-push-calls.d.ts +2 -0
  60. package/lib/rules/flatten-push-calls.js +428 -0
  61. package/lib/rules/global-const-style.js +66 -23
  62. package/lib/rules/jsdoc-above-field.d.ts +11 -0
  63. package/lib/rules/jsdoc-above-field.js +208 -0
  64. package/lib/rules/key-only-outermost-element.js +21 -3
  65. package/lib/rules/logical-top-to-bottom-grouping.d.ts +5 -0
  66. package/lib/rules/logical-top-to-bottom-grouping.js +1258 -0
  67. package/lib/rules/memo-compare-deeply-complex-props.d.ts +3 -0
  68. package/lib/rules/memo-compare-deeply-complex-props.js +801 -0
  69. package/lib/rules/memo-nested-react-components.d.ts +8 -0
  70. package/lib/rules/memo-nested-react-components.js +415 -0
  71. package/lib/rules/no-always-true-false-conditions.d.ts +2 -1
  72. package/lib/rules/no-always-true-false-conditions.js +68 -8
  73. package/lib/rules/no-array-length-in-deps.js +9 -3
  74. package/lib/rules/no-async-foreach.js +215 -12
  75. package/lib/rules/no-circular-references.d.ts +2 -1
  76. package/lib/rules/no-circular-references.js +31 -32
  77. package/lib/rules/no-class-instance-destructuring.js +55 -12
  78. package/lib/rules/no-complex-cloud-params.js +7 -3
  79. package/lib/rules/no-compositing-layer-props.js +2 -2
  80. package/lib/rules/no-conditional-literals-in-jsx.js +37 -12
  81. package/lib/rules/no-console-error.d.ts +9 -0
  82. package/lib/rules/no-console-error.js +527 -0
  83. package/lib/rules/no-curly-brackets-around-commented-properties.d.ts +2 -0
  84. package/lib/rules/no-curly-brackets-around-commented-properties.js +258 -0
  85. package/lib/rules/no-empty-dependency-use-callbacks.d.ts +11 -0
  86. package/lib/rules/no-empty-dependency-use-callbacks.js +576 -0
  87. package/lib/rules/no-entire-object-hook-deps.js +52 -7
  88. package/lib/rules/no-excessive-parent-chain.js +4 -1
  89. package/lib/rules/no-explicit-return-type.d.ts +2 -1
  90. package/lib/rules/no-explicit-return-type.js +215 -26
  91. package/lib/rules/no-filter-without-return.js +5 -1
  92. package/lib/rules/no-firestore-jest-mock.d.ts +2 -1
  93. package/lib/rules/no-firestore-jest-mock.js +126 -8
  94. package/lib/rules/no-firestore-object-arrays.js +67 -12
  95. package/lib/rules/no-handler-suffix.d.ts +12 -0
  96. package/lib/rules/no-handler-suffix.js +305 -0
  97. package/lib/rules/no-hungarian.js +1 -1
  98. package/lib/rules/no-inline-component-prop.d.ts +10 -0
  99. package/lib/rules/no-inline-component-prop.js +465 -0
  100. package/lib/rules/no-jsx-in-hooks.js +6 -1
  101. package/lib/rules/no-jsx-whitespace-literal.js +8 -2
  102. package/lib/rules/no-margin-properties.js +6 -6
  103. package/lib/rules/no-memoize-on-static.js +9 -1
  104. package/lib/rules/no-misleading-boolean-prefixes.js +7 -3
  105. package/lib/rules/no-misused-switch-case.js +22 -1
  106. package/lib/rules/no-mixed-firestore-transactions.d.ts +3 -1
  107. package/lib/rules/no-mixed-firestore-transactions.js +296 -34
  108. package/lib/rules/no-mock-firebase-admin.js +5 -2
  109. package/lib/rules/no-object-values-on-strings.js +10 -2
  110. package/lib/rules/no-overridable-method-calls-in-constructor.js +29 -17
  111. package/lib/rules/no-passthrough-getters.d.ts +2 -2
  112. package/lib/rules/no-passthrough-getters.js +120 -2
  113. package/lib/rules/no-redundant-annotation-assertion.d.ts +2 -0
  114. package/lib/rules/no-redundant-annotation-assertion.js +402 -0
  115. package/lib/rules/no-redundant-param-types.js +16 -6
  116. package/lib/rules/no-redundant-this-params.d.ts +3 -0
  117. package/lib/rules/no-redundant-this-params.js +508 -0
  118. package/lib/rules/no-redundant-usecallback-wrapper.js +16 -3
  119. package/lib/rules/no-res-error-status-in-onrequest.d.ts +4 -0
  120. package/lib/rules/no-res-error-status-in-onrequest.js +521 -0
  121. package/lib/rules/no-restricted-properties-fix.js +11 -10
  122. package/lib/rules/no-separate-loading-state.js +7 -16
  123. package/lib/rules/no-stale-state-across-await.js +1 -1
  124. package/lib/rules/no-type-assertion-returns.js +43 -49
  125. package/lib/rules/no-undefined-null-passthrough.js +61 -31
  126. package/lib/rules/no-unmemoized-memo-without-props.d.ts +8 -0
  127. package/lib/rules/no-unmemoized-memo-without-props.js +426 -0
  128. package/lib/rules/no-unnecessary-destructuring-rename.d.ts +2 -0
  129. package/lib/rules/no-unnecessary-destructuring-rename.js +344 -0
  130. package/lib/rules/no-unnecessary-destructuring.js +14 -4
  131. package/lib/rules/no-unnecessary-verb-suffix.js +2 -1
  132. package/lib/rules/no-unpinned-dependencies.js +36 -5
  133. package/lib/rules/no-unused-props.d.ts +2 -2
  134. package/lib/rules/no-unused-props.js +295 -91
  135. package/lib/rules/no-unused-usestate.js +6 -2
  136. package/lib/rules/no-useless-fragment.js +28 -2
  137. package/lib/rules/no-useless-usememo-primitives.d.ts +9 -0
  138. package/lib/rules/no-useless-usememo-primitives.js +393 -0
  139. package/lib/rules/no-usememo-for-pass-by-value.d.ts +13 -0
  140. package/lib/rules/no-usememo-for-pass-by-value.js +757 -0
  141. package/lib/rules/no-uuidv4-base62-as-key.js +18 -13
  142. package/lib/rules/omit-index-html.d.ts +2 -1
  143. package/lib/rules/omit-index-html.js +62 -7
  144. package/lib/rules/optimize-object-boolean-conditions.js +6 -4
  145. package/lib/rules/parallelize-async-operations.js +143 -59
  146. package/lib/rules/prefer-batch-operations.d.ts +1 -3
  147. package/lib/rules/prefer-batch-operations.js +32 -5
  148. package/lib/rules/prefer-block-comments-for-declarations.js +9 -4
  149. package/lib/rules/prefer-clone-deep.js +3 -3
  150. package/lib/rules/prefer-destructuring-no-class.d.ts +2 -1
  151. package/lib/rules/prefer-destructuring-no-class.js +244 -59
  152. package/lib/rules/prefer-docsetter-setall.d.ts +2 -0
  153. package/lib/rules/prefer-docsetter-setall.js +243 -0
  154. package/lib/rules/prefer-field-paths-in-transforms.js +4 -3
  155. package/lib/rules/prefer-fragment-component.js +1 -1
  156. package/lib/rules/prefer-fragment-shorthand.js +2 -1
  157. package/lib/rules/prefer-getter-over-parameterless-method.d.ts +13 -0
  158. package/lib/rules/prefer-getter-over-parameterless-method.js +648 -0
  159. package/lib/rules/prefer-global-router-state-key.js +88 -13
  160. package/lib/rules/prefer-memoized-props.d.ts +3 -0
  161. package/lib/rules/prefer-memoized-props.js +445 -0
  162. package/lib/rules/prefer-next-dynamic.js +60 -69
  163. package/lib/rules/prefer-nullish-coalescing-boolean-props.js +118 -8
  164. package/lib/rules/prefer-nullish-coalescing-override.d.ts +2 -1
  165. package/lib/rules/prefer-nullish-coalescing-override.js +11 -5
  166. package/lib/rules/prefer-params-over-parent-id.js +221 -172
  167. package/lib/rules/prefer-settings-object.js +27 -10
  168. package/lib/rules/prefer-type-alias-over-typeof-constant.js +9 -0
  169. package/lib/rules/prefer-type-over-interface.js +7 -2
  170. package/lib/rules/prefer-url-tostring-over-tojson.js +6 -3
  171. package/lib/rules/prefer-use-deep-compare-memo.js +8 -5
  172. package/lib/rules/prefer-usecallback-over-usememo-for-functions.js +1 -1
  173. package/lib/rules/prefer-usememo-over-useeffect-usestate.js +1 -1
  174. package/lib/rules/prefer-utility-function-over-private-static.js +34 -2
  175. package/lib/rules/prevent-children-clobber.d.ts +2 -0
  176. package/lib/rules/prevent-children-clobber.js +540 -0
  177. package/lib/rules/react-memoize-literals.d.ts +4 -0
  178. package/lib/rules/react-memoize-literals.js +614 -0
  179. package/lib/rules/react-usememo-should-be-component.js +2 -2
  180. package/lib/rules/require-hooks-default-params.js +17 -16
  181. package/lib/rules/require-https-error-cause.d.ts +4 -0
  182. package/lib/rules/require-https-error-cause.js +155 -0
  183. package/lib/rules/require-https-error.js +43 -21
  184. package/lib/rules/require-image-optimized.js +1 -1
  185. package/lib/rules/require-memo.js +18 -10
  186. package/lib/rules/require-memoize-jsx-returners.d.ts +3 -0
  187. package/lib/rules/require-memoize-jsx-returners.js +485 -0
  188. package/lib/rules/require-usememo-object-literals.js +2 -3
  189. package/lib/rules/test-file-location-enforcement.js +1 -1
  190. package/lib/rules/use-latest-callback.js +6 -5
  191. package/lib/rules/vertically-group-related-functions.d.ts +16 -0
  192. package/lib/rules/vertically-group-related-functions.js +480 -0
  193. package/lib/utils/ASTHelpers.d.ts +47 -2
  194. package/lib/utils/ASTHelpers.js +370 -112
  195. package/lib/utils/getMethodName.d.ts +27 -0
  196. package/lib/utils/getMethodName.js +35 -0
  197. package/lib/utils/tsTypeClassifier.d.ts +30 -0
  198. package/lib/utils/tsTypeClassifier.js +149 -0
  199. package/package.json +3 -1
package/lib/index.js CHANGED
@@ -3,16 +3,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const enforce_date_ttime_1 = require("./rules/enforce-date-ttime");
7
+ const enforce_f_extension_for_entry_points_1 = require("./rules/enforce-f-extension-for-entry-points");
6
8
  const array_methods_this_context_1 = require("./rules/array-methods-this-context");
7
9
  const class_methods_read_top_to_bottom_1 = require("./rules/class-methods-read-top-to-bottom");
8
10
  const consistent_callback_naming_1 = __importDefault(require("./rules/consistent-callback-naming"));
11
+ const no_handler_suffix_1 = require("./rules/no-handler-suffix");
9
12
  const parallelize_async_operations_1 = require("./rules/parallelize-async-operations");
10
13
  const dynamic_https_errors_1 = require("./rules/dynamic-https-errors");
14
+ const enforce_empty_object_check_1 = require("./rules/enforce-empty-object-check");
11
15
  const enforce_identifiable_firestore_type_1 = require("./rules/enforce-identifiable-firestore-type");
12
16
  const enforce_callback_memo_1 = __importDefault(require("./rules/enforce-callback-memo"));
17
+ const react_memoize_literals_1 = require("./rules/react-memoize-literals");
13
18
  const enforce_callable_types_1 = require("./rules/enforce-callable-types");
14
19
  const enforce_console_error_1 = require("./rules/enforce-console-error");
15
- const enforce_dynamic_firebase_imports_1 = require("./rules/enforce-dynamic-firebase-imports");
20
+ const enforce_dynamic_firebase_imports_1 = __importDefault(require("./rules/enforce-dynamic-firebase-imports"));
16
21
  const enforce_mui_rounded_icons_1 = require("./rules/enforce-mui-rounded-icons");
17
22
  const enforce_querykey_ts_1 = require("./rules/enforce-querykey-ts");
18
23
  const enforce_react_type_naming_1 = require("./rules/enforce-react-type-naming");
@@ -24,6 +29,7 @@ const generic_starts_with_t_1 = require("./rules/generic-starts-with-t");
24
29
  const global_const_style_1 = __importDefault(require("./rules/global-const-style"));
25
30
  const no_async_array_filter_1 = require("./rules/no-async-array-filter");
26
31
  const no_async_foreach_1 = require("./rules/no-async-foreach");
32
+ const no_console_error_1 = require("./rules/no-console-error");
27
33
  const no_conditional_literals_in_jsx_1 = require("./rules/no-conditional-literals-in-jsx");
28
34
  const no_filter_without_return_1 = require("./rules/no-filter-without-return");
29
35
  const no_hungarian_1 = require("./rules/no-hungarian");
@@ -32,16 +38,19 @@ const no_unpinned_dependencies_1 = require("./rules/no-unpinned-dependencies");
32
38
  const no_unused_props_1 = require("./rules/no-unused-props");
33
39
  const no_useless_fragment_1 = require("./rules/no-useless-fragment");
34
40
  const prefer_fragment_shorthand_1 = require("./rules/prefer-fragment-shorthand");
41
+ const prefer_getter_over_parameterless_method_1 = require("./rules/prefer-getter-over-parameterless-method");
35
42
  const prefer_type_over_interface_1 = require("./rules/prefer-type-over-interface");
36
43
  const prefer_type_alias_over_typeof_constant_1 = require("./rules/prefer-type-alias-over-typeof-constant");
37
44
  const require_memo_1 = require("./rules/require-memo");
45
+ const require_memoize_jsx_returners_1 = require("./rules/require-memoize-jsx-returners");
38
46
  const no_jsx_whitespace_literal_1 = require("./rules/no-jsx-whitespace-literal");
39
47
  const require_dynamic_firebase_imports_1 = __importDefault(require("./rules/require-dynamic-firebase-imports"));
40
48
  const require_https_error_1 = __importDefault(require("./rules/require-https-error"));
49
+ const require_https_error_cause_1 = require("./rules/require-https-error-cause");
41
50
  const use_custom_router_1 = require("./rules/use-custom-router");
42
51
  const require_image_optimized_1 = __importDefault(require("./rules/require-image-optimized"));
43
- const require_usememo_object_literals_1 = require("./rules/require-usememo-object-literals");
44
52
  const enforce_safe_stringify_1 = require("./rules/enforce-safe-stringify");
53
+ const enforce_storage_context_1 = require("./rules/enforce-storage-context");
45
54
  const avoid_utils_directory_1 = require("./rules/avoid-utils-directory");
46
55
  const no_entire_object_hook_deps_1 = require("./rules/no-entire-object-hook-deps");
47
56
  const enforce_firestore_path_utils_1 = require("./rules/enforce-firestore-path-utils");
@@ -51,6 +60,7 @@ const semantic_function_prefixes_1 = require("./rules/semantic-function-prefixes
51
60
  const enforce_mock_firestore_1 = require("./rules/enforce-mock-firestore");
52
61
  const prefer_settings_object_1 = require("./rules/prefer-settings-object");
53
62
  const enforce_firestore_set_merge_1 = require("./rules/enforce-firestore-set-merge");
63
+ const enforce_early_destructuring_1 = require("./rules/enforce-early-destructuring");
54
64
  const enforce_verb_noun_naming_1 = require("./rules/enforce-verb-noun-naming");
55
65
  const no_explicit_return_type_1 = require("./rules/no-explicit-return-type");
56
66
  const use_custom_memo_1 = require("./rules/use-custom-memo");
@@ -60,15 +70,19 @@ const enforce_serializable_params_1 = __importDefault(require("./rules/enforce-s
60
70
  const enforce_realtimedb_path_utils_1 = require("./rules/enforce-realtimedb-path-utils");
61
71
  const enforce_memoize_async_1 = require("./rules/enforce-memoize-async");
62
72
  const enforce_exported_function_types_1 = require("./rules/enforce-exported-function-types");
73
+ const no_redundant_annotation_assertion_1 = require("./rules/no-redundant-annotation-assertion");
63
74
  const enforce_memoize_getters_1 = require("./rules/enforce-memoize-getters");
64
75
  const no_redundant_param_types_1 = require("./rules/no-redundant-param-types");
76
+ const no_redundant_this_params_1 = require("./rules/no-redundant-this-params");
65
77
  const no_class_instance_destructuring_1 = require("./rules/no-class-instance-destructuring");
66
78
  const no_firestore_object_arrays_1 = require("./rules/no-firestore-object-arrays");
67
79
  const no_memoize_on_static_1 = require("./rules/no-memoize-on-static");
68
80
  const no_unsafe_firestore_spread_1 = require("./rules/no-unsafe-firestore-spread");
69
81
  const no_jsx_in_hooks_1 = require("./rules/no-jsx-in-hooks");
82
+ const no_unmemoized_memo_without_props_1 = require("./rules/no-unmemoized-memo-without-props");
70
83
  const enforce_assert_throws_1 = require("./rules/enforce-assert-throws");
71
84
  const prefer_batch_operations_1 = require("./rules/prefer-batch-operations");
85
+ const prefer_docsetter_setall_1 = require("./rules/prefer-docsetter-setall");
72
86
  const no_complex_cloud_params_1 = require("./rules/no-complex-cloud-params");
73
87
  const no_mixed_firestore_transactions_1 = require("./rules/no-mixed-firestore-transactions");
74
88
  const enforce_firestore_facade_1 = require("./rules/enforce-firestore-facade");
@@ -85,12 +99,15 @@ const react_usememo_should_be_component_1 = require("./rules/react-usememo-shoul
85
99
  const no_unnecessary_verb_suffix_1 = require("./rules/no-unnecessary-verb-suffix");
86
100
  const enforce_assert_safe_object_key_1 = require("./rules/enforce-assert-safe-object-key");
87
101
  const enforce_object_literal_as_const_1 = require("./rules/enforce-object-literal-as-const");
102
+ const enforce_stable_hash_spread_props_1 = require("./rules/enforce-stable-hash-spread-props");
88
103
  const enforce_positive_naming_1 = require("./rules/enforce-positive-naming");
89
104
  const no_type_assertion_returns_1 = require("./rules/no-type-assertion-returns");
90
105
  const prefer_utility_function_over_private_static_1 = require("./rules/prefer-utility-function-over-private-static");
91
106
  const enforce_microdiff_1 = require("./rules/enforce-microdiff");
92
107
  const fast_deep_equal_over_microdiff_1 = require("./rules/fast-deep-equal-over-microdiff");
108
+ const flatten_push_calls_1 = require("./rules/flatten-push-calls");
93
109
  const enforce_timestamp_now_1 = require("./rules/enforce-timestamp-now");
110
+ const enforce_unique_cursor_headers_1 = require("./rules/enforce-unique-cursor-headers");
94
111
  const no_always_true_false_conditions_1 = require("./rules/no-always-true-false-conditions");
95
112
  const enforce_props_argument_name_1 = require("./rules/enforce-props-argument-name");
96
113
  const enforce_props_naming_consistency_1 = require("./rules/enforce-props-naming-consistency");
@@ -101,14 +118,17 @@ const ensure_pointer_events_none_1 = require("./rules/ensure-pointer-events-none
101
118
  const no_object_values_on_strings_1 = require("./rules/no-object-values-on-strings");
102
119
  const key_only_outermost_element_1 = require("./rules/key-only-outermost-element");
103
120
  const no_unnecessary_destructuring_1 = require("./rules/no-unnecessary-destructuring");
121
+ const no_unnecessary_destructuring_rename_1 = require("./rules/no-unnecessary-destructuring-rename");
104
122
  const enforce_singular_type_names_1 = require("./rules/enforce-singular-type-names");
105
123
  const enforce_css_media_queries_1 = require("./rules/enforce-css-media-queries");
106
124
  const omit_index_html_1 = require("./rules/omit-index-html");
107
125
  const enforce_id_capitalization_1 = require("./rules/enforce-id-capitalization");
108
126
  const no_unused_usestate_1 = require("./rules/no-unused-usestate");
109
127
  const no_uuidv4_base62_as_key_1 = require("./rules/no-uuidv4-base62-as-key");
128
+ const logical_top_to_bottom_grouping_1 = require("./rules/logical-top-to-bottom-grouping");
110
129
  const enforce_dynamic_file_naming_1 = __importDefault(require("./rules/enforce-dynamic-file-naming"));
111
130
  const prefer_usecallback_over_usememo_for_functions_1 = __importDefault(require("./rules/prefer-usecallback-over-usememo-for-functions"));
131
+ const no_usememo_for_pass_by_value_1 = require("./rules/no-usememo-for-pass-by-value");
112
132
  const no_margin_properties_1 = require("./rules/no-margin-properties");
113
133
  const enforce_boolean_naming_prefixes_1 = require("./rules/enforce-boolean-naming-prefixes");
114
134
  const enforce_fieldpath_syntax_in_docsetter_1 = require("./rules/enforce-fieldpath-syntax-in-docsetter");
@@ -116,13 +136,13 @@ const prefer_block_comments_for_declarations_1 = require("./rules/prefer-block-c
116
136
  const no_undefined_null_passthrough_1 = require("./rules/no-undefined-null-passthrough");
117
137
  const firestore_transaction_reads_before_writes_1 = require("./rules/firestore-transaction-reads-before-writes");
118
138
  const enforce_typescript_markdown_code_blocks_1 = require("./rules/enforce-typescript-markdown-code-blocks");
119
- const prefer_nullish_coalescing_override_1 = require("./rules/prefer-nullish-coalescing-override");
120
139
  const prefer_nullish_coalescing_boolean_props_1 = require("./rules/prefer-nullish-coalescing-boolean-props");
121
140
  const no_restricted_properties_fix_1 = require("./rules/no-restricted-properties-fix");
122
141
  const no_excessive_parent_chain_1 = require("./rules/no-excessive-parent-chain");
123
142
  const prefer_document_flattening_1 = require("./rules/prefer-document-flattening");
124
143
  const no_overridable_method_calls_in_constructor_1 = require("./rules/no-overridable-method-calls-in-constructor");
125
144
  const use_latest_callback_1 = require("./rules/use-latest-callback");
145
+ const no_empty_dependency_use_callbacks_1 = require("./rules/no-empty-dependency-use-callbacks");
126
146
  const no_stale_state_across_await_1 = require("./rules/no-stale-state-across-await");
127
147
  const no_separate_loading_state_1 = require("./rules/no-separate-loading-state");
128
148
  const optimize_object_boolean_conditions_1 = require("./rules/optimize-object-boolean-conditions");
@@ -134,15 +154,47 @@ const prefer_next_dynamic_1 = require("./rules/prefer-next-dynamic");
134
154
  const no_redundant_usecallback_wrapper_1 = __importDefault(require("./rules/no-redundant-usecallback-wrapper"));
135
155
  const no_array_length_in_deps_1 = require("./rules/no-array-length-in-deps");
136
156
  const prefer_use_deep_compare_memo_1 = require("./rules/prefer-use-deep-compare-memo");
157
+ const memo_compare_deeply_complex_props_1 = require("./rules/memo-compare-deeply-complex-props");
137
158
  const no_circular_references_1 = require("./rules/no-circular-references");
138
159
  const no_passthrough_getters_1 = require("./rules/no-passthrough-getters");
160
+ const no_curly_brackets_around_commented_properties_1 = require("./rules/no-curly-brackets-around-commented-properties");
161
+ const no_res_error_status_in_onrequest_1 = require("./rules/no-res-error-status-in-onrequest");
139
162
  const no_try_catch_already_exists_in_transaction_1 = require("./rules/no-try-catch-already-exists-in-transaction");
163
+ const memo_nested_react_components_1 = require("./rules/memo-nested-react-components");
164
+ const no_useless_usememo_primitives_1 = require("./rules/no-useless-usememo-primitives");
165
+ const jsdoc_above_field_1 = require("./rules/jsdoc-above-field");
166
+ const enforce_transform_memoization_1 = require("./rules/enforce-transform-memoization");
167
+ const vertically_group_related_functions_1 = require("./rules/vertically-group-related-functions");
140
168
  const no_static_constants_in_dynamic_files_1 = __importDefault(require("./rules/no-static-constants-in-dynamic-files"));
141
169
  const test_file_location_enforcement_1 = require("./rules/test-file-location-enforcement");
170
+ const prevent_children_clobber_1 = require("./rules/prevent-children-clobber");
171
+ const NO_FRONTEND_IMPORTS_FROM_FUNCTIONS_MESSAGE = 'Backend Cloud Functions (.f.ts under functions/) must not import frontend modules from the repo root src/**. Frontend code can depend on browser-only APIs and bundling it into Cloud Functions breaks server execution; move shared logic into functions/src or a shared package.';
172
+ function noFrontendImportsFromFunctionsPatterns(pattern) {
173
+ return [
174
+ {
175
+ /**
176
+ * no-restricted-imports matches import strings literally (it does not
177
+ * resolve them to the filesystem). This monorepo layout contains both a
178
+ * frontend `src/` and a backend `functions/src/`, so broad `../src/**`
179
+ * patterns applied indiscriminately can also block legitimate
180
+ * backend-to-backend imports within `functions/src/**`.
181
+ *
182
+ * Each override targets one `functions/**` + `/*.f.ts` nesting depth and
183
+ * restricts only the exact traversal depth that reaches the repo root
184
+ * `src/`, so relative imports that stay inside `functions/src/**` do not
185
+ * match.
186
+ * Projects using path aliases should add matching restrictions in their
187
+ * own configs.
188
+ */
189
+ group: [pattern],
190
+ message: NO_FRONTEND_IMPORTS_FROM_FUNCTIONS_MESSAGE,
191
+ },
192
+ ];
193
+ }
142
194
  module.exports = {
143
195
  meta: {
144
196
  name: '@blumintinc/eslint-plugin-blumint',
145
- version: '1.13.0',
197
+ version: '1.15.0',
146
198
  },
147
199
  parseOptions: {
148
200
  ecmaVersion: 2020,
@@ -151,12 +203,13 @@ module.exports = {
151
203
  recommended: {
152
204
  plugins: ['@blumintinc/blumint'],
153
205
  rules: {
206
+ '@blumintinc/blumint/enforce-f-extension-for-entry-points': 'error',
154
207
  '@blumintinc/blumint/firestore-transaction-reads-before-writes': 'error',
155
208
  // Override the @typescript-eslint/prefer-nullish-coalescing rule
156
209
  '@typescript-eslint/prefer-nullish-coalescing': 'off',
157
- '@blumintinc/blumint/prefer-nullish-coalescing-override': 'error',
158
210
  '@blumintinc/blumint/prefer-block-comments-for-declarations': 'error',
159
211
  '@blumintinc/blumint/key-only-outermost-element': 'error',
212
+ '@blumintinc/blumint/logical-top-to-bottom-grouping': 'error',
160
213
  '@blumintinc/blumint/parallelize-async-operations': 'error',
161
214
  '@blumintinc/blumint/avoid-utils-directory': 'error',
162
215
  '@blumintinc/blumint/enforce-firestore-path-utils': 'error',
@@ -166,9 +219,11 @@ module.exports = {
166
219
  '@blumintinc/blumint/class-methods-read-top-to-bottom': 'error',
167
220
  '@blumintinc/blumint/consistent-callback-naming': 'error',
168
221
  '@blumintinc/blumint/dynamic-https-errors': 'error',
222
+ '@blumintinc/blumint/enforce-empty-object-check': 'error',
169
223
  '@blumintinc/blumint/enforce-mui-rounded-icons': 'error',
170
224
  '@blumintinc/blumint/enforce-identifiable-firestore-type': 'error',
171
225
  '@blumintinc/blumint/enforce-callback-memo': 'error',
226
+ '@blumintinc/blumint/react-memoize-literals': 'error',
172
227
  '@blumintinc/blumint/enforce-callable-types': 'error',
173
228
  '@blumintinc/blumint/enforce-console-error': 'error',
174
229
  '@blumintinc/blumint/enforce-dynamic-firebase-imports': 'error',
@@ -180,25 +235,36 @@ module.exports = {
180
235
  '@blumintinc/blumint/global-const-style': 'error',
181
236
  '@blumintinc/blumint/no-async-array-filter': 'error',
182
237
  '@blumintinc/blumint/no-async-foreach': 'error',
238
+ '@blumintinc/blumint/no-console-error': [
239
+ 'warn',
240
+ { allowWithUseAlertDialog: true },
241
+ ],
183
242
  '@blumintinc/blumint/no-conditional-literals-in-jsx': 'error',
184
243
  '@blumintinc/blumint/no-filter-without-return': 'error',
185
244
  '@blumintinc/blumint/no-hungarian': 'error',
245
+ '@blumintinc/blumint/no-handler-suffix': 'error',
186
246
  '@blumintinc/blumint/no-misused-switch-case': 'error',
187
247
  '@blumintinc/blumint/no-unpinned-dependencies': 'error',
188
248
  '@blumintinc/blumint/no-unused-props': 'error',
189
249
  '@blumintinc/blumint/no-uuidv4-base62-as-key': 'error',
190
250
  '@blumintinc/blumint/no-useless-fragment': 'error',
251
+ '@blumintinc/blumint/no-useless-usememo-primitives': 'error',
191
252
  '@blumintinc/blumint/prefer-fragment-shorthand': 'error',
253
+ '@blumintinc/blumint/prefer-getter-over-parameterless-method': 'error',
192
254
  '@blumintinc/blumint/prefer-type-over-interface': 'error',
193
255
  '@blumintinc/blumint/prefer-type-alias-over-typeof-constant': 'error',
194
256
  '@blumintinc/blumint/require-memo': 'error',
257
+ '@blumintinc/blumint/require-memoize-jsx-returners': 'error',
258
+ '@blumintinc/blumint/no-unmemoized-memo-without-props': 'error',
195
259
  '@blumintinc/blumint/require-dynamic-firebase-imports': 'error',
196
260
  '@blumintinc/blumint/require-https-error': 'error',
261
+ '@blumintinc/blumint/require-https-error-cause': 'error',
197
262
  '@blumintinc/blumint/use-custom-router': 'error',
198
263
  '@blumintinc/blumint/require-image-optimized': 'error',
199
- '@blumintinc/blumint/require-usememo-object-literals': 'error',
200
264
  '@blumintinc/blumint/memoize-root-level-hocs': 'error',
201
265
  '@blumintinc/blumint/enforce-safe-stringify': 'error',
266
+ '@blumintinc/blumint/enforce-early-destructuring': 'error',
267
+ '@blumintinc/blumint/enforce-storage-context': 'error',
202
268
  '@blumintinc/blumint/no-entire-object-hook-deps': 'error',
203
269
  '@blumintinc/blumint/no-compositing-layer-props': 'error',
204
270
  '@blumintinc/blumint/enforce-firestore-doc-ref-generic': 'error',
@@ -214,6 +280,7 @@ module.exports = {
214
280
  '@blumintinc/blumint/enforce-realtimedb-path-utils': 'error',
215
281
  '@blumintinc/blumint/enforce-memoize-async': 'error',
216
282
  '@blumintinc/blumint/enforce-exported-function-types': 'error',
283
+ '@blumintinc/blumint/no-redundant-annotation-assertion': 'error',
217
284
  '@blumintinc/blumint/no-redundant-param-types': 'error',
218
285
  '@blumintinc/blumint/enforce-memoize-getters': 'error',
219
286
  '@blumintinc/blumint/no-class-instance-destructuring': 'error',
@@ -223,6 +290,7 @@ module.exports = {
223
290
  '@blumintinc/blumint/no-jsx-in-hooks': 'error',
224
291
  '@blumintinc/blumint/enforce-assert-throws': 'error',
225
292
  '@blumintinc/blumint/prefer-batch-operations': 'error',
293
+ '@blumintinc/blumint/prefer-docsetter-setall': 'error',
226
294
  '@blumintinc/blumint/no-complex-cloud-params': 'error',
227
295
  '@blumintinc/blumint/no-mixed-firestore-transactions': 'error',
228
296
  '@blumintinc/blumint/enforce-firestore-facade': 'error',
@@ -234,6 +302,7 @@ module.exports = {
234
302
  '@blumintinc/blumint/require-hooks-default-params': 'error',
235
303
  '@blumintinc/blumint/prefer-destructuring-no-class': 'error',
236
304
  '@blumintinc/blumint/enforce-render-hits-memoization': 'error',
305
+ '@blumintinc/blumint/enforce-transform-memoization': 'error',
237
306
  '@blumintinc/blumint/prefer-fragment-component': 'off',
238
307
  '@blumintinc/blumint/react-usememo-should-be-component': 'error',
239
308
  '@blumintinc/blumint/no-unnecessary-verb-suffix': 'error',
@@ -244,7 +313,9 @@ module.exports = {
244
313
  '@blumintinc/blumint/prefer-utility-function-over-private-static': 'error',
245
314
  '@blumintinc/blumint/enforce-microdiff': 'error',
246
315
  '@blumintinc/blumint/fast-deep-equal-over-microdiff': 'error',
316
+ '@blumintinc/blumint/flatten-push-calls': 'error',
247
317
  '@blumintinc/blumint/enforce-timestamp-now': 'error',
318
+ '@blumintinc/blumint/enforce-unique-cursor-headers': 'error',
248
319
  '@blumintinc/blumint/enforce-typescript-markdown-code-blocks': 'error',
249
320
  '@blumintinc/blumint/no-always-true-false-conditions': 'error',
250
321
  '@blumintinc/blumint/enforce-props-argument-name': 'error',
@@ -255,12 +326,15 @@ module.exports = {
255
326
  '@blumintinc/blumint/ensure-pointer-events-none': 'error',
256
327
  '@blumintinc/blumint/no-object-values-on-strings': 'error',
257
328
  '@blumintinc/blumint/no-unnecessary-destructuring': 'error',
329
+ '@blumintinc/blumint/no-unnecessary-destructuring-rename': 'error',
258
330
  '@blumintinc/blumint/enforce-singular-type-names': 'error',
331
+ '@blumintinc/blumint/prevent-children-clobber': 'error',
259
332
  '@blumintinc/blumint/enforce-css-media-queries': 'error',
260
333
  '@blumintinc/blumint/omit-index-html': 'error',
261
334
  '@blumintinc/blumint/enforce-id-capitalization': 'error',
262
335
  '@blumintinc/blumint/no-unused-usestate': 'error',
263
336
  '@blumintinc/blumint/prefer-usecallback-over-usememo-for-functions': 'error',
337
+ '@blumintinc/blumint/no-usememo-for-pass-by-value': 'error',
264
338
  '@blumintinc/blumint/no-margin-properties': 'error',
265
339
  '@blumintinc/blumint/enforce-boolean-naming-prefixes': 'error',
266
340
  '@blumintinc/blumint/enforce-fieldpath-syntax-in-docsetter': 'error',
@@ -268,6 +342,7 @@ module.exports = {
268
342
  '@blumintinc/blumint/prefer-nullish-coalescing-boolean-props': 'error',
269
343
  '@blumintinc/blumint/no-overridable-method-calls-in-constructor': 'error',
270
344
  '@blumintinc/blumint/use-latest-callback': 'error',
345
+ '@blumintinc/blumint/no-empty-dependency-use-callbacks': 'error',
271
346
  '@blumintinc/blumint/enforce-querykey-ts': 'error',
272
347
  '@blumintinc/blumint/no-stale-state-across-await': 'error',
273
348
  '@blumintinc/blumint/no-separate-loading-state': 'error',
@@ -277,37 +352,128 @@ module.exports = {
277
352
  '@blumintinc/blumint/no-misleading-boolean-prefixes': 'error',
278
353
  '@blumintinc/blumint/prefer-url-tostring-over-tojson': 'error',
279
354
  '@blumintinc/blumint/prefer-next-dynamic': 'error',
355
+ '@blumintinc/blumint/jsdoc-above-field': 'error',
280
356
  '@blumintinc/blumint/no-redundant-usecallback-wrapper': 'error',
357
+ '@blumintinc/blumint/no-redundant-this-params': 'error',
358
+ '@blumintinc/blumint/no-res-error-status-in-onrequest': 'error',
281
359
  '@blumintinc/blumint/no-array-length-in-deps': 'error',
360
+ '@blumintinc/blumint/enforce-stable-hash-spread-props': 'error',
282
361
  '@blumintinc/blumint/prefer-use-deep-compare-memo': 'error',
362
+ '@blumintinc/blumint/memo-nested-react-components': 'error',
363
+ '@blumintinc/blumint/memo-compare-deeply-complex-props': 'error',
283
364
  '@blumintinc/blumint/no-circular-references': 'error',
284
365
  '@blumintinc/blumint/no-try-catch-already-exists-in-transaction': 'error',
366
+ '@blumintinc/blumint/no-curly-brackets-around-commented-properties': 'error',
285
367
  '@blumintinc/blumint/no-passthrough-getters': 'error',
368
+ '@blumintinc/blumint/vertically-group-related-functions': 'error',
286
369
  '@blumintinc/blumint/no-static-constants-in-dynamic-files': 'error',
287
370
  '@blumintinc/blumint/test-file-location-enforcement': 'error',
288
371
  },
372
+ /**
373
+ * Depth-specific overrides block only import strings that traverse to the
374
+ * repo root `src/`. The list covers nesting depths 1–6; deeper nesting
375
+ * requires an additional override.
376
+ */
377
+ overrides: [
378
+ {
379
+ files: ['src/**/*.{ts,tsx}'],
380
+ rules: {
381
+ '@blumintinc/blumint/enforce-date-ttime': 'error',
382
+ },
383
+ },
384
+ {
385
+ files: ['functions/*.f.ts'],
386
+ rules: {
387
+ 'no-restricted-imports': [
388
+ 'error',
389
+ {
390
+ patterns: noFrontendImportsFromFunctionsPatterns('../src/**'),
391
+ },
392
+ ],
393
+ },
394
+ },
395
+ {
396
+ files: ['functions/*/*.f.ts'],
397
+ rules: {
398
+ 'no-restricted-imports': [
399
+ 'error',
400
+ {
401
+ patterns: noFrontendImportsFromFunctionsPatterns('../../src/**'),
402
+ },
403
+ ],
404
+ },
405
+ },
406
+ {
407
+ files: ['functions/*/*/*.f.ts'],
408
+ rules: {
409
+ 'no-restricted-imports': [
410
+ 'error',
411
+ {
412
+ patterns: noFrontendImportsFromFunctionsPatterns('../../../src/**'),
413
+ },
414
+ ],
415
+ },
416
+ },
417
+ {
418
+ files: ['functions/*/*/*/*.f.ts'],
419
+ rules: {
420
+ 'no-restricted-imports': [
421
+ 'error',
422
+ {
423
+ patterns: noFrontendImportsFromFunctionsPatterns('../../../../src/**'),
424
+ },
425
+ ],
426
+ },
427
+ },
428
+ {
429
+ files: ['functions/*/*/*/*/*.f.ts'],
430
+ rules: {
431
+ 'no-restricted-imports': [
432
+ 'error',
433
+ {
434
+ patterns: noFrontendImportsFromFunctionsPatterns('../../../../../src/**'),
435
+ },
436
+ ],
437
+ },
438
+ },
439
+ {
440
+ files: ['functions/*/*/*/*/*/*.f.ts'],
441
+ rules: {
442
+ 'no-restricted-imports': [
443
+ 'error',
444
+ {
445
+ patterns: noFrontendImportsFromFunctionsPatterns('../../../../../../src/**'),
446
+ },
447
+ ],
448
+ },
449
+ },
450
+ ],
289
451
  },
290
452
  },
291
453
  rules: {
454
+ 'enforce-date-ttime': enforce_date_ttime_1.enforceDateTTime,
455
+ 'enforce-f-extension-for-entry-points': enforce_f_extension_for_entry_points_1.enforceFExtensionForEntryPoints,
292
456
  'firestore-transaction-reads-before-writes': firestore_transaction_reads_before_writes_1.firestoreTransactionReadsBeforeWrites,
293
- 'prefer-nullish-coalescing-override': prefer_nullish_coalescing_override_1.preferNullishCoalescingOverride,
294
457
  'no-restricted-properties-fix': no_restricted_properties_fix_1.noRestrictedPropertiesFix,
295
458
  'no-excessive-parent-chain': no_excessive_parent_chain_1.noExcessiveParentChain,
296
459
  'prefer-document-flattening': prefer_document_flattening_1.preferDocumentFlattening,
297
460
  'prefer-block-comments-for-declarations': prefer_block_comments_for_declarations_1.preferBlockCommentsForDeclarations,
298
461
  'key-only-outermost-element': key_only_outermost_element_1.keyOnlyOutermostElement,
462
+ 'logical-top-to-bottom-grouping': logical_top_to_bottom_grouping_1.logicalTopToBottomGrouping,
299
463
  'array-methods-this-context': array_methods_this_context_1.arrayMethodsThisContext,
300
464
  'class-methods-read-top-to-bottom': class_methods_read_top_to_bottom_1.classMethodsReadTopToBottom,
301
465
  'consistent-callback-naming': consistent_callback_naming_1.default,
302
466
  'parallelize-async-operations': parallelize_async_operations_1.parallelizeAsyncOperations,
303
467
  'dynamic-https-errors': dynamic_https_errors_1.dynamicHttpsErrors,
468
+ 'enforce-empty-object-check': enforce_empty_object_check_1.enforceEmptyObjectCheck,
304
469
  'enforce-identifiable-firestore-type': enforce_identifiable_firestore_type_1.enforceIdentifiableFirestoreType,
305
470
  'enforce-callback-memo': enforce_callback_memo_1.default,
471
+ 'react-memoize-literals': react_memoize_literals_1.reactMemoizeLiterals,
306
472
  'enforce-react-type-naming': enforce_react_type_naming_1.enforceReactTypeNaming,
307
473
  'enforce-firestore-rules-get-access': enforce_firestore_rules_get_access_1.enforceFirestoreRulesGetAccess,
308
474
  'enforce-callable-types': enforce_callable_types_1.enforceCallableTypes,
309
475
  'enforce-console-error': enforce_console_error_1.enforceConsoleError,
310
- 'enforce-dynamic-firebase-imports': enforce_dynamic_firebase_imports_1.enforceFirebaseImports,
476
+ 'enforce-dynamic-firebase-imports': enforce_dynamic_firebase_imports_1.default,
311
477
  'enforce-mui-rounded-icons': enforce_mui_rounded_icons_1.enforceMuiRoundedIcons,
312
478
  'export-if-in-doubt': export_if_in_doubt_1.exportIfInDoubt,
313
479
  'extract-global-constants': extract_global_constants_1.extractGlobalConstants,
@@ -319,6 +485,7 @@ module.exports = {
319
485
  'no-conditional-literals-in-jsx': no_conditional_literals_in_jsx_1.noConditionalLiteralsInJsx,
320
486
  'no-filter-without-return': no_filter_without_return_1.noFilterWithoutReturn,
321
487
  'no-hungarian': no_hungarian_1.noHungarian,
488
+ 'no-handler-suffix': no_handler_suffix_1.noHandlerSuffix,
322
489
  'no-misused-switch-case': no_misused_switch_case_1.noMisusedSwitchCase,
323
490
  'no-unpinned-dependencies': no_unpinned_dependencies_1.noUnpinnedDependencies,
324
491
  'no-unused-props': no_unused_props_1.noUnusedProps,
@@ -326,17 +493,22 @@ module.exports = {
326
493
  'no-uuidv4-base62-as-key': no_uuidv4_base62_as_key_1.noUuidv4Base62AsKey,
327
494
  'enforce-dynamic-file-naming': enforce_dynamic_file_naming_1.default,
328
495
  'prefer-fragment-shorthand': prefer_fragment_shorthand_1.preferFragmentShorthand,
496
+ 'prefer-getter-over-parameterless-method': prefer_getter_over_parameterless_method_1.preferGetterOverParameterlessMethod,
329
497
  'prefer-type-over-interface': prefer_type_over_interface_1.preferTypeOverInterface,
330
498
  'prefer-type-alias-over-typeof-constant': prefer_type_alias_over_typeof_constant_1.preferTypeAliasOverTypeofConstant,
331
499
  'require-memo': require_memo_1.requireMemo,
500
+ 'require-memoize-jsx-returners': require_memoize_jsx_returners_1.requireMemoizeJsxReturners,
501
+ 'no-unmemoized-memo-without-props': no_unmemoized_memo_without_props_1.noUnmemoizedMemoWithoutProps,
332
502
  'no-jsx-whitespace-literal': no_jsx_whitespace_literal_1.noJsxWhitespaceLiteral,
333
503
  'require-dynamic-firebase-imports': require_dynamic_firebase_imports_1.default,
334
504
  'require-https-error': require_https_error_1.default,
505
+ 'require-https-error-cause': require_https_error_cause_1.requireHttpsErrorCause,
335
506
  'use-custom-router': use_custom_router_1.useCustomRouter,
336
507
  'require-image-optimized': require_image_optimized_1.default,
337
- 'require-usememo-object-literals': require_usememo_object_literals_1.requireUseMemoObjectLiterals,
338
508
  'memoize-root-level-hocs': memoize_root_level_hocs_1.memoizeRootLevelHocs,
339
509
  'enforce-safe-stringify': enforce_safe_stringify_1.enforceStableStringify,
510
+ 'enforce-early-destructuring': enforce_early_destructuring_1.enforceEarlyDestructuring,
511
+ 'enforce-storage-context': enforce_storage_context_1.enforceStorageContext,
340
512
  'avoid-utils-directory': avoid_utils_directory_1.avoidUtilsDirectory,
341
513
  'no-entire-object-hook-deps': no_entire_object_hook_deps_1.noEntireObjectHookDeps,
342
514
  'enforce-firestore-path-utils': enforce_firestore_path_utils_1.enforceFirestorePathUtils,
@@ -354,7 +526,9 @@ module.exports = {
354
526
  'enforce-realtimedb-path-utils': enforce_realtimedb_path_utils_1.enforceRealtimedbPathUtils,
355
527
  'enforce-memoize-async': enforce_memoize_async_1.enforceMemoizeAsync,
356
528
  'enforce-exported-function-types': enforce_exported_function_types_1.enforceExportedFunctionTypes,
529
+ 'no-redundant-annotation-assertion': no_redundant_annotation_assertion_1.noRedundantAnnotationAssertion,
357
530
  'no-redundant-param-types': no_redundant_param_types_1.noRedundantParamTypes,
531
+ 'no-redundant-this-params': no_redundant_this_params_1.noRedundantThisParams,
358
532
  'enforce-memoize-getters': enforce_memoize_getters_1.enforceMemoizeGetters,
359
533
  'no-class-instance-destructuring': no_class_instance_destructuring_1.noClassInstanceDestructuring,
360
534
  'no-firestore-object-arrays': no_firestore_object_arrays_1.noFirestoreObjectArrays,
@@ -363,6 +537,7 @@ module.exports = {
363
537
  'no-jsx-in-hooks': no_jsx_in_hooks_1.noJsxInHooks,
364
538
  'enforce-assert-throws': enforce_assert_throws_1.enforceAssertThrows,
365
539
  'prefer-batch-operations': prefer_batch_operations_1.preferBatchOperations,
540
+ 'prefer-docsetter-setall': prefer_docsetter_setall_1.preferDocSetterSetAll,
366
541
  'no-complex-cloud-params': no_complex_cloud_params_1.noComplexCloudParams,
367
542
  'no-mixed-firestore-transactions': no_mixed_firestore_transactions_1.noMixedFirestoreTransactions,
368
543
  'enforce-firestore-facade': enforce_firestore_facade_1.enforceFirestoreFacade,
@@ -374,17 +549,21 @@ module.exports = {
374
549
  'require-hooks-default-params': require_hooks_default_params_1.requireHooksDefaultParams,
375
550
  'prefer-destructuring-no-class': prefer_destructuring_no_class_1.preferDestructuringNoClass,
376
551
  'enforce-render-hits-memoization': enforce_render_hits_memoization_1.enforceRenderHitsMemoization,
552
+ 'enforce-transform-memoization': enforce_transform_memoization_1.enforceTransformMemoization,
377
553
  'prefer-fragment-component': prefer_fragment_component_1.preferFragmentComponent,
378
554
  'react-usememo-should-be-component': react_usememo_should_be_component_1.reactUseMemoShouldBeComponent,
379
555
  'no-unnecessary-verb-suffix': no_unnecessary_verb_suffix_1.noUnnecessaryVerbSuffix,
380
556
  'enforce-assert-safe-object-key': enforce_assert_safe_object_key_1.enforceAssertSafeObjectKey,
381
557
  'enforce-object-literal-as-const': enforce_object_literal_as_const_1.enforceObjectLiteralAsConst,
558
+ 'enforce-stable-hash-spread-props': enforce_stable_hash_spread_props_1.enforceStableHashSpreadProps,
382
559
  'enforce-positive-naming': enforce_positive_naming_1.enforcePositiveNaming,
383
560
  'no-type-assertion-returns': no_type_assertion_returns_1.noTypeAssertionReturns,
384
561
  'prefer-utility-function-over-private-static': prefer_utility_function_over_private_static_1.preferUtilityFunctionOverPrivateStatic,
385
562
  'enforce-microdiff': enforce_microdiff_1.enforceMicrodiff,
386
563
  'fast-deep-equal-over-microdiff': fast_deep_equal_over_microdiff_1.fastDeepEqualOverMicrodiff,
564
+ 'flatten-push-calls': flatten_push_calls_1.flattenPushCalls,
387
565
  'enforce-timestamp-now': enforce_timestamp_now_1.enforceTimestampNow,
566
+ 'enforce-unique-cursor-headers': enforce_unique_cursor_headers_1.enforceUniqueCursorHeaders,
388
567
  'enforce-typescript-markdown-code-blocks': enforce_typescript_markdown_code_blocks_1.enforceTypescriptMarkdownCodeBlocks,
389
568
  'no-always-true-false-conditions': no_always_true_false_conditions_1.noAlwaysTrueFalseConditions,
390
569
  'enforce-props-argument-name': enforce_props_argument_name_1.enforcePropsArgumentName,
@@ -395,12 +574,16 @@ module.exports = {
395
574
  'ensure-pointer-events-none': ensure_pointer_events_none_1.ensurePointerEventsNone,
396
575
  'no-object-values-on-strings': no_object_values_on_strings_1.noObjectValuesOnStrings,
397
576
  'no-unnecessary-destructuring': no_unnecessary_destructuring_1.noUnnecessaryDestructuring,
577
+ 'no-unnecessary-destructuring-rename': no_unnecessary_destructuring_rename_1.noUnnecessaryDestructuringRename,
398
578
  'enforce-singular-type-names': enforce_singular_type_names_1.enforceSingularTypeNames,
579
+ 'prevent-children-clobber': prevent_children_clobber_1.preventChildrenClobber,
399
580
  'enforce-css-media-queries': enforce_css_media_queries_1.enforceCssMediaQueries,
400
581
  'omit-index-html': omit_index_html_1.omitIndexHtml,
401
582
  'enforce-id-capitalization': enforce_id_capitalization_1.enforceIdCapitalization,
402
583
  'no-unused-usestate': no_unused_usestate_1.noUnusedUseState,
584
+ 'no-useless-usememo-primitives': no_useless_usememo_primitives_1.noUselessUsememoPrimitives,
403
585
  'prefer-usecallback-over-usememo-for-functions': prefer_usecallback_over_usememo_for_functions_1.default,
586
+ 'no-usememo-for-pass-by-value': no_usememo_for_pass_by_value_1.noUsememoForPassByValue,
404
587
  'no-margin-properties': no_margin_properties_1.noMarginProperties,
405
588
  'enforce-boolean-naming-prefixes': enforce_boolean_naming_prefixes_1.enforceBooleanNamingPrefixes,
406
589
  'enforce-fieldpath-syntax-in-docsetter': enforce_fieldpath_syntax_in_docsetter_1.enforceFieldPathSyntaxInDocSetter,
@@ -408,6 +591,7 @@ module.exports = {
408
591
  'prefer-nullish-coalescing-boolean-props': prefer_nullish_coalescing_boolean_props_1.preferNullishCoalescingBooleanProps,
409
592
  'no-overridable-method-calls-in-constructor': no_overridable_method_calls_in_constructor_1.noOverridableMethodCallsInConstructor,
410
593
  'use-latest-callback': use_latest_callback_1.useLatestCallback,
594
+ 'no-empty-dependency-use-callbacks': no_empty_dependency_use_callbacks_1.noEmptyDependencyUseCallbacks,
411
595
  'enforce-querykey-ts': enforce_querykey_ts_1.enforceQueryKeyTs,
412
596
  'no-stale-state-across-await': no_stale_state_across_await_1.noStaleStateAcrossAwait,
413
597
  'no-separate-loading-state': no_separate_loading_state_1.noSeparateLoadingState,
@@ -417,12 +601,19 @@ module.exports = {
417
601
  'no-misleading-boolean-prefixes': no_misleading_boolean_prefixes_1.noMisleadingBooleanPrefixes,
418
602
  'prefer-url-tostring-over-tojson': prefer_url_tostring_over_tojson_1.preferUrlToStringOverToJson,
419
603
  'prefer-next-dynamic': prefer_next_dynamic_1.preferNextDynamic,
604
+ 'jsdoc-above-field': jsdoc_above_field_1.jsdocAboveField,
420
605
  'no-redundant-usecallback-wrapper': no_redundant_usecallback_wrapper_1.default,
606
+ 'no-res-error-status-in-onrequest': no_res_error_status_in_onrequest_1.requireHttpsErrorInOnRequestHandlers,
421
607
  'no-array-length-in-deps': no_array_length_in_deps_1.noArrayLengthInDeps,
422
608
  'prefer-use-deep-compare-memo': prefer_use_deep_compare_memo_1.preferUseDeepCompareMemo,
609
+ 'memo-nested-react-components': memo_nested_react_components_1.memoNestedReactComponents,
610
+ 'memo-compare-deeply-complex-props': memo_compare_deeply_complex_props_1.memoCompareDeeplyComplexProps,
423
611
  'no-circular-references': no_circular_references_1.noCircularReferences,
612
+ 'no-console-error': no_console_error_1.noConsoleError,
424
613
  'no-try-catch-already-exists-in-transaction': no_try_catch_already_exists_in_transaction_1.noTryCatchAlreadyExistsInTransaction,
614
+ 'no-curly-brackets-around-commented-properties': no_curly_brackets_around_commented_properties_1.noCurlyBracketsAroundCommentedProperties,
425
615
  'no-passthrough-getters': no_passthrough_getters_1.noPassthroughGetters,
616
+ 'vertically-group-related-functions': vertically_group_related_functions_1.verticallyGroupRelatedFunctions,
426
617
  'no-static-constants-in-dynamic-files': no_static_constants_in_dynamic_files_1.default,
427
618
  'test-file-location-enforcement': test_file_location_enforcement_1.testFileLocationEnforcement,
428
619
  },
@@ -12,7 +12,7 @@ exports.ARRAY_METHODS = [
12
12
  ];
13
13
  exports.arrayMethodsThisContext = (0, createRule_1.createRule)({
14
14
  create(context) {
15
- const sourceCode = context.getSourceCode();
15
+ const sourceCode = context.sourceCode;
16
16
  return {
17
17
  CallExpression(node) {
18
18
  // Array method called with a class method reference
@@ -40,10 +40,6 @@ exports.avoidUtilsDirectory = (0, createRule_1.createRule)({
40
40
  data: {
41
41
  path: relativePath,
42
42
  },
43
- fix() {
44
- // We can't provide an auto-fix since directory renaming is beyond ESLint's scope
45
- return null;
46
- },
47
43
  });
48
44
  }
49
45
  },