@blumintinc/eslint-plugin-blumint 1.5.5 → 1.7.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.
- package/README.md +62 -39
- package/lib/index.js +37 -1
- package/lib/rules/enforce-assert-throws.d.ts +1 -0
- package/lib/rules/enforce-assert-throws.js +132 -0
- package/lib/rules/enforce-centralized-mock-firestore.d.ts +1 -0
- package/lib/rules/enforce-centralized-mock-firestore.js +55 -0
- package/lib/rules/enforce-exported-function-types.js +3 -2
- package/lib/rules/enforce-firestore-facade.d.ts +3 -0
- package/lib/rules/enforce-firestore-facade.js +126 -0
- package/lib/rules/enforce-firestore-set-merge.js +83 -2
- package/lib/rules/enforce-verb-noun-naming.js +2 -0
- package/lib/rules/no-complex-cloud-params.d.ts +1 -0
- package/lib/rules/no-complex-cloud-params.js +363 -0
- package/lib/rules/no-explicit-return-type.js +11 -3
- package/lib/rules/no-firestore-jest-mock.d.ts +1 -0
- package/lib/rules/no-firestore-jest-mock.js +59 -0
- package/lib/rules/no-mixed-firestore-transactions.d.ts +1 -0
- package/lib/rules/no-mixed-firestore-transactions.js +115 -0
- package/lib/rules/no-mock-firebase-admin.d.ts +1 -0
- package/lib/rules/no-mock-firebase-admin.js +50 -0
- package/lib/rules/prefer-batch-operations.d.ts +3 -0
- package/lib/rules/prefer-batch-operations.js +176 -0
- package/lib/rules/prefer-clone-deep.d.ts +1 -0
- package/lib/rules/prefer-clone-deep.js +72 -0
- package/lib/rules/prefer-settings-object.js +164 -6
- package/lib/rules/semantic-function-prefixes.js +7 -0
- package/lib/rules/sync-onwrite-name-func.d.ts +1 -0
- package/lib/rules/sync-onwrite-name-func.js +79 -0
- package/package.json +2 -2
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.syncOnwriteNameFunc = void 0;
|
|
4
|
+
const utils_1 = require("@typescript-eslint/utils");
|
|
5
|
+
const createRule_1 = require("../utils/createRule");
|
|
6
|
+
exports.syncOnwriteNameFunc = (0, createRule_1.createRule)({
|
|
7
|
+
name: 'sync-onwrite-name-func',
|
|
8
|
+
meta: {
|
|
9
|
+
type: 'problem',
|
|
10
|
+
docs: {
|
|
11
|
+
description: 'Ensure that the name field matches the func field in onWrite handlers',
|
|
12
|
+
recommended: 'error',
|
|
13
|
+
},
|
|
14
|
+
fixable: 'code',
|
|
15
|
+
schema: [],
|
|
16
|
+
messages: {
|
|
17
|
+
mismatchedName: 'The name field should match the func field in onWrite handlers',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
defaultOptions: [],
|
|
21
|
+
create(context) {
|
|
22
|
+
return {
|
|
23
|
+
ObjectExpression(node) {
|
|
24
|
+
let nameProperty;
|
|
25
|
+
let funcProperty;
|
|
26
|
+
for (const property of node.properties) {
|
|
27
|
+
if (property.type !== utils_1.AST_NODE_TYPES.Property)
|
|
28
|
+
continue;
|
|
29
|
+
if (property.key.type === utils_1.AST_NODE_TYPES.Identifier &&
|
|
30
|
+
property.key.name === 'name' &&
|
|
31
|
+
property.value.type === utils_1.AST_NODE_TYPES.Literal &&
|
|
32
|
+
typeof property.value.value === 'string') {
|
|
33
|
+
nameProperty = property;
|
|
34
|
+
}
|
|
35
|
+
if (property.key.type === utils_1.AST_NODE_TYPES.Identifier &&
|
|
36
|
+
property.key.name === 'func') {
|
|
37
|
+
funcProperty = property;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!nameProperty || !funcProperty) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const nameValue = nameProperty.value.value;
|
|
44
|
+
let funcName;
|
|
45
|
+
// Handle variable references
|
|
46
|
+
if (funcProperty.value.type === utils_1.AST_NODE_TYPES.Identifier) {
|
|
47
|
+
const funcIdentifier = funcProperty.value;
|
|
48
|
+
const scope = context.getScope();
|
|
49
|
+
const variable = scope.references.find(ref => ref.identifier === funcIdentifier)?.resolved;
|
|
50
|
+
if (variable?.defs[0]?.node.type === utils_1.AST_NODE_TYPES.VariableDeclarator &&
|
|
51
|
+
variable.defs[0].node.init?.type === utils_1.AST_NODE_TYPES.Identifier) {
|
|
52
|
+
// If the variable is initialized with another identifier, use that name
|
|
53
|
+
funcName = variable.defs[0].node.init.name;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// Otherwise use the variable name itself
|
|
57
|
+
funcName = funcIdentifier.name;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return; // Skip if func is not an identifier
|
|
62
|
+
}
|
|
63
|
+
if (nameValue !== funcName) {
|
|
64
|
+
const value = nameProperty.value;
|
|
65
|
+
if (value.type === utils_1.AST_NODE_TYPES.Literal) {
|
|
66
|
+
context.report({
|
|
67
|
+
node: nameProperty,
|
|
68
|
+
messageId: 'mismatchedName',
|
|
69
|
+
fix(fixer) {
|
|
70
|
+
return fixer.replaceText(value, `'${funcName}'`);
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=sync-onwrite-name-func.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blumintinc/eslint-plugin-blumint",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Custom eslint rules for use within BluMint",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Brodie McGuire",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"dotenv-cli": "5.0.0",
|
|
72
72
|
"eslint": "8.57.0",
|
|
73
73
|
"eslint-config-prettier": "8.5.0",
|
|
74
|
-
"eslint-doc-generator": "1.7.1",
|
|
74
|
+
"eslint-doc-generator": "^1.7.1",
|
|
75
75
|
"eslint-import-resolver-typescript": "3.5.5",
|
|
76
76
|
"eslint-plugin-eslint-plugin": "5.0.0",
|
|
77
77
|
"eslint-plugin-import": "2.26.0",
|