@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.
Files changed (29) hide show
  1. package/README.md +62 -39
  2. package/lib/index.js +37 -1
  3. package/lib/rules/enforce-assert-throws.d.ts +1 -0
  4. package/lib/rules/enforce-assert-throws.js +132 -0
  5. package/lib/rules/enforce-centralized-mock-firestore.d.ts +1 -0
  6. package/lib/rules/enforce-centralized-mock-firestore.js +55 -0
  7. package/lib/rules/enforce-exported-function-types.js +3 -2
  8. package/lib/rules/enforce-firestore-facade.d.ts +3 -0
  9. package/lib/rules/enforce-firestore-facade.js +126 -0
  10. package/lib/rules/enforce-firestore-set-merge.js +83 -2
  11. package/lib/rules/enforce-verb-noun-naming.js +2 -0
  12. package/lib/rules/no-complex-cloud-params.d.ts +1 -0
  13. package/lib/rules/no-complex-cloud-params.js +363 -0
  14. package/lib/rules/no-explicit-return-type.js +11 -3
  15. package/lib/rules/no-firestore-jest-mock.d.ts +1 -0
  16. package/lib/rules/no-firestore-jest-mock.js +59 -0
  17. package/lib/rules/no-mixed-firestore-transactions.d.ts +1 -0
  18. package/lib/rules/no-mixed-firestore-transactions.js +115 -0
  19. package/lib/rules/no-mock-firebase-admin.d.ts +1 -0
  20. package/lib/rules/no-mock-firebase-admin.js +50 -0
  21. package/lib/rules/prefer-batch-operations.d.ts +3 -0
  22. package/lib/rules/prefer-batch-operations.js +176 -0
  23. package/lib/rules/prefer-clone-deep.d.ts +1 -0
  24. package/lib/rules/prefer-clone-deep.js +72 -0
  25. package/lib/rules/prefer-settings-object.js +164 -6
  26. package/lib/rules/semantic-function-prefixes.js +7 -0
  27. package/lib/rules/sync-onwrite-name-func.d.ts +1 -0
  28. package/lib/rules/sync-onwrite-name-func.js +79 -0
  29. 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.5.5",
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",