@blumintinc/eslint-plugin-blumint 1.18.8 β 1.18.10
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.
- package/README.md +7 -7
- package/lib/index.js +8 -8
- package/lib/rules/class-methods-read-top-to-bottom.js +1 -1
- package/lib/rules/enforce-m3-sentence-case.js +1 -1
- package/lib/rules/enforce-props-naming-consistency.js +1 -1
- package/lib/rules/no-console-error.js +1 -1
- package/lib/rules/no-firestore-object-arrays.js +1 -1
- package/lib/rules/no-margin-properties.js +1 -1
- package/lib/rules/parallelize-async-operations.js +1 -1
- package/lib/rules/prefer-field-paths-in-transforms.js +1 -1
- package/lib/rules/prefer-flat-transform-each-keys.js +1 -1
- package/lib/rules/prefer-utility-function-own-file.js +1 -1
- package/lib/rules/require-props-composition.js +1 -1
- package/lib/rules/warn-https-error-message-user-friendly.js +1 -1
- package/package.json +1 -1
- package/release-manifest.json +108 -0
package/README.md
CHANGED
|
@@ -114,7 +114,7 @@ full closed loop is documented in agora's `.claude/skills/eslint-autonomy/SKILL.
|
|
|
114
114
|
| [enforce-id-capitalization](docs/rules/enforce-id-capitalization.md) | Enforce the use of "ID" instead of "id" in user-facing text | β
| | | π§ | | |
|
|
115
115
|
| [enforce-identifiable-firestore-type](docs/rules/enforce-identifiable-firestore-type.md) | Enforce that Firestore type definitions extend Identifiable and match their folder name | β
| | | | | |
|
|
116
116
|
| [enforce-is-prefix-validators](docs/rules/enforce-is-prefix-validators.md) | Enforce the `is` (or other allowed predicate) prefix for exported validators in **/validators/**/*.ts files | β
| | | | | |
|
|
117
|
-
| [enforce-m3-sentence-case](docs/rules/enforce-m3-sentence-case.md) | Enforce Material Design 3 sentence-case capitalisation for user-facing text β flag Title Case and ALL CAPS strings in JSX text and configured string props. |
|
|
117
|
+
| [enforce-m3-sentence-case](docs/rules/enforce-m3-sentence-case.md) | Enforce Material Design 3 sentence-case capitalisation for user-facing text β flag Title Case and ALL CAPS strings in JSX text and configured string props. | β
| | | | π‘ | |
|
|
118
118
|
| [enforce-memoize-async](docs/rules/enforce-memoize-async.md) | Enforce @Memoize() decorator on async methods with 0-1 parameters to cache results and prevent redundant API calls or expensive computations. Without memoization, repeated calls trigger redundant requests or expensive computations, increasing latency. @Memoize() caches results by parameter, ensuring subsequent calls with identical inputs return immediately. | β
| | | π§ | | |
|
|
119
119
|
| [enforce-memoize-getters](docs/rules/enforce-memoize-getters.md) | Enforce @Memoize() decorator on private class getters to avoid re-instantiation and preserve state across accesses. | β
| | | π§ | | |
|
|
120
120
|
| [enforce-microdiff](docs/rules/enforce-microdiff.md) | Enforce using microdiff for object and array comparison operations | β
| | | π§ | | |
|
|
@@ -163,7 +163,7 @@ full closed loop is documented in agora's `.claude/skills/eslint-autonomy/SKILL.
|
|
|
163
163
|
| [no-complex-cloud-params](docs/rules/no-complex-cloud-params.md) | Disallow passing complex objects to cloud functions | β
| | | | | |
|
|
164
164
|
| [no-compositing-layer-props](docs/rules/no-compositing-layer-props.md) | Discourage CSS properties that force GPU compositing layers (e.g., transform, filter, will-change). Extra layers consume GPU memory and split rendering work, which slows scrolling and animation when sprinkled across a page. The rule inspects inline style objects and MUI sx props so layer promotion stays intentional rather than incidental. | β
| | | | | |
|
|
165
165
|
| [no-conditional-literals-in-jsx](docs/rules/no-conditional-literals-in-jsx.md) | Disallow conditional string literals beside other JSX text to avoid fragmented text nodes, translation issues, and hydration mismatches. | β
| | | | | |
|
|
166
|
-
| [no-console-error](docs/rules/no-console-error.md) | Disallow console.error so errors flow through structured handling (HttpsError/useErrorAlert on frontend, structured loggers on backend). |
|
|
166
|
+
| [no-console-error](docs/rules/no-console-error.md) | Disallow console.error so errors flow through structured handling (HttpsError/useErrorAlert on frontend, structured loggers on backend). | β
| | | | | |
|
|
167
167
|
| [no-curly-brackets-around-commented-properties](docs/rules/no-curly-brackets-around-commented-properties.md) | Disallow curly-brace blocks that only wrap commented-out members inside type declarations | β
| | | π§ | | |
|
|
168
168
|
| [no-direct-function-state](docs/rules/no-direct-function-state.md) | Prevent passing a function directly to a useState setter β React will invoke it as a functional updater instead of storing it. Wrap in a thunk: setState(() => fn). | β
| | | π§ | | |
|
|
169
169
|
| [no-empty-dependency-use-callbacks](docs/rules/no-empty-dependency-use-callbacks.md) | Discourage useCallback([]) or useLatestCallback around static functions. Static callbacks do not need hook machineryβextract them to module-level utilities for clarity and to avoid unnecessary hook overhead. | β
| | | π§ | | |
|
|
@@ -227,8 +227,8 @@ full closed loop is documented in agora's `.claude/skills/eslint-autonomy/SKILL.
|
|
|
227
227
|
| [prefer-destructuring-no-class](docs/rules/prefer-destructuring-no-class.md) | Enforce destructuring when accessing object properties, except for class instances | β
| | | π§ | | |
|
|
228
228
|
| [prefer-docsetter-setall](docs/rules/prefer-docsetter-setall.md) | Enforce batching DocSetter and DocSetterTransaction writes by using setAll instead of set inside loops or array callbacks. | β
| | | | | |
|
|
229
229
|
| [prefer-document-flattening](docs/rules/prefer-document-flattening.md) | Enforce using the shouldFlatten option when setting deeply nested objects in Firestore documents | | | | | π‘ | |
|
|
230
|
-
| [prefer-field-paths-in-transforms](docs/rules/prefer-field-paths-in-transforms.md) | Flatten aggregation updates inside transformEach so diff-based deletes remove only the intended fields instead of wiping sibling data. |
|
|
231
|
-
| [prefer-flat-transform-each-keys](docs/rules/prefer-flat-transform-each-keys.md) | Warn when transformEach in a propagation strategy returns nested object values instead of flat dot-notation keys. |
|
|
230
|
+
| [prefer-field-paths-in-transforms](docs/rules/prefer-field-paths-in-transforms.md) | Flatten aggregation updates inside transformEach so diff-based deletes remove only the intended fields instead of wiping sibling data. | β
| | | π§ | | |
|
|
231
|
+
| [prefer-flat-transform-each-keys](docs/rules/prefer-flat-transform-each-keys.md) | Warn when transformEach in a propagation strategy returns nested object values instead of flat dot-notation keys. | β
| | | | | |
|
|
232
232
|
| [prefer-fragment-component](docs/rules/prefer-fragment-component.md) | Require the Fragment named import instead of shorthand fragments or React.Fragment to keep fragments explicit and prop-friendly | | | β
| π§ | | |
|
|
233
233
|
| [prefer-fragment-shorthand](docs/rules/prefer-fragment-shorthand.md) | Prefer <> shorthand for <React.Fragment> | β
| | | π§ | | |
|
|
234
234
|
| [prefer-getter-over-parameterless-method](docs/rules/prefer-getter-over-parameterless-method.md) | Enforce getter syntax for synchronous parameterless methods that return values, improving semantic clarity and avoiding accidental method invocation without parentheses. | β
| | | π§ | | |
|
|
@@ -248,7 +248,7 @@ full closed loop is documented in agora's `.claude/skills/eslint-autonomy/SKILL.
|
|
|
248
248
|
| [prefer-usecallback-over-usememo-for-functions](docs/rules/prefer-usecallback-over-usememo-for-functions.md) | Enforce using useCallback instead of useMemo for memoizing functions | β
| | | π§ | | |
|
|
249
249
|
| [prefer-usememo-over-useeffect-usestate](docs/rules/prefer-usememo-over-useeffect-usestate.md) | Prefer useMemo over useEffect + useState for pure computations to avoid extra render cycles and stale derived state. | β
| | | | | |
|
|
250
250
|
| [prefer-utility-function-over-private-static](docs/rules/prefer-utility-function-over-private-static.md) | Enforce abstraction of private static methods into utility functions | β
| | | | | |
|
|
251
|
-
| [prefer-utility-function-own-file](docs/rules/prefer-utility-function-own-file.md) | Enforce that sizable utility functions live in their own file rather than being co-located inside an entry-point or consumer file |
|
|
251
|
+
| [prefer-utility-function-own-file](docs/rules/prefer-utility-function-own-file.md) | Enforce that sizable utility functions live in their own file rather than being co-located inside an entry-point or consumer file | β
| | | | | |
|
|
252
252
|
| [prevent-children-clobber](docs/rules/prevent-children-clobber.md) | Prevent JSX spreads from silently discarding props.children | β
| | | | | |
|
|
253
253
|
| [react-memoize-literals](docs/rules/react-memoize-literals.md) | Detect object, array, and function literals created in React components or hooks that create new references every render. Prefer memoized values (useMemo/useCallback) or module-level constants to keep referential stability. | β
| | | | π‘ | |
|
|
254
254
|
| [react-usememo-should-be-component](docs/rules/react-usememo-should-be-component.md) | Enforce that useMemo hooks explicitly returning JSX should be abstracted into separate React components | β
| | | | | |
|
|
@@ -260,7 +260,7 @@ full closed loop is documented in agora's `.claude/skills/eslint-autonomy/SKILL.
|
|
|
260
260
|
| [require-memo](docs/rules/require-memo.md) | React components must be memoized | β
| | | π§ | | |
|
|
261
261
|
| [require-memoize-jsx-returners](docs/rules/require-memoize-jsx-returners.md) | Require @Memoize() decorator on instance members that return JSX or JSX factories | β
| | | π§ | | |
|
|
262
262
|
| [require-migration-script-metadata](docs/rules/require-migration-script-metadata.md) | Enforce JSDoc migration metadata in callable scripts | β
| | | | | |
|
|
263
|
-
| [require-props-composition](docs/rules/require-props-composition.md) | Require React component Props types to compose (via Pick/Omit) with the props types of non-leaf child components rendered in JSX |
|
|
263
|
+
| [require-props-composition](docs/rules/require-props-composition.md) | Require React component Props types to compose (via Pick/Omit) with the props types of non-leaf child components rendered in JSX | β
| | | | | |
|
|
264
264
|
| [require-server-timestamp-for-firestore-dates](docs/rules/require-server-timestamp-for-firestore-dates.md) | Enforce serverTimestamp() instead of new Date() for Firestore timestamp fields | β
| | | | | |
|
|
265
265
|
| [semantic-function-prefixes](docs/rules/semantic-function-prefixes.md) | Require semantic function prefixes instead of generic verbs so callers know whether a function fetches data, transforms input, or mutates state | β
| | | | | |
|
|
266
266
|
| [sync-onwrite-name-func](docs/rules/sync-onwrite-name-func.md) | Ensure that the name field matches the func field in onWrite handlers | β
| | | π§ | | |
|
|
@@ -270,7 +270,7 @@ full closed loop is documented in agora's `.claude/skills/eslint-autonomy/SKILL.
|
|
|
270
270
|
| [use-custom-router](docs/rules/use-custom-router.md) | Enforce using src/hooks/routing/useRouter instead of next/router | β
| | | π§ | | |
|
|
271
271
|
| [use-latest-callback](docs/rules/use-latest-callback.md) | Enforce using useLatestCallback from use-latest-callback instead of React useCallback | β
| | | π§ | | |
|
|
272
272
|
| [vertically-group-related-functions](docs/rules/vertically-group-related-functions.md) | Keep top-level functions grouped vertically so callers, exports, and helpers read top-down. | β
| | | π§ | | |
|
|
273
|
-
| [warn-https-error-message-user-friendly](docs/rules/warn-https-error-message-user-friendly.md) | Warn when messageUserFriendly is used in HttpsError or toHttpsError to ensure it is truly a user-caused error. |
|
|
273
|
+
| [warn-https-error-message-user-friendly](docs/rules/warn-https-error-message-user-friendly.md) | Warn when messageUserFriendly is used in HttpsError or toHttpsError to ensure it is truly a user-caused error. | β
| | | | | |
|
|
274
274
|
|
|
275
275
|
<!-- end auto-generated rules list -->
|
|
276
276
|
|
package/lib/index.js
CHANGED
|
@@ -218,7 +218,7 @@ function noFrontendImportsFromFunctionsPatterns(pattern) {
|
|
|
218
218
|
module.exports = {
|
|
219
219
|
meta: {
|
|
220
220
|
name: '@blumintinc/eslint-plugin-blumint',
|
|
221
|
-
version: '1.18.
|
|
221
|
+
version: '1.18.10',
|
|
222
222
|
},
|
|
223
223
|
parseOptions: {
|
|
224
224
|
ecmaVersion: 2020,
|
|
@@ -262,7 +262,7 @@ module.exports = {
|
|
|
262
262
|
'@blumintinc/blumint/no-async-array-filter': 'error',
|
|
263
263
|
'@blumintinc/blumint/no-async-foreach': 'error',
|
|
264
264
|
'@blumintinc/blumint/no-console-error': [
|
|
265
|
-
'
|
|
265
|
+
'error',
|
|
266
266
|
{ allowWithUseAlertDialog: true },
|
|
267
267
|
],
|
|
268
268
|
'@blumintinc/blumint/no-conditional-literals-in-jsx': 'error',
|
|
@@ -375,7 +375,7 @@ module.exports = {
|
|
|
375
375
|
'@blumintinc/blumint/no-separate-loading-state': 'error',
|
|
376
376
|
'@blumintinc/blumint/optimize-object-boolean-conditions': 'error',
|
|
377
377
|
'@blumintinc/blumint/prefer-params-over-parent-id': 'error',
|
|
378
|
-
'@blumintinc/blumint/prefer-field-paths-in-transforms': '
|
|
378
|
+
'@blumintinc/blumint/prefer-field-paths-in-transforms': 'error',
|
|
379
379
|
'@blumintinc/blumint/no-misleading-boolean-prefixes': 'error',
|
|
380
380
|
'@blumintinc/blumint/prefer-url-tostring-over-tojson': 'error',
|
|
381
381
|
'@blumintinc/blumint/prefer-next-dynamic': 'error',
|
|
@@ -397,12 +397,12 @@ module.exports = {
|
|
|
397
397
|
'@blumintinc/blumint/no-static-constants-in-dynamic-files': 'error',
|
|
398
398
|
'@blumintinc/blumint/test-file-location-enforcement': 'error',
|
|
399
399
|
'@blumintinc/blumint/require-migration-script-metadata': 'error',
|
|
400
|
-
'@blumintinc/blumint/warn-https-error-message-user-friendly': '
|
|
401
|
-
'@blumintinc/blumint/require-props-composition': '
|
|
400
|
+
'@blumintinc/blumint/warn-https-error-message-user-friendly': 'error',
|
|
401
|
+
'@blumintinc/blumint/require-props-composition': 'error',
|
|
402
402
|
'@blumintinc/blumint/require-server-timestamp-for-firestore-dates': 'error',
|
|
403
403
|
'@blumintinc/blumint/prefer-spread-over-reassembly': 'error',
|
|
404
404
|
'@blumintinc/blumint/prefer-sx-prop-over-system-props': 'error',
|
|
405
|
-
'@blumintinc/blumint/enforce-m3-sentence-case': '
|
|
405
|
+
'@blumintinc/blumint/enforce-m3-sentence-case': 'error',
|
|
406
406
|
'@blumintinc/blumint/no-redundant-boolean-callback-props': 'error',
|
|
407
407
|
'@blumintinc/blumint/enforce-is-prefix-validators': 'error',
|
|
408
408
|
'@blumintinc/blumint/enforce-types-directory-placement': 'error',
|
|
@@ -410,12 +410,12 @@ module.exports = {
|
|
|
410
410
|
'@blumintinc/blumint/no-direct-function-state': 'error',
|
|
411
411
|
'@blumintinc/blumint/no-fill-template-mutation': 'error',
|
|
412
412
|
'@blumintinc/blumint/enforce-snapshot-state-narrowing': 'error',
|
|
413
|
-
'@blumintinc/blumint/prefer-flat-transform-each-keys': '
|
|
413
|
+
'@blumintinc/blumint/prefer-flat-transform-each-keys': 'error',
|
|
414
414
|
'@blumintinc/blumint/prefer-use-theme': 'error',
|
|
415
415
|
'@blumintinc/blumint/no-single-dismiss-dialog-button': 'error',
|
|
416
416
|
'@blumintinc/blumint/no-portal-inside-tooltip': 'error',
|
|
417
417
|
'@blumintinc/blumint/no-satisfies-in-frontend-bundle': 'error',
|
|
418
|
-
'@blumintinc/blumint/prefer-utility-function-own-file': '
|
|
418
|
+
'@blumintinc/blumint/prefer-utility-function-own-file': 'error',
|
|
419
419
|
},
|
|
420
420
|
/**
|
|
421
421
|
* Depth-specific overrides block only import strings that traverse to the
|
|
@@ -19,7 +19,7 @@ exports.classMethodsReadTopToBottom = (0, createRule_1.createRule)({
|
|
|
19
19
|
type: 'suggestion',
|
|
20
20
|
docs: {
|
|
21
21
|
description: 'Enforces a top-to-bottom class layout so callers lead into the helpers they rely on.',
|
|
22
|
-
recommended: '
|
|
22
|
+
recommended: 'error',
|
|
23
23
|
},
|
|
24
24
|
schema: [],
|
|
25
25
|
messages: {
|
|
@@ -257,7 +257,7 @@ exports.enforceM3SentenceCase = (0, createRule_1.createRule)({
|
|
|
257
257
|
type: 'suggestion',
|
|
258
258
|
docs: {
|
|
259
259
|
description: 'Enforce Material Design 3 sentence-case capitalisation for user-facing text β flag Title Case and ALL CAPS strings in JSX text and configured string props.',
|
|
260
|
-
recommended: '
|
|
260
|
+
recommended: 'error',
|
|
261
261
|
},
|
|
262
262
|
hasSuggestions: true,
|
|
263
263
|
schema: [
|
|
@@ -9,7 +9,7 @@ exports.enforcePropsNamingConsistency = (0, createRule_1.createRule)({
|
|
|
9
9
|
type: 'suggestion',
|
|
10
10
|
docs: {
|
|
11
11
|
description: 'Prefer naming single "Props"-typed parameters as "props"; enforcement defers to enforce-props-argument-name for multi-Props cases',
|
|
12
|
-
recommended: '
|
|
12
|
+
recommended: 'error',
|
|
13
13
|
},
|
|
14
14
|
fixable: 'code',
|
|
15
15
|
schema: [],
|
|
@@ -440,7 +440,7 @@ exports.noConsoleError = (0, createRule_1.createRule)({
|
|
|
440
440
|
type: 'problem',
|
|
441
441
|
docs: {
|
|
442
442
|
description: 'Disallow console.error so errors flow through structured handling (HttpsError/useErrorAlert on frontend, structured loggers on backend).',
|
|
443
|
-
recommended: '
|
|
443
|
+
recommended: 'error',
|
|
444
444
|
},
|
|
445
445
|
schema: [
|
|
446
446
|
{
|
|
@@ -156,7 +156,7 @@ exports.noFirestoreObjectArrays = (0, createRule_1.createRule)({
|
|
|
156
156
|
type: 'problem',
|
|
157
157
|
docs: {
|
|
158
158
|
description: 'Disallow arrays of object types in Firestore models. Prefer Record maps keyed by id with an index field, or subcollections/arrays of IDs.',
|
|
159
|
-
recommended: '
|
|
159
|
+
recommended: 'error',
|
|
160
160
|
requiresTypeChecking: false,
|
|
161
161
|
},
|
|
162
162
|
schema: [],
|
|
@@ -40,7 +40,7 @@ exports.noMarginProperties = (0, createRule_1.createRule)({
|
|
|
40
40
|
type: 'suggestion',
|
|
41
41
|
docs: {
|
|
42
42
|
description: 'Prevent margin properties (margin, marginLeft, marginRight, marginTop, marginBottom, mx, my, etc.) in MUI styling because margins fight container-controlled spacing, double gutters, and misaligned breakpoints; keep spacing centralized with padding, gap, or spacing props instead.',
|
|
43
|
-
recommended: '
|
|
43
|
+
recommended: 'error',
|
|
44
44
|
},
|
|
45
45
|
schema: [
|
|
46
46
|
{
|
|
@@ -169,7 +169,7 @@ exports.parallelizeAsyncOperations = (0, createRule_1.createRule)({
|
|
|
169
169
|
* "transactionCollector", etc. This may produce false positives for
|
|
170
170
|
* unrelated managers, but errs on the side of safety.
|
|
171
171
|
*/
|
|
172
|
-
const COORDINATOR_PATTERN = /batch|manager|collector|transaction|tx|unitofwork|accumulator/i;
|
|
172
|
+
const COORDINATOR_PATTERN = /batch|manager|collector|transaction|tx|coordinator|unitofwork|accumulator|aggregator/i;
|
|
173
173
|
/**
|
|
174
174
|
* Checks if there are dependencies between await expressions
|
|
175
175
|
*/
|
|
@@ -167,7 +167,7 @@ exports.preferFieldPathsInTransforms = (0, createRule_1.createRule)({
|
|
|
167
167
|
type: 'suggestion',
|
|
168
168
|
docs: {
|
|
169
169
|
description: 'Flatten aggregation updates inside transformEach so diff-based deletes remove only the intended fields instead of wiping sibling data.',
|
|
170
|
-
recommended: '
|
|
170
|
+
recommended: 'error',
|
|
171
171
|
},
|
|
172
172
|
fixable: 'code',
|
|
173
173
|
schema: [
|
|
@@ -174,7 +174,7 @@ exports.preferFlatTransformEachKeys = (0, createRule_1.createRule)({
|
|
|
174
174
|
type: 'suggestion',
|
|
175
175
|
docs: {
|
|
176
176
|
description: 'Warn when transformEach in a propagation strategy returns nested object values instead of flat dot-notation keys.',
|
|
177
|
-
recommended: '
|
|
177
|
+
recommended: 'error',
|
|
178
178
|
},
|
|
179
179
|
fixable: undefined,
|
|
180
180
|
schema: [],
|
|
@@ -225,7 +225,7 @@ exports.preferUtilityFunctionOwnFile = (0, createRule_1.createRule)({
|
|
|
225
225
|
type: 'suggestion',
|
|
226
226
|
docs: {
|
|
227
227
|
description: 'Enforce that sizable utility functions live in their own file rather than being co-located inside an entry-point or consumer file',
|
|
228
|
-
recommended: '
|
|
228
|
+
recommended: 'error',
|
|
229
229
|
},
|
|
230
230
|
schema: [
|
|
231
231
|
{
|
|
@@ -242,7 +242,7 @@ exports.requirePropsComposition = (0, createRule_1.createRule)({
|
|
|
242
242
|
type: 'suggestion',
|
|
243
243
|
docs: {
|
|
244
244
|
description: 'Require React component Props types to compose (via Pick/Omit) with the props types of non-leaf child components rendered in JSX',
|
|
245
|
-
recommended: '
|
|
245
|
+
recommended: 'error',
|
|
246
246
|
},
|
|
247
247
|
fixable: undefined,
|
|
248
248
|
schema: [
|
|
@@ -10,7 +10,7 @@ exports.warnHttpsErrorMessageUserFriendly = (0, createRule_1.createRule)({
|
|
|
10
10
|
type: 'suggestion',
|
|
11
11
|
docs: {
|
|
12
12
|
description: 'Warn when messageUserFriendly is used in HttpsError or toHttpsError to ensure it is truly a user-caused error.',
|
|
13
|
-
recommended: '
|
|
13
|
+
recommended: 'error',
|
|
14
14
|
},
|
|
15
15
|
fixable: undefined,
|
|
16
16
|
schema: [],
|
package/package.json
CHANGED
package/release-manifest.json
CHANGED
|
@@ -1,4 +1,112 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "1.18.10",
|
|
4
|
+
"date": "2026-07-11T15:24:03.394Z",
|
|
5
|
+
"rules": [
|
|
6
|
+
{
|
|
7
|
+
"name": "parallelize-async-operations",
|
|
8
|
+
"changeType": "fix",
|
|
9
|
+
"issues": [
|
|
10
|
+
1283
|
|
11
|
+
],
|
|
12
|
+
"summary": "restore coordinator to COORDINATOR_PATTERN (closes #1283)"
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"version": "1.18.9",
|
|
18
|
+
"date": "2026-07-11T01:51:22.294Z",
|
|
19
|
+
"rules": [
|
|
20
|
+
{
|
|
21
|
+
"name": "class-methods-read-top-to-bottom",
|
|
22
|
+
"changeType": "fix",
|
|
23
|
+
"issues": [
|
|
24
|
+
1282
|
|
25
|
+
],
|
|
26
|
+
"summary": "align recommended meta with error config (closes #1282)"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "enforce-m3-sentence-case",
|
|
30
|
+
"changeType": "fix",
|
|
31
|
+
"issues": [
|
|
32
|
+
1282
|
|
33
|
+
],
|
|
34
|
+
"summary": "bump recommended severity to error (closes #1282)"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "enforce-props-naming-consistency",
|
|
38
|
+
"changeType": "fix",
|
|
39
|
+
"issues": [
|
|
40
|
+
1282
|
|
41
|
+
],
|
|
42
|
+
"summary": "align recommended meta with error config (closes #1282)"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "no-console-error",
|
|
46
|
+
"changeType": "fix",
|
|
47
|
+
"issues": [
|
|
48
|
+
1282
|
|
49
|
+
],
|
|
50
|
+
"summary": "bump recommended severity to error (closes #1282)"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "no-firestore-object-arrays",
|
|
54
|
+
"changeType": "fix",
|
|
55
|
+
"issues": [
|
|
56
|
+
1282
|
|
57
|
+
],
|
|
58
|
+
"summary": "align recommended meta with error config (closes #1282)"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "no-margin-properties",
|
|
62
|
+
"changeType": "fix",
|
|
63
|
+
"issues": [
|
|
64
|
+
1282
|
|
65
|
+
],
|
|
66
|
+
"summary": "align recommended meta with error config (closes #1282)"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "prefer-field-paths-in-transforms",
|
|
70
|
+
"changeType": "fix",
|
|
71
|
+
"issues": [
|
|
72
|
+
1282
|
|
73
|
+
],
|
|
74
|
+
"summary": "bump recommended severity to error (closes #1282)"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "prefer-flat-transform-each-keys",
|
|
78
|
+
"changeType": "fix",
|
|
79
|
+
"issues": [
|
|
80
|
+
1282
|
|
81
|
+
],
|
|
82
|
+
"summary": "bump recommended severity to error (closes #1282)"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "prefer-utility-function-own-file",
|
|
86
|
+
"changeType": "fix",
|
|
87
|
+
"issues": [
|
|
88
|
+
1282
|
|
89
|
+
],
|
|
90
|
+
"summary": "bump recommended severity to error (closes #1282)"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "require-props-composition",
|
|
94
|
+
"changeType": "fix",
|
|
95
|
+
"issues": [
|
|
96
|
+
1282
|
|
97
|
+
],
|
|
98
|
+
"summary": "bump recommended severity to error (closes #1282)"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "warn-https-error-message-user-friendly",
|
|
102
|
+
"changeType": "fix",
|
|
103
|
+
"issues": [
|
|
104
|
+
1282
|
|
105
|
+
],
|
|
106
|
+
"summary": "bump recommended severity to error (closes #1282)"
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
},
|
|
2
110
|
{
|
|
3
111
|
"version": "1.18.8",
|
|
4
112
|
"date": "2026-07-10T21:29:12.501Z",
|